OVH Cloud OVH Cloud

Une boucle en trop

3 réponses
Avatar
lolo
Salut à toutes et à tous,

En "I9", soit je rentre une valeur representant un nombre de lignes,
soit je laisse vide.
Si je laisse "I9" vide, en cliquant sur un bouton, j'insére une ligne.
Si je rentre une valeur en "I9", je veux insérer autant de lignes que la
valeur. Si "I9" = 5, j'insére 5 lignes, si "I9" = 1, j'insére 1 ligne.


nb = 0
nbl = Range("I9").Value
while nb <= nbl
inserer lignes
nb = nb + 1
wend

Si "I9" est vide, cela fonctionne, mais si "I9" contient une valeur (ex
4), il y automatiquement 1 ligne supplémentaire de rajoutées, ici 5 lignes.
D'ou vient mon erreur et comment faire pour la corriger.

D'avance merci.

3 réponses

Avatar
michdenis
Bonjour Lolo,

Essaie ceci :

Cela va insérer le nombre de lignes entières saisi en I9
'---------------------------
Sub InsérerDesLignes()
Dim Nb As Integer
If IsNumeric(Range("I9")) Then
Nb = Range("I9")
If Nb > 0 Then
Range("I9").Resize(Nb).EntireRow.Insert (xlDown)
End If
End If
End Sub
'---------------------------


Salutations!



"lolo" a écrit dans le message de news: 43629baa$0$6117$
Salut à toutes et à tous,

En "I9", soit je rentre une valeur representant un nombre de lignes,
soit je laisse vide.
Si je laisse "I9" vide, en cliquant sur un bouton, j'insére une ligne.
Si je rentre une valeur en "I9", je veux insérer autant de lignes que la
valeur. Si "I9" = 5, j'insére 5 lignes, si "I9" = 1, j'insére 1 ligne.


nb = 0
nbl = Range("I9").Value
while nb <= nbl
inserer lignes
nb = nb + 1
wend

Si "I9" est vide, cela fonctionne, mais si "I9" contient une valeur (ex
4), il y automatiquement 1 ligne supplémentaire de rajoutées, ici 5 lignes.
D'ou vient mon erreur et comment faire pour la corriger.

D'avance merci.
Avatar
docm
Bonjour lolo

Comme ceci, il y aura au moins une exécution de la commande car le WHILE est
placé après la commande Selection.Insert Shift:=xlDown

nb = 0
nbl = Range("I9").Value
Do 'La suite sera exécutée au moins une fois.
Selection.Insert Shift:=xlDown
nb = nb + 1
Loop While nb < nbl

docm

"lolo" a écrit dans le message news:
43629baa$0$6117$
Salut à toutes et à tous,

En "I9", soit je rentre une valeur representant un nombre de lignes,
soit je laisse vide.
Si je laisse "I9" vide, en cliquant sur un bouton, j'insére une ligne.
Si je rentre une valeur en "I9", je veux insérer autant de lignes que la
valeur. Si "I9" = 5, j'insére 5 lignes, si "I9" = 1, j'insére 1 ligne.


nb = 0
nbl = Range("I9").Value
while nb <= nbl
inserer lignes
nb = nb + 1
wend

Si "I9" est vide, cela fonctionne, mais si "I9" contient une valeur (ex
4), il y automatiquement 1 ligne supplémentaire de rajoutées, ici 5
lignes.

D'ou vient mon erreur et comment faire pour la corriger.

D'avance merci.


Avatar
lolo
Merci à vous deux.

J'ai récupéré la version de docm, qui était la plus facilement
transposable dans mon programme.
Je testerais la version de michdenis ce soir, car je ne veux pas mourrir
idiot et je teste tout ce que l'on m'envoie. La meilleure méthode pour
progresser.
Encore merci.

Salut à toutes et à tous,

En "I9", soit je rentre une valeur representant un nombre de lignes,
soit je laisse vide.
Si je laisse "I9" vide, en cliquant sur un bouton, j'insére une ligne.
Si je rentre une valeur en "I9", je veux insérer autant de lignes que la
valeur. Si "I9" = 5, j'insére 5 lignes, si "I9" = 1, j'insére 1 ligne.


nb = 0
nbl = Range("I9").Value
while nb <= nbl
inserer lignes
nb = nb + 1
wend

Si "I9" est vide, cela fonctionne, mais si "I9" contient une valeur (ex
4), il y automatiquement 1 ligne supplémentaire de rajoutées, ici 5 lignes.
D'ou vient mon erreur et comment faire pour la corriger.

D'avance merci.