Quelle formule/code VBA pour copier ligne dans autre onglet?

Résolu
Laure -  
 Laure -

Bonjour,

Comme d'hab, je sèche... 

Sur Excel 2016, j'ai 3 onglets qui sont :

1. Base

2. GZB+C

3. FRA

Dans la colonne A de mon onglet base, j'ai le code de l'entreprise (GZB, GZC ou FRA) et j'aimerais que toutes les lignes qui contiennent GZB dans cette colonne A se copient dans l'onglet "GZB+C". Idem pour GZC et enfin idem pour FRA mais dans l'onglet FRA. 

Merci pour votre aide :-)

a+
Windows / Chrome 106.0.0.0

4 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     

    Bonjour Laure

    Voilà un code VBA :

    Sub reports()
    
    x = 0
    y = 0
    ligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
    
    For n = 1 To ligne
     Sheets("Base").Select
      Sheets("Base").Rows(n & ":" & n).Select
        Selection.Copy
    If Left(Sheets("Base").Range("A" & n), 1) = "G" Then x = x + 1: Sheets("GZB+C").Select: Rows(x & ":" & x).Select: Sheets("GZB+C").Paste
     If Sheets("Base").Range("A" & n) = "FRA" Then y = y + 1:   Sheets("FRA").Select:   Rows(y & ":" & y).Select: Sheets("FRA").Paste
    
    Next
    End Sub

    Cdlmnt

    Via


    0
    1. Laure
       

      Bonjour Via,

      Un grand merci, suis encore plus une pive en vba qu'en excel, du coup, ça ne marche pas... Mais merci d'avoir pris le temps :-) Belle journée.

      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     

    Bonjour a vous deux,

    du coup, ça ne marche pas...

    Pouvez expliquer un peu plus: ou avez vous mis le code et comment l'avez vous lance?

    0
  3. Laure
     

    Bonjour F894009,

    Effectivement, je persistais à vouloir mettre le code en faisant un clique gauche sur la feuille "BASE" et à sélectionner la feuille "BASE" dans le menu VBA. Je viens donc de comprendre qu'il faut passer par l'onglet "Développeur" dans le ruban :-) Le résultat est donc là, Merci beaucoup. 

    Il y a juste un truc qui coince... c'est l'emplacement des lignes.... pourquoi ça démarre en ligne 1 sur certaine feuille et en 60 pour d'autres ? Merci :-)

    0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     

    Re,

    Je n'ai pas teste le code de via55, mais a priori ca roule. Les pointeurs  de ligne sont a zero au debut

    une autre facon de faire:

    Sub reports()
        On Error GoTo fin
        x = 0
        y = 0
        Application.ScreenUpdating = False      'fige ecran
        'feuille Base
        With Worksheets("Base")
            ligne = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row  'derniere cellule non vide colonne A
            'boucle sur colonne A
            For n = 1 To ligne
                If Left(.Range("A" & n), 1) = "G" Then  ' cellule avec GZB ou GZC
                    x = x + 1   'pointeur de ligne pour feuille GZB+C
                    .Rows(n & ":" & n).Copy Sheets("GZB+C").Range("A" & x)  'ecriture ligne
                 ElseIf .Range("A" & n) = "FRA" Then    ' cellule avec FRA
                    y = y + 1   'pointeur de ligne pour feuille FRA
                    .Rows(n & ":" & n).Copy Sheets("FRA").Range("A" & y)    ' ecriture ligne
                Else
                End If
            Next n
        End With
    fin:
        If Err.Number <> 0 Then
            MsgBox "Attention: erreur " & Err.Number & vbNewLine & Err.Description
         End If
        Application.ScreenUpdating = True
        On Error GoTo 0
    End Sub
    
    0
    1. Laure
       

      Trop génial, ça marche ! :-) Merci beaucoup pour votre précieuse aide à tous les 2. Belle journée.

      0