Je n'arrive pas à faire une boucle.
Résolu
ODR47
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
ODR47 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
ODR47 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Débutant en VBA vous voudrez bien excuser mes questions mais sachez que j'ai beaucoup cherché avant de vous consulter mais je suis coincé.
J'ai un fichier Excel de moto qui reprend globalement 8 colonnes :
REFERENCE - TYPE-MARQUE-CYLINDREE-MODELE-ANNEE_DEBUT-ANNEE_FIN-Durée
82RH200598 Moto DAELIM 125 VL 125 DAYSTAR 2003 2014 11
82RH200599 Moto DAELIM 125 VS 125 SOLUTION 2001 2007 6
La colonne Durée est le nombre d'année pendant lequel le véhicule a été en circulation.
Je souhaite entre chaque ligne copier la ligne d'origine autant de fois que d'années (dans l'exemple 1 : 11 lignes, dans l'exemple 2 : 6 lignes etc)
J'ai trouvé cette macro qui fonctionne très bien :
Sub Insertion()
With Selection
For i = 1 To Range("h2")
.Columns("A:h").Copy
.Columns("A:h").Insert xlShiftDown
Application.CutCopyMode = False
.Cells(1, 1).Select
Next i
End With
End Sub
Mais je n'arrive pas à faire une boucle pour que cela passe à la ligne 2 puis 3 etc.
Ce fichier comporte environ 2300 lignes.
J'ai essayé avec IF en rajoutant un index (1) en colonne 9 et en ne recopiant que les 8 premières en dessous mais ça ne marche pas.
Si quelqu'un peut m'aider ce serait vraiment sympa.
Merci d'avance
Débutant en VBA vous voudrez bien excuser mes questions mais sachez que j'ai beaucoup cherché avant de vous consulter mais je suis coincé.
J'ai un fichier Excel de moto qui reprend globalement 8 colonnes :
REFERENCE - TYPE-MARQUE-CYLINDREE-MODELE-ANNEE_DEBUT-ANNEE_FIN-Durée
82RH200598 Moto DAELIM 125 VL 125 DAYSTAR 2003 2014 11
82RH200599 Moto DAELIM 125 VS 125 SOLUTION 2001 2007 6
La colonne Durée est le nombre d'année pendant lequel le véhicule a été en circulation.
Je souhaite entre chaque ligne copier la ligne d'origine autant de fois que d'années (dans l'exemple 1 : 11 lignes, dans l'exemple 2 : 6 lignes etc)
J'ai trouvé cette macro qui fonctionne très bien :
Sub Insertion()
With Selection
For i = 1 To Range("h2")
.Columns("A:h").Copy
.Columns("A:h").Insert xlShiftDown
Application.CutCopyMode = False
.Cells(1, 1).Select
Next i
End With
End Sub
Mais je n'arrive pas à faire une boucle pour que cela passe à la ligne 2 puis 3 etc.
Ce fichier comporte environ 2300 lignes.
J'ai essayé avec IF en rajoutant un index (1) en colonne 9 et en ne recopiant que les 8 premières en dessous mais ça ne marche pas.
Si quelqu'un peut m'aider ce serait vraiment sympa.
Merci d'avance
A voir également:
- Je n'arrive pas à faire une boucle.
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Problème xiaomi redmi note 8t s'allume et s'éteint vibre - Forum Xiaomi
2 réponses
Bonjour,
essaie avec ça :
eric
essaie avec ça :
Sub dupliq() Const nbcol As Long = 8 Dim datas, result, lig As Long, lig2 As Long, nblig As Long, i As Long, col As Long datas = [A1].Resize(Cells(Rows.Count, 1).End(xlUp).Row, nbcol) lig2 = 2 Application.ScreenUpdating = False For lig = 2 To UBound(datas) nblig = datas(lig, 8) ReDim result(1 To datas(lig, 8), 1 To nbcol) For i = 1 To nblig For col = 1 To nbcol result(i, col) = datas(lig, col) Next col Next i Cells(lig2, 1).Resize(UBound(result, 1), UBound(result, 2)) = result lig2 = lig2 + nblig Next lig End Sub
eric
Un immense merci cela fonctionne parfaitement je vais la tester demain sur mon gros fichier et essayer de bien l'assimiler et la comprendre.
Cependant une fois la macro lancée j'ai le message suivant :
"Erreur d'exécution 9 : l'index n'appartient pas à la sélection"
Dois je le passer en "résolu".
N'étant pas super habitué des forums désolé si j'ai omis quelque chose ou n'ai pas été correct.
Merci de ton aide précieuse, c'est là que l'on se rend compte de sa marge de progression.
Olivier
Pas sur mon classeur de test : https://www.cjoint.com/c/FFgvhwviJhK
C'est bien un numérique en H ? (aligné à droite, pas à gauche comme un texte)
PS : c'est peut-être fait exprès, pour 2003-2014 tu notes 11 mais ça fait 12 années.
Désolé de ce silence mais j'ai pas mal bossé sur le fichier hier et n'y arrive toujours pas.
Le fichier fait en fait +7000 lignes. J'ai vérifié le format numérique à droite et rajouté 1 pour avoir le bon nombre d'années mais rien n'y fait.
Je joins un extrait du fichier http://www.cjoint.com/c/FFihRMEum2K dans lequel j'ai collé la macro.
D'avance merci pour votre aide.
regarde les lignes 1617 et 5432
eric
Il faut vraiment tout regarder, je ferai plus attention la prochaine fois.
J'ai corrigé les 2 lignes et la macro passe parfaitement.
Un grand merci je vais pouvoir terminer.
Bien cordialement
Olivier