relancer une macro avec boucle

meldja

XLDnaute Impliqué
Bonjour,
J'ai une macro qui insère une ligne sur une plage de 7000 lignes en fonction d'un critère.
Pour se faire J'ai créé une boucle :
For i = 2 to Range("C50000").End(xlUp).row

en fonction d'une condition :
If Range("C" & i) > 1 Then
Row(i & ";" & i).insert

Pour l'instant ça marche avec un inputbox ou il faut renseigner le critère 1, 2, 3.. jusqu'à 200. Mais j'aimerais ne pas à avoir à relancer la macro 200 fois en saisissant les valeurs du critère dans l'inputbox

En fait il faut la relancer 200 fois en incrémentant le critère >1 puis >2 jusqu'à supérieur à 200
J'ai inséré les valeurs de 1 à 200 dans une autre feuille en essayant de faire boucler le critère sur la feuille ou j'ai les 200 valeurs mais je n'y arrive pas.
Est-ce que quelqu'un a une idée ?
 

frangy

XLDnaute Occasionnel
Bonjour,

Une proposition à tester
VB:
Sub Test()
Dim i As Long, n As Long
    For i = Range("C" & Rows.Count).End(xlUp).Row To 2 Step -1
        n = Range("C" & i).Value
        If n > 1 Then
            Rows(i).Resize(n - 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        End If
    Next i
End Sub
Cordialement.
 

frangy

XLDnaute Occasionnel
Tu n'obtiendras pas de réponse satisfaisante si tu n'apportes pas plus de précisions.
Essaie de joindre un fichier pour exemple avec ta macro et quelques explications complémentaires sur le résultat attendu (pas de données confidentielles bien sûr).
Cordialement.
 

meldja

XLDnaute Impliqué
Bonjour,
Merci pour votre réponse.
J'ai joint un fichier comme vous le proposez. Dans la première feuille, en colonne C j'ai une série de plusieurs milliers de nombres qui ont une valeur de 1 à 201.
Je dois insérer une ligne si le nombre est égal à 2, deux lignes si le nombre est égal à 3, trois lignes si le nombre est égal à 4, ainsi de suite.
J'utilise la condition "supérieur à" car si j'exécute la macro avec le critère supérieur à 1, tous les nombres à partir de 2 auront une ligne vide au dessus.
si j'exécute la macro une deuxième fois avec le critère supérieur à 2 tous les nombres à partir de 3 auront 2 lignes au dessus, si j'exécute une troisième fois avec le critère supérieur à 3, tous les nombres à partir de 4 auront 3 lignes au dessus, etc..
Je ne sais pas si je suis suffisamment clair. Le moyen que j'ai trouvé c'est de lancer un inputbox pour renseigner le critère mais je dois le faire 201 fois (ça à changer depuis le début du post).
Je m'étais dis qu'en saisissant les 201 valeurs en feuille 2 et en bouclant dessus, ça m'éviterais de relancer manuellement la macro, mais je n'y arrive pas.
Cordialement
 

Pièces jointes

  • Occurence2.zip
    30.1 KB · Affichages: 8

frangy

XLDnaute Occasionnel
La macro que je t'ai envoyé réalise exactement ce que tu indiques.
Si la valeur de la cellule de la colonne C est égale à 2, on insère 1 ligne,
Si la valeur de la cellule de la colonne C est égale à 3, on insère 2 lignes,
...
Si la valeur de la cellule de la colonne C est égale à 201, on insère 200 lignes,

Tu n'as donc pas à exécuter la procédure 201 fois.
Il y a sûrement encore quelque chose qui m'échappe !
Cordialement.
 

Pièces jointes

  • Occurence2.xlsm
    57.7 KB · Affichages: 9

Discussions similaires