relancer une macro avec boucle

  • Initiateur de la discussion Initiateur de la discussion meldja
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 ?
 
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.
 
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.
 
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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Bug sur une macro
Réponses
6
Affichages
296
Réponses
40
Affichages
3 K
Retour