Pb boucle For Next

  • Initiateur de la discussion jb
  • Date de début
J

jb

Guest
Bonsoir à tous,

J'ai un pb sur une boucle "For Next"qui se répète indéfiniment. Voilà, j'écrit des données dans les cellules A1, B1, C1 et D1. Si la valeur de la cellule D1 est 1 (valeur par défaut), la ligne est unique, par contre, si elle est supérieure à 1 (exemple = 2), je veux que la ligne soit répétée une deuxième fois, c-a-d les mêmes données mais dans les cellules A2, B2, C2 et D2. Je voudrais que ce programme fonctionne pour n'importe quel valeur souhaitée (allez, de 1 à 10).
Mo pb, c'est que mon code me répète bien les données mais n'a pas l'air de tenir compte de la valeur de la cellule D1. ar exemple, si je met 2, il répète indéfiniment mes lignes (gros bogue !!!).

Voici mon code :

If Range("D1").Value > 1 Then
Dim val As Integer
Dim compteur As Integer
val = Range("D1").Value.Value
For compteur = 2 To val Step 1
GoTo Répétition
Next
Else
End If

End Sub

Quelqu'un pourrait-il m'aider à trouver mon erreur => pourquoi est-ce que ma boucle ne s'arrête pas à la valeur souhaitée.
Attention, dans le code, l'instruction se réfère à GOto car j'ai du code assez long devant.

Merci bien et très bonne soirée à tous.

JB.
 
V

Vériland

Guest
Bonsoir Jb et le forum,

Bon à première vue il faudrait déjà écrire la macro sous cette forme...le Dim en tête...en non après une condition...dans val il y à un .value en trop dans le range...pour l'instant je ne vais pas plus loin il nous faudrait davantage de renseignements sur l'ensemble de ta macro...savoir par exemple ou l'on va avec Répétition...tiens à ce sujet on peut éviter les caractères accentués type "é"...Excel n'en à pas besoin dans une macro...mais ce n'est pas spécialement un problème pour ta boucle...lol

Dim val As Integer
Dim compteur As Integer
If Range("D1").Value > 1 Then
val = Range("D1").Value
For compteur = 2 To val Step 1
GoTo Repetition
Next
Else
End If


A+ Vériland
 
C

chris

Guest
Bonjour,
Le VBA permet de réaliser des boucles propres et d'éviter le GOTO de nos grand-pères (lol) qui risque de ne pas renvoyer la main.
Fais plutôt une fonction séparée pour ce qui doit être fait une ou n fois.
Le problème est sans doute dans le code correspondant à repetition.
CHris
 

Statistiques des forums

Discussions
312 088
Messages
2 085 201
Membres
102 816
dernier inscrit
bolivier