fbpx
Cliquez ici pour découvrir les 7 étapes pour créer
des tableaux croisés dynamiques comme un pro sur Excel

Tutoriel réalisé avec Excel 2016

Dans ce tutoriel, je vais vous expliquer comment ajouter un bouton de suppression au formulaire de saisie personnalisé que nous avons déjà créé sur Excel en langage VBA.

Dans l’Espace Membres, vous retrouverez le formulaire utilisé qui fait suite au tutoriel Créer un formulaire personnalisé pour saisir des données sur Excel ainsi qu’à son explication.

 

Création et programmation du bouton de suppression en VBA :

Ouvrez le fichier Excel et rendez-vous dans la fenêtre de Visual Basic (si vous ne savez pas comment faire, suivez le tout premier article). Dans l’Explorateur de projets, au niveau des Feuilles, faites un clic droit sur l’UserForm1 > Afficher l’objet. Par simplicité, je sélectionne un des boutons déjà présents et fais un copier-coller (Ctrl + C et Ctrl +V), mais sinon vous pouvez tout à fait créer un bouton via la Boîte à outils comme fait dans le précédent article. Placez-le où vous le souhaitez, renommez-le si vous le désirez dans la fenêtre des Propriétés à la ligne Name et modifiez la ligne Caption en saisissant Supprimer (ou autre chose à votre convenance).

Double-cliquez ensuite sur ce nouveau bouton, ce qui vous amène directement à la fenêtre de Code au niveau de la procédure :
Private Sub CommandButton4_Click()
End Sub

Là où se trouve votre curseur, saisissez le code suivant :
Rows([A2:A65536].Find(ComboBox1.Value).Row).EntireRow.Delete

Cette ligne demande à Excel de rechercher la valeur saisie dans la ComboBox1 de la cellule A2 à A65536, de la sélectionner entièrement et de la supprimer. Depuis Excel 2007, le nombre maximum de lignes est passé de 65 536 à 1 048 576. Si vous êtes sûr que votre fichier ne sera jamais utilisé par une version 2003 ou antérieure, saisissez A1048576 sinon laissez tel quel. Il est très important que votre colonne de référence contienne des valeurs uniques, comme c’est le cas ici avec un numéro client, afin de s’assurer que c’est la bonne ligne qui sera supprimée. Vous pouvez tester votre bouton, il est opérationnel, mais nous allons continuer pour le peaufiner.

 

Rafraîchissement de la liste déroulante après suppression d’une ligne :

En supprimant certains contacts, vous vous apercevrez que la liste déroulante ne se met pas à jour, ce qui est embêtant, car si vous sélectionnez un autre contact, puis revenez au numéro supprimé, ce sera le suivant qui sera affiché à moins de fermer et de rouvrir le formulaire. Pour remédier à cela, on va simplement copier-coller le code que j’avais donné lors du tutoriel d’explication afin de mettre à jour la liste après ajout. Ce code doit se trouver dans la même procédure, mais à la suite de la ligne saisie précédemment puisque l’on supprime la ligne PUIS on met à jour la liste :
Dim J As Long
ComboBox1.Clear
Set Ws = Sheets("Clients") ‘Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With

Une autre possibilité est de rafraîchir le formulaire entier. Dans ce cas, vous pouvez utiliser le code que j’ai donné dans le tutoriel Comment vider (effacer) un userform après validation sur Excel en remplaçant le code précédent par :
Unload Me
UserForm1.Show
(UserForm1 correspond au nom donné à l’userform dans l’Explorateur de projets donc adaptez-le si besoin)

Cela vous permettra de vider également les autres champs.

C’est également possible par la première méthode, mais il faut vider chaque champ par des
TextBox = "" et ComboBox = Clear (puis les recharger si nécessaire) pour chaque élément qui compose votre formulaire.

Désormais, nous avons bien un bouton de suppression et une mise à jour de la liste. Toutefois, un clic maladroit sur ce bouton est vite arrivé, nous allons donc terminer par rajouter un message de confirmation.

 

Ajout du message de confirmation de suppression en VBA :

Ici aussi, nous allons nous servir d’un code utilisé précédemment, à savoir celui de la ligne If du bouton Nouveau contact. Sélectionnez donc cette ligne et copiez-la juste avant la ligne de suppression, en début de procédure, car il faut savoir si l’on confirme la suppression AVANT d’exécuter le code, puis modifiez les éléments en conséquence, ce qui vous donnera :

If MsgBox("Confirmez-vous la suppression de ce contact ?", vbYesNo, "Demande de confirmation de suppression") = vbYes Then

N’oubliez pas d’ajouter End if juste avant End Sub auquel cas vous aurez une erreur au lancement de la procédure.

Voici le code complet de ce bouton de suppression où j’ai juste indenté le code pour une meilleure compréhension et déplacé la déclaration de variable (Dim…) en début de procédure pour la première méthode de rafraîchissement de la liste :

Private Sub CommandButton4_Click()
Dim J As Long
If MsgBox("Confirmez-vous la suppression de ce contact ?", vbYesNo, "Demande de confirmation de suppression") = vbYes Then
Rows([A2:A65536].Find(ComboBox1.Value).Row).EntireRow.Delete
ComboBox1.Clear
Set Ws = Sheets("Clients") ‘Correspond au nom de votre onglet dans le fichier Excel
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
End If
End Sub

OU

Private Sub CommandButton4_Click()
If MsgBox("Confirmez-vous la suppression de ce contact ?", vbYesNo, "Demande de confirmation de suppression") = vbYes Then
Rows([A2:A65536].Find(ComboBox1.Value).Row).EntireRow.Delete
Unload Me
UserForm1.Show
End If
End Sub

 

Téléchargez « Créer un bouton de suppression dans un formulaire Excel en VBA » au format PDF

Je vous propose un fichier annexe dans l’Espace Membres contenant le fichier utilisé dans ce tutoriel.

Cliquez ici pour découvrir les 7 étapes pour créer
des tableaux croisés dynamiques comme un pro sur Excel

Cliquez ici pour découvrir comment créer des listes déroulantes
en cascade dans un formulaire Excel