XL 2019 VBA consolidation de plusieurs tableaux

Lion54

XLDnaute Nouveau
Bonsoir à tous,

Je commence dans la programation VBA. J'aurais besoin de votre aide svp si qqun veut bien m aiser.
J'ai un fichier Excel avec plusieurs onglets qui contiennent chacun un tableau au format identique. J'aurais donc besoin de programmer de manière automatique via Macro les étapes suivants:
1) Copier le tableau qui se trouve dans tous les onglets verts et les coller dans l'onglet intitulé 'Reporting' l'un à la suite de l'autre, l'entete doit etre repris qu'une seule fois sur la première ligne de l'onglet 'reporting'. Le but étant de créer un seul tableau qui sera utilisé par la suite pour faire un tableau croisé dynamique.
2) Supprimer les onglets D à F de J à P
3) mettre en forme de manière esthétique

j'ai mis le fichier en PJ.

Pouvez svp m'aider

En vous remerciant
 

Pièces jointes

  • test.xlsx
    82 KB · Affichages: 8
Solution
Re ;),

Une v2 avec vos trois demandes.

Dans le code, il y a maintenant une constante qui contient les noms des feuilles à exclure de la consolidation.
  • c'est à vous de définir cette constante et de la maintenir à jour
  • les noms des onglets sont séparés par un point-virgule
  • vous pouvez y laisser trainer des noms de feuilles non présentes dans le classeur
  • le nom de cette constante est : OngletsExclus
Voici le début du code montrant la constante à adapter :
VB:
'onglets à exclure pour le tableau final
'les noms des onglets sont séparés par des "point-virgule" sans espace
'ne pas oublier les onglets "reporting", "quaterly report" et"Annual report"

Const OngletsExclus = "reporting;quaterly report;Annual...

Lion54

XLDnaute Nouveau
J'ai trouvé :).
J ai juste renommé sheets 1 par reporting 2 et ca fonctionne.
Peux tu stp me dire à quelle niveau dois je qjouter le commentaire : ".Cells(ligneCible, "a").PasteSpecial xlPasteFormats"?

J ai fait comme suit mais ca ne fonctionne pas.
Set plage = F.Range("a" & premLig & ":u" & derLig) 'plage à copier
'première ligne vide de la feuille "Reporting" (dernière ligne +1)
ligneCible = .Cells(.Rows.Count, "a").End(xlUp).Row + 1
If Combien = 1 Then ligneCible = 1 'si première copie, on collera vers la ligne 1
plage.Copy .Cells(ligneCible, "a").PasteSpecial xlPasteFormats 'la copie
End If

Merci encore pour ton aide
 

Discussions similaires