VBA-Excel regrouper diff. onglets ds 1, selon diff. critères (lignes&col)

Bonjour,

Je fais appel à la communauté Excel-Pratique.

Je serais extrêmement ravie d´être guidée en VBA pour créer un tableau pour lequel j´ai de grandes difficultés.

Je joins le fichier Excel en question.

Dans un onglet « base », j´aimerais copier les données de différents autres onglets ( FR, IE, BE …) pour constituer une base de travail.

Sauf l´onglet Cockpit et l´onglet suppositions qui ne peuvent pas être copiés.

Le nombre d´onglet (FR, IE, BE, UK … nom de pays) peut varier d´un mois à l´autre.

Il y a un onglet cockpit, dans lequel des analyses seront faites avec des TCD

Et un onglet Suppositions dans lequel des données aide seront affichées

Il ne s´agit pas de copier l´intégralité des tableaux mais seulement quelques colonnes et certaines lignes.

  • Les colonnes en jaune dans les onglets FR, IE, BE, ..., pays x...
  • Les données ( lignes) ayant pour critère dans la colonne M ( activity) les lettres e, g, j, l
  • Les lignes vides n´ont pas besoin d´être copiée

Tous les tableaux sont identiques d´onglet en onglet. Seul le contenu diffère d´une pays à lautre

J´ai essayé différents sub sous VBA, mais étant débutante j´ai beaucoup de mal …

Je vous remercie pour votre aide

10equipes.zip (595.58 Ko)

Bonjour,

Sub recopier()
ligne = 5
debut = 5
Dim ws As Worksheet
For Each ws In Worksheets
    If ws.Name <> "cockpit" And ws.Name <> "suppositions" And ws.Name <> "base" Then
        With ws
            For i = 5 To .Cells(Application.Rows.Count, 1).End(xlUp).Row
                ' e, g, j, l
                If .Cells(i, "M") = "e" Or .Cells(i, "M") = "g" Or .Cells(i, "M") = "j" Or .Cells(i, "M") = "l" Then
                    ' ABCHLM
                    Cells(ligne, 1) = .Cells(i, "A")
                    Cells(ligne, 2) = .Cells(i, "B")
                    Cells(ligne, 3) = .Cells(i, "C")
                    Cells(ligne, 4) = .Cells(i, "H")
                    Cells(ligne, 5) = .Cells(i, "L")
                    Cells(ligne, 6) = .Cells(i, "M")
                    ligne = ligne + 1
                End If
            Next
        End With
    End If
Next
End Sub

j'ai supprimé des onglets pour qu'il soit moins lourd ...

8equipes.zip (302.80 Ko)

Bonjour,

J´étais en déplacement ce qui explique mon silence!

Un grand merci Steelson pour cette solution!

Je suis vraiment enthousiaste!

J´ai effectué un test en remplissant les colonnes T jusque DS dans les onglets FR et IE.

La compilation n´a pas l´air de s´effectuer pour ces colonnes qui devraient se retrouver dans l´onglet BASE à partir de la colonne G.

Merci d´avance,

Rechercher des sujets similaires à "vba regrouper diff onglets criteres lignes col"