Copier une liste dans une autre page

Résolu
Signaler
Messages postés
2
Date d'inscription
mercredi 7 février 2007
Statut
Membre
Dernière intervention
14 janvier 2009
-
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
-
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

'initialise  la lettre recherchée

Sheets("Accueil").Select
lettre = Range("B4").Value

'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
         
    Else
        i = i + 1

   End If
Next j
Next i

end sub

3 réponses

Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
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
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
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
Messages postés
2
Date d'inscription
mercredi 7 février 2007
Statut
Membre
Dernière intervention
14 janvier 2009

Merci pour la réponse, mais je fais un blocage, je ne vois pas ce que je dois modifier pour que cela fonctionne...