Voici les explications :
1-
Dans chaque onglet, j'ai masqué les lignes 1 à 3. Ce n'est pas indispensable, mais comme l'information est redondante avec le nom d'onglet, cela permet d'alléger la feuille à la lecture.
2-
En A2, sous le terme Article issu de ton tableau de données (important), une formule reprend le nom de l'onglet :
=DROITE(CELLULE("nomfichier";A1);NBCAR(CELLULE("nomfichier";A1))-TROUVE("]";CELLULE("nomfichier";A1)))
3-
Ligne 6, je reprends les entête de colonne souhaitée (ici toutes) de l'onglet data.
4-
Enfin, j'ai une procédure événementielle qui se déclenche à l'activation de l'onglet Sub Workbook_SheetActivate
. Il s'agit tout simplement d'un filtre avancé, avec :
- comme critère A1:A2 Sh.Range("A1").CurrentRegion
, J'aurais pu mettre Rnge("A1:A2")
dans ton cas, CurrentRegion n'est pas obligatoire ici mais me permet éventuellement de mettre un autre critère en B1:B2
- comme résultat les données de la ligne 6 Sh.Range("A6").CurrentRegion.Resize(1)
; j'aurais pu mettre Range("A6:G6")
qui dans ton cas est la même chose
- comme données de base l'onglet data : comme les données ne sont pas dans un tableau, je ne sais pas où elles se trouvent et donc j'emploie Sheets("data").Cells(Rows.Count, 1).End(xlUp).CurrentRegion
; dans ce cas il ne faut rien en colonne A en dessous des données.
En fait, le code pour moi est quasi générique, c'est pour cela que j'emploie beaucoup CurrentRegion.
J'espère avoir répondu à ton interrogation.