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

Résolu/Fermé
Laure - Modifié le 10 oct. 2022 à 17:15
 Laure - 11 oct. 2022 à 11:07

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

A voir également:

4 réponses

via55 Messages postés 14485 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 9 octobre 2024 2 731
10 oct. 2022 à 19:31

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

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
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 709
11 oct. 2022 à 08:17

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

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
f894009 Messages postés 17200 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 11 septembre 2024 1 709
Modifié le 11 oct. 2022 à 09:54

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

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

0