Macro qui marche pour créer un segment et plante si ce segm
en existe déjà.
Bonjour,
j'ai créé une macro avec l'enregistreur pour créer un segment années.
La macro fonctionne, mais mon soucis, c'est que
si j’exécute la macro alors que le segment existe, cela plante naturellement la macro.
et j'aimerais faire en sorte que si le segment existe, la macro ne fasse rien
voilà le code :
Sub Macro1()
'
' Macro1 Macro
'
'
Range("D15").Select
ActiveWorkbook.SlicerCaches.Add(ActiveSheet.PivotTables( _
"Tableau croisé dynamique1"), "Années").Slicers.Add ActiveSheet, , "Années", _
"Années", 140.4, 496.8, 144, 194.25
ActiveSheet.Shapes.Range(Array("Années")).Select
End Sub
En fait, si le segment existe, la macro plante ce qui peut se comprendre puisqu'il dit que le segment existe déjà.
Ce que je ne sais pas traduire en vba.
Si quelqu'un peut m'aider, merci d'avance
je met le fichier en exemple, c'est plus facile à voir.
Bonjour,
Tu peux simplement ajouté la partie surlifnée à ton code.
Cdlt.
Sub Macro1()
On Error Resume Next
ActiveWorkbook.SlicerCaches.Add(ActiveSheet.PivotTables( _
"Tableau croisé dynamique1"), "Années").Slicers.Add ActiveSheet, , "Années", _
"Années", 140.4, 496.8, 144, 194.25
ActiveSheet.Shapes.Range(Array("Années")).Select
End Sub
Bonjour Jean Eric,
la ligne de code fonctionne parfaitement sur mon exemple.
J'ai voulu l'adapter à mon truc un peu plus évolué, mais qui est a peu près du même principe.
C'est à dire que je crée le segment et je le copie dans une page (TAB) à un endroit spécifique avec un sélection de couleur.
J'ai rajouté la ligne de code, mais il ne fait pas planté la macro, mais copie le segment en déplaçant le segment créé précédemment et ainsi de suite l sur la feuille ou il a été copié à chaque clique sur le bouton macro.
Si tu as une idée d'où cela peut venir de mon code, désolé plus long.
Sub Macro3()
'
' Macro3 Macro
'
Sheets("Repare").Activate
Range("D14").Select
Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _
False, True, False, True)
On Error Resume Next
ActiveWorkbook.SlicerCaches.Add(ActiveSheet.PivotTables( _
"Tableau croisé dynamique1"), "Années").Slicers.Add ActiveSheet, , "Années", _
"Années", 148.8, 496.8, 144, 194.25
ActiveSheet.Shapes.Range(Array("Années")).Select
ActiveSheet.Shapes("Années").ScaleHeight 0.2656370656, msoFalse, _
msoScaleFromTopLeft
With ActiveWorkbook.SlicerCaches("Segment_Années").Slicers("Années")
.Caption = "Années"
.DisplayHeader = False
.SlicerCache.CrossFilterType = xlSlicerCrossFilterShowItemsWithDataAtTop
.SlicerCache.SortItems = xlSlicerSortAscending
.SlicerCache.SortUsingCustomLists = True
.SlicerCache.ShowAllItems = True
End With
ActiveSheet.Shapes("Années").ScaleHeight 0.5930217298, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Années").ScaleWidth 0.5625, msoFalse, msoScaleFromTopLeft
Selection.Copy
Sheets("TAB").Select
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 25")).Select
ActiveSheet.Paste
ActiveSheet.Shapes("Années 1").IncrementLeft 275.4
ActiveSheet.Shapes("Années 1").IncrementTop 8.4
ActiveWorkbook.SlicerCaches("Segment_Années").Slicers("Années 1").Style = _
"Style de segment 5"
Range("H15").Select
ActiveCell.FormulaR1C1 = ""
ActiveSheet.Shapes.Range(Array("Années 1")).Select
ActiveSheet.Shapes("Années 1").ScaleHeight 1.1764736155, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Années 1").ScaleHeight 0.9166666667, msoFalse, _
msoScaleFromTopLeft
Range("G6").Select
ActiveSheet.Shapes.Range(Array("Années 1")).Select
ActiveSheet.Shapes("Années 1").IncrementLeft 1.2
ActiveSheet.Shapes("Années 1").IncrementTop 3.6
Range("H9").Select
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 25")).Select
ActiveSheet.Shapes.Range(Array("Date 1")).Select
Range("G6").Select
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 25")).Select
Range("G10").Select
ActiveSheet.Shapes.Range(Array("Rounded Rectangle 25")).Select
ActiveSheet.Shapes.Range(Array("Années 1")).Select
ActiveSheet.Shapes("Années 1").IncrementLeft -1.2
ActiveSheet.Shapes("Années 1").IncrementTop -1.8
ActiveSheet.Shapes("Années 1").IncrementLeft 4.8
Range("U41").Select
End Sub
Jean-Eric a écrit :Bonjour,
Tu peux simplement ajouté la partie surlifnée à ton code.
Cdlt.
Sub Macro1() On Error Resume Next ActiveWorkbook.SlicerCaches.Add(ActiveSheet.PivotTables( _ "Tableau croisé dynamique1"), "Années").Slicers.Add ActiveSheet, , "Années", _ "Années", 140.4, 496.8, 144, 194.25 ActiveSheet.Shapes.Range(Array("Années")).Select End Sub
Jean Eric,
j'ai trouvé comment adapter ta ligne de code
On Error GoTo Fin
la ligne activ...
le reste de la macro
Fin::
end sub
Voilà voilà
Merci à toi