J'aimerais pouvoir selectionner pour chaque feuille presente, les colonnes a selectionner.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPour batir cette synthese je vais selectionner uniquement les plages de donnees pertinentes (les colonnes pertinnentes au sein de chacun de ces 4
feuilles..)
Est-ce plus clair?
et ne selectionner uniquement que les plages de donnees pertinentes au sein de ces dernieres.
BABA-1
BABA-2
...
BABA_198
BIBI-1
BIBI-2
BIBI-3
...
BIBI-120
BOBO-1
BOBO-2
...
etc ...
ces feuilles correspondant a chaque etape sont susceptibles d evoluer (Ajout de colonnes)
If l = 1 Then 'si première feuille on copie aussi les titres (première ligne) Range(Cells(1, 1), Cells(i, j)).Select Else Range(Cells(1, 1), Cells(i, j)).Select 'sinon on copie qu'à partir de la ligne 2 End If
5) Pertinence car les informations dans ces colonnes sont importantes pour moi et doivent apparaitre dans ma synthese. Cela est totalement subjectif et lie a mon avis...Afin de reconnaitre ces colonnes, elles ont toutes le meme format "Synth-nom de la colonne"
6) En ligne 1, les titres des colonnes contenant des informations importantes.
En colonne 1 , les numeros de colis, puis les informations des colonnes importantes...
Cela est totalement subjectif
Je t'ai dit plus haut que je ne voulais pas de ton classeur xls.
Rien ne t'empêche par contre de déposer sur un site ad-hoc de partage les images suivantes :
- images de tes feuilles à traiter (avec des données pour plusieurs "projets" et "colis"
- image du résultat attendu
- en précisant ce que tu as choisi comme critère de "pertinence"
Dim plage_travail As Range, plage_a_copier As Range, c As Range, nb As Integer, critere As String feuilles_a_traiter = Array("Feuil1", "Feuil2", "Feuil3", "Feuil4") '===> les feuilles à traiter critere = "a" '============>> le crière choisi For i = 0 To UBound(feuilles_a_traiter) Dim f As Worksheet Set f = Worksheets(feuilles_a_traiter(i)) derlig = f.Range("A" & Rows.Count).End(xlUp).Row dercol = f.Cells(1, Columns.Count).End(xlToLeft).Column Set plage_travail = f.Range("A1:A" & derlig) For Each c In plage_travail If c.Value = critere Then If plage_a_copier Is Nothing Then Set plage_a_copier = f.Range(f.Cells(c.Row, nb + 1), f.Cells(c.Row, dercol)) Else Set plage_a_copier = Union(plage_a_copier, f.Range(f.Cells(c.Row, nb + 1), f.Cells(c.Row, dercol))) End If End If Next If Not plage_a_copier Is Nothing Then ' et voilà où l'ambiguïté de tes explications me gêne !!! ' je ne sais si (entre autres), je dois par exemple écrire ceci : 'ou = Worksheets("Feuil5").Cells(1, Columns.Count).End(xlToLeft).Column ' ou cela : Worksheets("Feuil5").UsedRange ou = Worksheets("Feuil5").Cells.SpecialCells(xlCellTypeLastCell).Column If i > 0 Then ou = ou + 1 plage_a_copier.Copy Destination:=Worksheets("Feuil5").Cells(1, ou) End If If i 0 Then nb nb + 1 Set plage_a_copier = Nothing Next