Copier une liste dans une autre page

Résolu
audy090480 Messages postés 2 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 14 janvier 2009 - 14 janv. 2009 à 11:47
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Derniè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

'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

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
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
3
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
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
0
audy090480 Messages postés 2 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 14 janvier 2009
14 janv. 2009 à 15:27
Merci pour la réponse, mais je fais un blocage, je ne vois pas ce que je dois modifier pour que cela fonctionne...
0