Vba excel: boucle for qui ne boucle pas
Fermé
jean guy
-
3 févr. 2010 à 10:32
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 3 févr. 2010 à 14:15
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 3 févr. 2010 à 14:15
A voir également:
- Vba excel: boucle for qui ne boucle pas
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Excel compter cellule couleur sans vba - Guide
2 réponses
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
3 févr. 2010 à 11:19
3 févr. 2010 à 11:19
Bonjour,
premieres reamarques :
- Set plage = Range("A65536") => tu ne sélectionne qu'une seule cellule dans ta plage, du coup ta boucle For Each cellule in plage ne s'execute qu'un seule fois....
- m = Range("A1").End(xlUp).Row + 2 => sera toujours égal à 3, Range("A1").end(xlup) renvioyant forcement 1 (tu cherches à remonter vers les haut -xlup- depuis la cellule 1)
- meme remarque que précédemment pour n = Range("A1").End(xlUp).Row / j = n + 2
- i = i + 1 => i n'est pas utilisé dans ton code.....
sui j'ai bien compris, tu recuperes la valeur de cellule en A toutes les 51 lignes dans le fichier source et tu la mets ds ton fichier cible en colonne A également ? A quelle ligne doit-on commencer dans le fichier source (3?) ? le fichier cible contient-il déjà des lignes ? Il faudrait aussi faire attention à la feuille sur laquelle tu travailles si il y en a plusieurs dans le classeur...
premieres reamarques :
- Set plage = Range("A65536") => tu ne sélectionne qu'une seule cellule dans ta plage, du coup ta boucle For Each cellule in plage ne s'execute qu'un seule fois....
- m = Range("A1").End(xlUp).Row + 2 => sera toujours égal à 3, Range("A1").end(xlup) renvioyant forcement 1 (tu cherches à remonter vers les haut -xlup- depuis la cellule 1)
- meme remarque que précédemment pour n = Range("A1").End(xlUp).Row / j = n + 2
- i = i + 1 => i n'est pas utilisé dans ton code.....
sui j'ai bien compris, tu recuperes la valeur de cellule en A toutes les 51 lignes dans le fichier source et tu la mets ds ton fichier cible en colonne A également ? A quelle ligne doit-on commencer dans le fichier source (3?) ? le fichier cible contient-il déjà des lignes ? Il faudrait aussi faire attention à la feuille sur laquelle tu travailles si il y en a plusieurs dans le classeur...
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
3 févr. 2010 à 14:15
3 févr. 2010 à 14:15
Bonjour,
une approche un peu plus simple !!
J'ai pas tester et il est possible qu'il faudra scinder la ligne
par..
A+
une approche un peu plus simple !!
Sub CopierLigne() Dim Source As Worksheet Dim Copie As Worksheet Dim Lig As Long, LigStep As Long 'initialiser la feuille source Set Source = Workbooks("LeNomClasseur").Sheets("NomDeLaFeuille") 'initialiser la feuille copie Set Copie = Workbooks("LeNomClasseur").Sheets("NomDeLaFeuille") Lig = 3 For LigStep = 3 To Source.Range("A65536").End(xlUp).Row Step 51 Source.Rows(LigStep).Copy Copie.Rows(Lig) Lig = Lig + 1 Next LigStep End Sub
J'ai pas tester et il est possible qu'il faudra scinder la ligne
Source.Rows(LigStep).Copy Copie.Rows(Lig)
par..
Source.Rows(LigStep).Copy Copie.Rows(Lig).paste
A+