Bonjour,
Mon objectif, faire une macro qui supprime la ligne qu'un utilisateur à choisir au préalable.
Dans ma feuille Excel, j'ai un CommandButton:
Le userform ChoixLigne contient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Private Sub CommandButton3_Click() Dim Y As Integer Do ChoixLigne.Show Y = Range("I1").Value 'Récupère le n° de ligne response = MsgBox("Voulez vous supprimer la ligne n°" & Y & "?", vbQuestion + vbYesNoCancel, "Suppression de constat") If response = vbYes Then 'Si Yes, sélectionner la ligne, la supprimer et quitter la procédure Rows(Y & ":" & Y).Select Selection.Delete Shift:=xlUp Exit Sub ElseIf response = vbCancel Then 'Si Cancel, quitter la procédure Exit Sub ElseIf response = vbNo Then 'Si No, boucler et réouvrir le userform demandant la ligne End If Loop End Sub
Un point important, c'est que l'utilisateur a la possibilité de supprimer les lignes 0 à 2000. Aussi, il doit pouvoir naviguer de haut en bas dans la feuille pour visualiser la ligne qu'il veut supprimer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub CommandButton1_Click() 'Bouton OK Range("I1").Clear Range("I1").Value = TextBox1 'Le userform demande de saisir le numéro de la ligne dans la TextBox1 'la Cellule I1 prend la valeur Unload Me End Sub
Au départ, j'avais codé tout simplement une inputbox pour que l'utilisateur puisse rentrer le numéro de ligne. Mais je me suis rendu compte qu'il n'y avait pas possibilité de se balader dans la feuille Excel.
J'ai alors tout de suite penser à un userform avec ShowModal=False
Mon problème est maintenant le suivant.
La procédure fonctionne correctement avec ShowModal=True
Mais du moment ou je mets ShowModal=False, à l'éxécution de la procédure, il ouvre mon userform ChoixLigne et par dessus ma MsgBox.
Il ne semble donc pas attendre que je clique sur CommandButton1_Click() et passe à la ligne 5 de suite.
Je ne comprends pas le problème. Peut être que c'est tout simple mais mon noobisme en VBA me bloque.
Merci d'avance à ceux qui seront m'apporter de l'aide.
Partager