j’ai un bouton qui me permet d’exécuté une macro, le probleme c’est que le bouton n’exécute pas une boucle WHILE qu’il y a dans mon code
par contre, quand je l’exécute directement via VBA (donc en mode création), la boucle est bien exécutée
Sub add_Int()
Dim lig As Integer
lig = 18
Do
lig = lig + 1
MsgBox (lig)
Loop Until Cells(lig, 2) = ""
MsgBox (lig)
Sheets("List1").Select
Rows("" & lig).Select
Selection.Insert Shift:=xlDown
Sheets("Qualité de Service").Select
Range("B24").Select
Selection.Copy
Sheets("List1").Select
Range("B" & lig).Select
ActiveSheet.Paste
Sheets("Qualité de Service").Select
Range("B25").Select
' Call List_Int
'
' MsgBox ("Option ajoutée")
End Sub
Si tu ne connais les méthodes de deboggage, il faut que tu commences par prendre le temps de les faire fonctionner sur un programme simple.
Regarde dans l’aide de Visual Basic le chapitre “Visual Basic - Rubriques Comment procéder”, en particulier tout ce qui concerne les points d’arrêt et l’utilisation de la fenêtre d’exécution.
Ensuite, tu reviens à ton programme VBA, et tu places un point d’arrêt sur ta première ligne (lig = 18).
Puis tu retournes dans excel et tu lances la macro par le bouton.
Ton programme va commencer à s’exécuter, mais s’arrêter sur le point d’arrêt (attention : la ligne en question n’est pas encore exécutée).
Ensuite, tu avances ligne par ligne ; tu peux voir la valeur des variables soit en les surlignant avec la souris, soit en les affichant dans la fenêtre d’exécution, soit en les déclarant dans la fenêtre Espions.
Dans la fenêtre d’exécution, tu peux aussi générer des lignes de code temporaire (ex : lig=12), ou lancer des interrogations
(ex : ? ActiveSheet.Name).
Normalement, avec cette méthode, tu vas voir tout de suite pourquoi ta boucle ne s’exécute pas.
bon en faite je viens de m’apercevoir que la macro execute bien les 2 boucles mais c’est comme si la premiere etait mal exécutée
Dim lig As Integer
lig = 1
While Cells(lig, 2) = ""
lig = lig + 1
Wend
MsgBox (lig)
While Cells(lig, 2) <> ""
lig = lig + 1
Wend
MsgBox (lig)
le premier MsgBox(lig) affiche 5, hors, la ligne 5 est vide donc egale a “” … donc d’apres ce que je vois le premier WHILE est mal exécuté car normalement, en langage algorithmique ca donne ca :
Tant que Cells(lig,2) = “” (vide donc) faire
lig=lig+1 (incrementation de lig)
Fin tant que
donc le MsgBox devrai m’afficher 6 nan ?
mise a jour :
la deuxieme boucle n’est tjs pas exécuté … ><
j’ai fait en sorte que le lig de debut s’arrete sur la ligne 6 (qui n’est pas vide) et le 2eme WHILE ne fait rien, le dernier msgbox affiche 6 quand meme
Edité le 19/12/2007 à 10:37
Ca correspond bien à ce que je disais dans l’Edit de mon premier message ; d’où l’intérêt de travailler en mode pas à pas et avec la fenêtre d’exécution.
Tu veux dire quoi, là ?
Quand tu cliques sur le point d’interrogation dans la barre menu, puis sur “Aide Microsoft Visual Basic”, tu as un message d’erreur ?
Edit : essaie aussi d’appuyer sur F1 voir si tu accèdes à l’aide
Edité le 20/12/2007 à 09:41