[Résolu] [VBA] Boucle for qui déraille

Boucle for qui déraille [Résolu] [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 13-04-2006 à 17:12:35    

Bonjour !
 
Je fais appel a vous car il m'arrive un truc que je n'explique pas. Lors d'une boucle "for" toute simple, ma variable incrémentée fait un bon de 24 pas, sans explications ! Je vous explique ma fonction, suivi du code, et des screenshots de mon api avec des espions qui vont bien pour vous faire constater la chose.
 
Ma fonction est un bouton Quit d'un Userform. Le userform est un editeur simple de listes de choix. Les listes sont ancrées dans une partie du tableau excel, mais cellules cachées. J'ai donc fait des fonctions pour pouvoir rajouter, modifier, supprimer et classer les membres de ces différentes listes.
Pour faire une liste de choix, il faut une formule exacte. Je stocke cette formule dans une case du meme tableau (toujours cachée !). Pour savoir combien de membres peuple ma liste, j'ai donc fait cette fonction :
 
 


 
 Private Sub CommandButton4_Click()
'r1 est un offset, car la ligne 1 de ma liste est la ligne 18 du tableau
r1 = 18
 
'j'initialise i histoire de dire.
i = 0
 
'je fais ma boucle for, car j'ai 6 listes a éditer
For i = 1 To 6
 
'ici, je choisis les données nécéssaires au traitements des listes
Select Case i
Case 1
'colonne de la liste
c1 = 143
'colonne de la formule
c2 = 166
'nom de la colonne de la liste
c3 = "EM"
 
Case 2
c1 = 160
c2 = 174
c3 = "FD"
 
Case 3
c1 = 177
c2 = 182
c3 = "FU"
 
Case 4
c1 = 195
c2 = 190
c3 = "GM"
 
Case 5
c1 = 212
c2 = 198
c3 = "HD"
 
Case 6
c1 = 218
c2 = 206
c3 = "HT"
 
End Select
 
'je fais une boucle Do qui compte le nombre de lignes de ma liste. Dès que la ligne est vide, il casse la boucle et passe a la suite
Do
'j est mon compteur
j = j + 1
'r1 est mon marqueur de ligne, c1 est mon marqueur de colonne
r1 = r1 + 1
Loop While Cells(r1, c1).Value <> ""
 
'les formules sont ancrées sur la ligne 15 (donc rentrées en dur)
Cells(15, c2).Value = "=$" & c3 & "$18:$" & c3 & "$" & j - 1 + 18
 
Next
 
'a la fin du traitement des 6 listes, on ferme le bousin
Me.Hide
End Sub


Le soucis est qu'au premier passage sur "Cells(15, c2).Value = "=$" & c3 & "$18:$" & c3 & "$" & j - 1 + 18", i passe de 1 a 25... Voyez par vous meme...
 
http://img61.imageshack.us/img61/4640/a7zl.gif
http://img142.imageshack.us/img142/1880/b9ty.gif
 
PLZ HELP  :sweat:


Message édité par kennybis le 14-04-2006 à 11:24:33
Reply

Marsh Posté le 13-04-2006 à 17:12:35   

Reply

Marsh Posté le 14-04-2006 à 09:04:29    

personne  :cry:  ?

Reply

Marsh Posté le 14-04-2006 à 09:53:22    

Ta variable i est-elle déclarée globale à ton module de code ?
Est-elle utilisée dans une autre partie de ton code (événement _change par exemple) ?

Reply

Marsh Posté le 14-04-2006 à 11:24:14    

=_=
 
mon Cells(x,y).Value = [...] déclenche l'évènement _change...
 
merci  :jap:


Message édité par kennybis le 14-04-2006 à 11:26:07
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed