Ajouter données dans dernière colonne vide
Bonjour,
je bloque sur l'ajout de données dans la dernière colonne libre.
Les données proviennent de NF_KPI's_MERCH.xlsx
et vont se coller dans COURBES.xlsx à l'aide d'un recherchev
Le projet est de réaliser des courbes à l'aide de données hebdomadaires.
Je sectionne la dernière cellule vide avec
[IV1].End(xlToLeft).Offset(0, 1).SelectMais après
je ne parvient pas à sélectionner les 183 cellules en dessous pour y coller la formule
=RECHERCHEV($A1;'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!$1:$1048576;6;0)Merci beaucoup de votre aide
Bonjour,
Voici un essai, non testé, en agissant sur la zone utilisée. Ce sera probablement à adapter ou corriger :
Sub essai()
dim nvcol as range
dim nbcol%, nblig%
with usedrange 'a adapter probablement
nbcol = .columns.count
nblig = .rows.count
Set nvcol = .resize(nblig, 1).offset(0, nbcol)
end with
with nvcol
.cells(1).formulalocal = "=RECHERCHEV($A1;'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!$1:$1048576;6;0)"
.cells(1).autofill destination:=.cells
end with
end subCdlt,
Merci 3GB pour ton aide.
cela se bloque à
nbcol = .Columns.Countje ne vois pas quelle modification apporter
Bonjour,
Les modifications portent sur la ligne juste au-dessus, c'est-à-dire la zone ciblée :
Sub essai()
dim nvcol as range
dim nbcol%, nblig%
with Sheets("nomdelafeuilleconcernee").usedrange '<<< remplacer le nom de la feuille par vrai nom !!!
nbcol = .columns.count 'nombre colonnes
nblig = .rows.count 'nombre lignes
Set nvcol = .resize(nblig, 1).offset(0, nbcol) 'nouvelle colonne est la 1ere colonne après décalage de nbcol vers la droite
end with
with nvcol
.cells(1).formulalocal = "=RECHERCHEV($A1;'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!$1:$1048576;6;0)" 'formule en 1e cellule de nvcol
.cells(1).autofill destination:=.cells 'propagation formule au reste de la colonne
end with
end subIl faut bien définir la zone sur laquelle on travaille et, le cas échéant, la feuille sur laquelle elle se trouve. Et il faut que cette feuille ne soit remplie.
Cdlt,
ceci fonctionne... à la perfection !!!
MERCI BEAUCOUP 3GB top efficacité
Bonjour,
j'ai encore besoin d'aide.
Le projet a pour objectif de créer des courbes qui se mettent à jour automatiquement chaque semaine.
Les données de la dernière semaine viennent s'ajouter dans la première colonne vide.
La zone graphique prend en compte les colonnes de B à UI pour créer les courbes.
Une fois que j'ai ajouté la dernière semaine de données, la macro masque les colonnes vides de B à UI ainsi le graphique n'affiche aucune donnée vide.
Sauf que de temps en temps, les données viennent s'ajouter après les colonnes masquées, soit à partir de la colonne UI.
Je ne parviens pas à régler ce problème... Quelqu'un a-t-il une idée ?
Il y a peut-être une manière de créer des graphiques dynamiques qui s'adaptent automatiquement à la quantité de données présentes ?
Voici un exemple de SOURCES de donnée hebdo (NF_KPIS MERCH.xlsx) :
Voici le fichier DESTINATION (Courbes.xlsx) :
Voici la MACRO pour faire tout ça :
Sub COURBES_PDL()
'
' COURBES_PDL Macro
'
'
Cells.Select
Selection.UnMerge
Range("A2").Select
ActiveCell.FormulaR1C1 = "=MID(R[-1]C,18,10)"
Range("A3").Select
Columns("A:A").ColumnWidth = 10
Range("A2").Select
Selection.Copy
Range("D5:Q5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:4").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Columns("D:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.NumberFormat = "General"
Range("D1").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISBLANK(RC[-2]),RC[-3],(IF(ISBLANK(RC[-1]),RC[-2],RC[-1])))"
Range("E1").Select
ActiveCell.FormulaR1C1 = "=MID(RC[-1],1,4)"
Range("D1:E1").Select
Selection.Copy
Range("D2:E300").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("D:D").Select
Application.CutCopyMode = False
Selection.Copy
Columns("D:E").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("E:E").Select
Application.CutCopyMode = False
Selection.Cut
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Selection.ColumnWidth = 17.86
Columns("C:C").ColumnWidth = 18.43
Columns("D:D").ColumnWidth = 28.71
Columns("E:E").ColumnWidth = 22.14
ActiveWindow.ScrollColumn = 1
Selection.Cut
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
'ouvrir fichier COURBES.xlsx
ChDir "Z:\ATELIER RESULTAT\PRESENTATION"
Workbooks.Open Filename:="Z:\ATELIER RESULTAT\PRESENTATION\COURBES.xlsx"
Windows("COURBES.xlsx").Activate
'Afficher toutes les colonnes de toutes les feuilles
With Sheets("PDLBI").Cells
.EntireColumn.Hidden = False
.EntireRow.Hidden = False
.ColumnWidth = 10
.RowHeight = 15
End With
With Sheets("PDLNDG").Cells
.EntireColumn.Hidden = False
.EntireRow.Hidden = False
.ColumnWidth = 10
.RowHeight = 15
End With
With Sheets("PDLND").Cells
.EntireColumn.Hidden = False
.EntireRow.Hidden = False
.ColumnWidth = 10
.RowHeight = 15
End With
With Sheets("PDLSSC").Cells
.EntireColumn.Hidden = False
.EntireRow.Hidden = False
.ColumnWidth = 10
.RowHeight = 15
End With
With Sheets("PDLMILKIES").Cells
.EntireColumn.Hidden = False
.EntireRow.Hidden = False
.ColumnWidth = 10
.RowHeight = 15
End With
With Sheets("PDLLAITS").Cells
.EntireColumn.Hidden = False
.EntireRow.Hidden = False
.ColumnWidth = 10
.RowHeight = 15
End With
With Sheets("PDLPUREES").Cells
.EntireColumn.Hidden = False
.EntireRow.Hidden = False
.ColumnWidth = 10
.RowHeight = 15
End With
'TRAVAIL SUR PDL BI
Sheets("PDLBI").Select
Selection.EntireColumn.Hidden = False
Rows("1:1").Select
Selection.AutoFilter
' Recherchev ajouté en cellule B1 nom secteur
Range("B1").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC1,'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!R1:R1048576,5,0)"
Range("B1").Select
Selection.Copy
Range("B2:B184").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'ajout dernières données dans dernière cellule vide dans Courbes.xls
Windows("COURBES.xlsx").Activate
'première cellule vide PDLBI
Dim nvcolbi As Range
Dim nbcolbi%, nbligbi%
With Sheets("PDLBI").UsedRange '<<< remplacer le nom de la feuille par vrai nom !!!
nbcolbi = .Columns.Count 'nombre colonnes
nbligbi = .Rows.Count 'nombre lignes
Set nvcolbi = .Resize(nbligbi, 1).Offset(0, nbcolbi) 'nouvelle colonne est la 1ere colonne après décalage de nbcol vers la droite
End With
With nvcolbi
.Cells(1).FormulaLocal = "=RECHERCHEV($A1;'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!$1:$1048576;6;0)" 'formule en 1e cellule de nvcol
.Cells(1).AutoFill Destination:=.Cells 'propagation formule au reste de la colonne
End With
Selection.ColumnWidth = 10
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$185").AutoFilter Field:=1, Criteria1:=Array( _
"BD00", "BD20", "BD30", "BD40", "BD50", "BD60", "BD70", "BD80", "BD90", "DV A", "DV B"), _
Operator:=xlFilterValues
Columns("B:B").EntireColumn.AutoFit
Columns("B:B").ColumnWidth = 34
Columns("B:B").Select
Selection.ColumnWidth = 35
'Masquer les colonnes vides dans PDL BI
Dim OBI As Worksheet 'déclare la variable O (Onglet)
Dim COLBI As Byte 'déclare la variable COL (COLonne)
Set OBI = Worksheets("PDLBI") 'définit l'onglet O (à adapter à ton cas)
For COLBI = 3 To 254 'boucle sur les colonne 5 à 40 (=> E à AN)
'masque (>0) /affiche(=0) la colonne en fonction du nombre de valeurs contenues dans la colonne
OBI.Columns(COLBI).Hidden = IIf(Application.WorksheetFunction.CountA(OBI.Columns(COLBI)) = 0, True, False)
Next COLBI 'prochaine colonne de la ligne
Range("A1").Select
'TRAVAIL SUR PDL NDG
Sheets("PDLNDG").Select
Selection.EntireColumn.Hidden = False
Rows("1:1").Select
Selection.AutoFilter
Selection.EntireColumn.Hidden = False
Range("B1").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC1,'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!R1:R1048576,5,0)"
Range("B1").Select
Selection.Copy
Range("B2:B184").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Dim nvcolndg As Range
Dim nbcolndg%, nbligndg%
With Sheets("PDLNDG").UsedRange '<<< remplacer le nom de la feuille par vrai nom !!!
nbcolndg = .Columns.Count 'nombre colonnes
nbligndg = .Rows.Count 'nombre lignes
Set nvcolndg = .Resize(nbligndg, 1).Offset(0, nbcolndg) 'nouvelle colonne est la 1ere colonne après décalage de nbcol vers la droite
End With
With nvcolndg
.Cells(1).FormulaLocal = "=RECHERCHEV($A1;'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!$1:$1048576;7;0)" 'formule en 1e cellule de nvcol
.Cells(1).AutoFill Destination:=.Cells 'propagation formule au reste de la colonne
End With
Sheets("PDLNDG").Select
Selection.ColumnWidth = 10
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$185").AutoFilter Field:=1, Criteria1:=Array( _
"BD00", "BD20", "BD30", "BD40", "BD50", "BD60", "BD70", "BD80", "BD90", "DV A", "DV B"), _
Operator:=xlFilterValues
Columns("B:B").EntireColumn.AutoFit
Columns("B:B").ColumnWidth = 34
Columns("B:B").Select
Selection.ColumnWidth = 35
'Masquer les colonnes vides dans PDL NDG
Dim ONDG As Worksheet 'déclare la variable O (Onglet)
Dim COLNDG As Byte 'déclare la variable COL (COLonne)
Set ONDG = Worksheets("PDLNDG") 'définit l'onglet O (à adapter à ton cas)
For COLNDG = 3 To 254 'boucle sur les colonne 5 à 40 (=> E à AN)
'masque (>0) /affiche(=0) la colonne en fonction du nombre de valeurs contenues dans la colonne
ONDG.Columns(COLNDG).Hidden = IIf(Application.WorksheetFunction.CountA(ONDG.Columns(COLNDG)) = 0, True, False)
Next COLNDG 'prochaine colonne de la ligne
Range("A1").Select
'TRAVAIL SUR PDL ND
Sheets("PDLND").Select
Selection.EntireColumn.Hidden = False
Rows("1:1").Select
Selection.AutoFilter
Selection.EntireColumn.Hidden = False
Range("B1").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC1,'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!R1:R1048576,5,0)"
Range("B1").Select
Selection.Copy
Range("B2:B184").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Dim nvcolND As Range
Dim nbcolND%, nbligND%
With Sheets("PDLND").UsedRange '<<< remplacer le nom de la feuille par vrai nom !!!
nbcolND = .Columns.Count 'nombre colonnes
nbligND = .Rows.Count 'nombre lignes
Set nvcolND = .Resize(nbligND, 1).Offset(0, nbcolND) 'nouvelle colonne est la 1ere colonne après décalage de nbcol vers la droite
End With
With nvcolND
.Cells(1).FormulaLocal = "=RECHERCHEV($A1;'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!$1:$1048576;8;0)" 'formule en 1e cellule de nvcol
.Cells(1).AutoFill Destination:=.Cells 'propagation formule au reste de la colonne
End With
Sheets("PDLND").Select
Selection.ColumnWidth = 10
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$185").AutoFilter Field:=1, Criteria1:=Array( _
"BD00", "BD20", "BD30", "BD40", "BD50", "BD60", "BD70", "BD80", "BD90", "DV A", "DV B"), _
Operator:=xlFilterValues
Columns("B:B").EntireColumn.AutoFit
Columns("B:B").ColumnWidth = 34
Columns("B:B").Select
Selection.ColumnWidth = 35
'Masquer les colonnes vides dans PDL ND
Dim OND As Worksheet 'déclare la variable O (Onglet)
Dim COLND As Byte 'déclare la variable COL (COLonne)
Set OND = Worksheets("PDLND") 'définit l'onglet O (à adapter à ton cas)
For COLND = 3 To 254 'boucle sur les colonne 5 à 40 (=> E à AN)
'masque (>0) /affiche(=0) la colonne en fonction du nombre de valeurs contenues dans la colonne
OND.Columns(COLND).Hidden = IIf(Application.WorksheetFunction.CountA(OND.Columns(COLND)) = 0, True, False)
Next COLND 'prochaine colonne de la ligne
Range("A1").Select
'TRAVAIL SUR PDL SSC
Sheets("PDLSSC").Select
Selection.EntireColumn.Hidden = False
Rows("1:1").Select
Selection.AutoFilter
Selection.EntireColumn.Hidden = False
Range("B1").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC1,'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!R1:R1048576,5,0)"
Range("B1").Select
Selection.Copy
Range("B2:B184").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Dim nvcolSSC As Range
Dim nbcolSSC%, nbligSSC%
With Sheets("PDLSSC").UsedRange '<<< remplacer le nom de la feuille par vrai nom !!!
nbcolSSC = .Columns.Count 'nombre colonnes
nbligSSC = .Rows.Count 'nombre lignes
Set nvcolSSC = .Resize(nbligSSC, 1).Offset(0, nbcolSSC) 'nouvelle colonne est la 1ere colonne après décalage de nbcol vers la droite
End With
With nvcolSSC
.Cells(1).FormulaLocal = "=RECHERCHEV($A1;'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!$1:$1048576;11;0)" 'formule en 1e cellule de nvcol
.Cells(1).AutoFill Destination:=.Cells 'propagation formule au reste de la colonne
End With
Sheets("PDLSSC").Select
Selection.ColumnWidth = 10
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$185").AutoFilter Field:=1, Criteria1:=Array( _
"BD00", "BD20", "BD30", "BD40", "BD50", "BD60", "BD70", "BD80", "BD90", "DV A", "DV B"), _
Operator:=xlFilterValues
Columns("B:B").EntireColumn.AutoFit
Columns("B:B").ColumnWidth = 34
Columns("B:B").Select
Selection.ColumnWidth = 35
'Masquer les colonnes vides dans PDL SSC
Dim OSSC As Worksheet 'déclare la variable O (Onglet)
Dim COLSSC As Byte 'déclare la variable COL (COLonne)
Set OSSC = Worksheets("PDLSSC") 'définit l'onglet O (à adapter à ton cas)
For COLSSC = 3 To 254 'boucle sur les colonne 5 à 40 (=> E à AN)
'masque (>0) /affiche(=0) la colonne en fonction du nombre de valeurs contenues dans la colonne
OSSC.Columns(COLSSC).Hidden = IIf(Application.WorksheetFunction.CountA(OSSC.Columns(COLSSC)) = 0, True, False)
Next COLSSC 'prochaine colonne de la ligne
Range("A1").Select
'TRAVAIL SUR PDL MILKIES
Sheets("PDLMILKIES").Select
Selection.EntireColumn.Hidden = False
Rows("1:1").Select
Selection.AutoFilter
Selection.EntireColumn.Hidden = False
Range("B1").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC1,'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!R1:R1048576,5,0)"
Range("B1").Select
Selection.Copy
Range("B2:B184").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Dim nvcolMILKIES As Range
Dim nbcolMILKIES%, nbligMILKIES%
With Sheets("PDLMILKIES").UsedRange '<<< remplacer le nom de la feuille par vrai nom !!!
nbcolMILKIES = .Columns.Count 'nombre colonnes
nbligMILKIES = .Rows.Count 'nombre lignes
Set nvcolMILKIES = .Resize(nbligMILKIES, 1).Offset(0, nbcolMILKIES) 'nouvelle colonne est la 1ere colonne après décalage de nbcol vers la droite
End With
With nvcolMILKIES
.Cells(1).FormulaLocal = "=RECHERCHEV($A1;'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!$1:$1048576;10;0)" 'formule en 1e cellule de nvcol
.Cells(1).AutoFill Destination:=.Cells 'propagation formule au reste de la colonne
End With
Sheets("PDLMILKIES").Select
Selection.ColumnWidth = 10
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$185").AutoFilter Field:=1, Criteria1:=Array( _
"BD00", "BD20", "BD30", "BD40", "BD50", "BD60", "BD70", "BD80", "BD90", "DV A", "DV B"), _
Operator:=xlFilterValues
Columns("B:B").EntireColumn.AutoFit
Columns("B:B").ColumnWidth = 34
Columns("B:B").Select
Selection.ColumnWidth = 35
'Masquer les colonnes vides dans PDL MILKIES
Dim OMILKIES As Worksheet 'déclare la variable O (Onglet)
Dim COLMILKIES As Byte 'déclare la variable COL (COLonne)
Set OMILKIES = Worksheets("PDLMILKIES") 'définit l'onglet O (à adapter à ton cas)
For COLMILKIES = 3 To 254 'boucle sur les colonne 5 à 40 (=> E à AN)
'masque (>0) /affiche(=0) la colonne en fonction du nombre de valeurs contenues dans la colonne
OMILKIES.Columns(COLMILKIES).Hidden = IIf(Application.WorksheetFunction.CountA(OMILKIES.Columns(COLMILKIES)) = 0, True, False)
Next COLMILKIES 'prochaine colonne de la ligne
Range("A1").Select
'TRAVAIL SUR PDL LAITS
Sheets("PDLLAITS").Select
Selection.EntireColumn.Hidden = False
Rows("1:1").Select
Selection.AutoFilter
Selection.EntireColumn.Hidden = False
Range("B1").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC1,'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!R1:R1048576,5,0)"
Range("B1").Select
Selection.Copy
Range("B2:B184").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Dim nvcolLAITS As Range
Dim nbcolLAITS%, nbligLAITS%
With Sheets("PDLLAITS").UsedRange '<<< remplacer le nom de la feuille par vrai nom !!!
nbcolLAITS = .Columns.Count 'nombre colonnes
nbligLAITS = .Rows.Count 'nombre lignes
Set nvcolLAITS = .Resize(nbligLAITS, 1).Offset(0, nbcolLAITS) 'nouvelle colonne est la 1ere colonne après décalage de nbcol vers la droite
End With
With nvcolLAITS
.Cells(1).FormulaLocal = "=RECHERCHEV($A1;'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!$1:$1048576;9;0)" 'formule en 1e cellule de nvcol
.Cells(1).AutoFill Destination:=.Cells 'propagation formule au reste de la colonne
End With
Sheets("PDLLAITS").Select
Selection.ColumnWidth = 10
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$185").AutoFilter Field:=1, Criteria1:=Array( _
"BD00", "BD20", "BD30", "BD40", "BD50", "BD60", "BD70", "BD80", "BD90", "DV A", "DV B"), _
Operator:=xlFilterValues
Columns("B:B").EntireColumn.AutoFit
Columns("B:B").ColumnWidth = 34
Columns("B:B").Select
Selection.ColumnWidth = 35
'Masquer les colonnes vides dans PDL LAITS
Dim OLAITS As Worksheet 'déclare la variable O (Onglet)
Dim COLLAITS As Byte 'déclare la variable COL (COLonne)
Set OLAITS = Worksheets("PDLLAITS") 'définit l'onglet O (à adapter à ton cas)
For COLLAITS = 3 To 254 'boucle sur les colonne 5 à 40 (=> E à AN)
'masque (>0) /affiche(=0) la colonne en fonction du nombre de valeurs contenues dans la colonne
OLAITS.Columns(COLLAITS).Hidden = IIf(Application.WorksheetFunction.CountA(OLAITS.Columns(COLLAITS)) = 0, True, False)
Next COLLAITS 'prochaine colonne de la ligne
Range("A1").Select
'TRAVAIL SUR PDL PUREES
Sheets("PDLPUREES").Select
Selection.EntireColumn.Hidden = False
Rows("1:1").Select
Selection.AutoFilter
Selection.EntireColumn.Hidden = False
Range("B1").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC1,'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!R1:R1048576,5,0)"
Range("B1").Select
Selection.Copy
Range("B2:B184").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Dim nvcolPUREES As Range
Dim nbcolPUREES%, nbligPUREES%
With Sheets("PDLPUREES").UsedRange '<<< remplacer le nom de la feuille par vrai nom !!!
nbcolPUREES = .Columns.Count 'nombre colonnes
nbligPUREES = .Rows.Count 'nombre lignes
Set nvcolPUREES = .Resize(nbligPUREES, 1).Offset(0, nbcolPUREES) 'nouvelle colonne est la 1ere colonne après décalage de nbcol vers la droite
End With
With nvcolPUREES
.Cells(1).FormulaLocal = "=RECHERCHEV($A1;'[NF_KPI''s_MERCH.xlsx]KPIs MERCH'!$1:$1048576;12;0)" 'formule en 1e cellule de nvcol
.Cells(1).AutoFill Destination:=.Cells 'propagation formule au reste de la colonne
End With
Sheets("PDLPUREES").Select
Selection.ColumnWidth = 10
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:1").Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A$1:$C$185").AutoFilter Field:=1, Criteria1:=Array( _
"BD00", "BD20", "BD30", "BD40", "BD50", "BD60", "BD70", "BD80", "BD90", "DV A", "DV B"), _
Operator:=xlFilterValues
Columns("B:B").EntireColumn.AutoFit
Columns("B:B").ColumnWidth = 34
Columns("B:B").Select
Selection.ColumnWidth = 35
'Masquer les colonnes vides dans PDL PUREES
Dim OPUREES As Worksheet 'déclare la variable O (Onglet)
Dim COLPUREES As Byte 'déclare la variable COL (COLonne)
Set OPUREES = Worksheets("PDLPUREES") 'définit l'onglet O (à adapter à ton cas)
For COLPUREES = 3 To 254 'boucle sur les colonne 5 à 40 (=> E à AN)
'masque (>0) /affiche(=0) la colonne en fonction du nombre de valeurs contenues dans la colonne
OPUREES.Columns(COLPUREES).Hidden = IIf(Application.WorksheetFunction.CountA(OPUREES.Columns(COLPUREES)) = 0, True, False)
Next COLPUREES 'prochaine colonne de la ligne
Range("A1").Select
ActiveWorkbook.Save
ActiveWorkbook.Close
End SubHonnêtement, il y a plusieurs centaines de lignes à l'enregistreur de macro donc je ne préfère pas commencer à regarder le code
Pour les graphiques, oui je pense qu'en ayant des tableaux structurés, ce serait un bon début. Ainsi, vous auriez en source le tableau structuré et donc une référence dynamique.
Bon courage en tout cas,