Re pb boucle FOR NEXT

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

jb

Guest
Bonjour,

Suite à la question posée hier concernant un pb avec la boucle qui se répète indéfiniment, j'apporte plus de précisions !
A partir d'un USF, je saisi 4 valeurs qui vont se placer aux cellules A1, B1, C1 et D1. La valeur qui va se placer dans la cellule D1 peut être 1 ou supérieure (entier). Si est vaut 1, je veux que les données soient inscrites dans A1, B1, C1 et D1. Sinon, si elle est supérieure (ex = 2), je veux que les éléments des cellules A1, B1, C1 et D1 soient répétés à la ligne du dessous (donc A2, B2, C2 et D2). Si elle vaut trois, je fais la même manip mais cette fois sur trois lignes, jusqu'à A3, B3, C3 et D3. Ainsi de suite ...
Les données de mon USF sont rentrées dans la feuille aux cellules dites (A1, B1, C1 et D1) et je crée un compteur qui reprend cette fameuse valeur qui va en D1 et qui va me dire combien de lignes je veux avec les mêmes données. Voici le 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


J'ai bien noté les réponses apportées à la précédente question (surtout sur la mise en forme du code) et j'y apporte les précisions suivantes :

Je déclare deux variables (1 compteur et 1 qui reprend la valeur de D1). Je précise que la variable val est égale à la valeur dans D1 et je veux qu'à partir de 2, ma boucle soit lancée pour reproduire la ligne en question sur la ligne du dessous. Donc, si j'ai D1 = 2, je lance ma boucle 1 fois (pour avoir 2 lignes => A1;B1;C1;D1 et A2;B2;C2;D2) qui m'envoie sur l'instruction Goto dans la partie précédente du programme qui me rentre les valeurs des contrôles de l'USF dans les données =>

Voici le code :

Répétition :
ActiveCell.Range("A65536").End(xlup).Select
ActiveCell.Value = Textbox1.Value
ActiveCell.Offset(0,1).Select
ActiveCell.Value = Textbox2.Value
ActiveCell.Offset(0,1).Select
ActiveCell.Value = Textbox3.Value
ActiveCell.Offset(0,1).Select
ActiveCell.Value = Textbox4.Value

Ainsi, par ce code, je rempli les cellules A1,B1,C1 et D1 (en tout cas pour la 1 ère saisie). Mon problème est que peut importe la valeur de textbox4 (2,3,4,5, etc ...), mes données sont bien reproduites mais indéfiniment (toutes les lignes). Et là, j'avoue que ça me gêne tout de même !

Merci de votre attention et si pouviez m'aider, j'avoue que ça m'enlèverai une belle petite épine du pied.

Merci encore.

JB.
 
V

Valérie

Guest
salut à tous,

Personellement je ne bouclerai pas, une petite idée de code :

Dim LIG As Integer

LIG = Range("A65536").End(xlUp).Row + 1
Range("A" & LIG & ":A" & LIG + Range("D1")) = Textbox1.Value
Range("B" & LIG & ":B" & LIG + Range("D1")) = Textbox2.Value
Range("C" & LIG & ":C" & LIG + Range("D1")) = Textbox3.Value
Range("D" & LIG & ":D" & LIG + Range("D1")) = Textbox4.Value

Tu peux éventuellement tester si D1 est bien en numérique mais je ne sais pas comment arrive D1 donc...

à bientôt et bon week-end à tous
 

Discussions similaires

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko