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

Rechercher des sujets similaires à "macro qui marche creer segment plante segm"