Forum Clubic

Boucle non exécutée

salut

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 :frowning:
par contre, quand je l’exécute directement via VBA (donc en mode création), la boucle est bien exécutée :expressionless:

comment ça se fait :etonne2:

Nyt’

Le code du bouton pointe bien sur le Sub() de ta routine. ?

Variables bien déclarée…?

a+

oui oui, c’est ca le pire, c’est que tout est nikel
j’ai mm reé-afecter la macro au bouton au cas ou

mais rien :@

voila mon code :


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

Qu’est-ce que ca donne si tu mets un point d’arrêt en amont de ta boucle, que tu lances par le bouton et qu’ensuite tu avances pas à pas ?

Edit : vérifie en particulier le nom de la feuille active au moment où tu rentres dans la boucle
Edité le 18/12/2007 à 15:50

heu … rien compris lol

je fais tout ca comment ? :slight_smile:

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.

Defini ta variable lig

en public Lig as integer (en dehors de la routine)

et supprime la ligne Dim lig As Integer

a+
Edité le 18/12/2007 à 18:15

gcc > j’ai pas les aide … lol …

vyger > a quoi ca va me servir de mettre public a la place de dim ??

et … hum … la macro fonctionne nikel maintenant, je sais pas pouquoi … et j’ai le mm probleme avec un autre macro qui fait quasiment la mm chose …

dans la 2eme macro, j’ai deux boucles WHILE mais y’en a que une d’exécutée :@
Edité le 19/12/2007 à 10:06

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

c bon, probleme regler

en faite ca vient du fait que j’ai pas préciser sur quelle feuille la macro devai se faire, donc forcément c’etai jamais la bonne :stuck_out_tongue:

mais maintenant c bon, merci quand mm de votre aide :smiley:

ToW

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