audy090480
Messages postés2Date d'inscriptionmercredi 7 février 2007StatutMembreDernière intervention14 janvier 2009
-
14 janv. 2009 à 11:47
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 2012
-
14 janv. 2009 à 15:35
J'ai un soucis, j'ai une liste dans une page d'un classeur excel et je souhaite copier une partie de cette liste sur une autre feuille de ce même classeur.
Je recherche les lignes que je souhaite ajouter et tente de les copier une à une dans la nouvelle feuille.
Mais, la macro ne copie que la dernière ligne trouvée... il doit y avoir une erreur dans les next, for &co, mais je ne trouve pas.
Merci de votre aide
Sub Macro3()
Dim i As Integer
Dim j As Integer
Dim lettre As String
'masque le deroulement de la macro
Application.ScreenUpdating = False
'boucle recopie les lignes commencant par la bonne lettre
'i est la ligne de la page contenant la liste
'j est la ligne de la page de destination
For i = 3 To 30
For j = 3 To 30
Sheets("Liste").Select
If Range("A" & i).Value = lettre Then
Rows(i & ":" & i).Copy
Sheets("Alpha").Select
Rows(j & ":" & j).Select
ActiveSheet.Paste
Range("O" & j).Value = i & "-" & j
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 14 janv. 2009 à 15:35
réécrit comme ça cela devrait déja aller un peu mieux !
j =3
For i = 3 To 30
Sheets("Liste").Select
If Range("A" & i).Value = lettre Then
Rows(i & ":" & i).Copy
Sheets("Alpha").Select
Rows(j & ":" & j).Select
ActiveSheet.Paste
Range("O" & j).Value = i & "-" & j
j = j +1
End If
Next i
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 14 janv. 2009 à 14:09
bonjour
avec une indentation correcte du code tu devrais voir immédiatement ton erreur
For i = 3 To 30
For j = 3 To 30
Sheets("Liste").Select
If Range("A" & i).Value = lettre Then
Rows(i & ":" & i).Copy
Sheets("Alpha").Select
Rows(j & ":" & j).Select
ActiveSheet.Paste
Range("O" & j).Value = i & "-" & j
Else
i = i + 1
End If
Next j
Next i
il est ainsi évident que tu fais pour chaque valeur de "I" 30 boucles de "J " sans aucune condition
donc à chaque boucle de"I" tu écrases ce que tu avait fait au tour précédent
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE