Tutoriel réalisé avec Excel 2013
Dans mon tutoriel sur la création d’un formulaire personnalisé pour saisir des données sur Excel, je n’avais pas indiqué comment vider, ou effacer, le formulaire une fois que les données saisies avaient été envoyées dans le fichier Excel. C’est donc ce que nous allons découvrir dans ce tutoriel.
Pour commencer, ouvrez votre fichier Excel contenant votre formulaire et ouvrez Visual Basic en allant dans l’onglet Développeur (la manipulation pour afficher cet onglet est indiquée dans le tutoriel de base). Cliquez droit sur votre UserForm dans la fenêtre Projet > Feuilles et choisissez Code.
Le petit bout de code à saisir est celui-ci :
Unload Me
UserForm.Show
UserForm est le nom du formulaire. Si le nom de votre formulaire est UserForm1, ajoutez un 1.
Ce code indique à Excel de fermer le formulaire, puis de le rouvrir (par défaut, vide).
Étant donné que je souhaite qu’il soit vidé à la fois après le clic sur Nouveau contact et après le clic sur Modifier, c’est dans les instructions de ces deux boutons que je vais insérer ce code.
SOMMAIRE
Pour le bouton Nouveau contact
Saisissez le code avant End Sub de Private Sub CommandButton1_Click() (juste après End If) :
End If
Unload Me
UserForm.Show
End Sub
Pour le bouton Modifier
Placez-le exactement au même endroit pour l’instruction Private Sub CommandButton2_Click() :
End If
Unload Me
UserForm.Show
End Sub
Appuyez sur F5 et testez votre formulaire en utilisant l’un des 2 boutons.
Vous constaterez que le formulaire se ferme une fraction de seconde avant de se rouvrir vide.
Merci pour l’astuce.
Cela m’a fait gagner beaucoup de temps.
Gino
Bonjour, merci beaucoup pour vos tutoriels sur la création de formulaire par VBA. Ne connaissant pas VBA, je suis arrivé à créer un fichier avec formulaire similaire au vôtre. Par contre, je souhaiterais supprimer des lignes par le formulaire en rajoutant un bouton « supprimer la ligne ». Pouvez-vous m’aider ?
Merci d’avance.
Bonjour Christophe,
Voici un bout de code à adapter :
Sheets("Clients").Cells(Listetech.ListIndex + 2, 1).ClearContents
Merci infiniment.
Pour le bouton « SUPPRIMER », j’ai copié le code que vous m’avez indiqué en le modifiant légèrement afin que le formulaire prenne en compte la suppression ou la modification immédiatement.
Qu’en pensez-vous ?
Private Sub CommandButton3_Click()
With Me.ComboBox1
If MsgBox("Confirmez-vous la suppression de ce membre ?", vbYesNo, "Demande de confirmation de suppression") = vbYes Then
Rows(["A" & Rows.Count].Find(ComboBox1.Value).Row).EntireRow.Delete
Ligne = Me.ComboBox1.ListIndex + 2
ComboBox1 = Ws.Cells(Ligne, "A")
For I = 1 To 16
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
Next I
End If
End With
End Sub
Je ne sais pas. Ça fonctionne ?
Oui, très bien.
Donc c’est le principal 🙂
Bonjour,
Est-il possible de n’appliquer cette fonction qu’à certains champs d’un formulaire (et non à son ensemble) ?
Merci par avance.
Bonjour,
Dans ce cas, il ne faut pas décharger le formulaire, mais simplement utiliser ce genre de syntaxe :
Textbox1 = ""
Bonjour,
Je viens de faire un formulaire de saisie, tout fonctionne très bien, mais le seul problème quand j’ai les données qui se mettent sur une autre feuille et que je veux utiliser un tableau croisé dynamique, les champs que je n’ai pas renseignés, je n’arrive pas à voir un champ vide, mais un 1.
Pouvez-vous me dire si vous avez une solution à donner ?
Merci d’avance.
Bonjour,
Il faudrait voir dans les options du TCD s’il n’y a pas le chiffre 1 à la place des valeurs vides. Mais, en tout cas, si les valeurs sont bien reportées du formulaire à la feuille, le problème ne vient pas du formulaire.