Bonjour Eric et Jean-Eric,
Merci à vous 2 pour retour.
Eric :
L'exécution de la macro génère une erreur ici :
If InStr(1, .Shapes(I).Name, LaListe(J), vbTextCompare) > 0 Then
En outre je n'avais certainement pas mis assez de contexte mais je cherche à créer une macro qui pourrait être plus générique de suppression des segments, applicable pas seulement à mon classeur exemple par la suite. Donc dans ma réflexion un code qui recherche tous les segments de la feuille active celle ou sera exécutée la macro peut importe le classeur.
Jean-Eric :
J'ai adapté votre proposition pour que le code n'affecte que la feuille active et pas l'intégralité du classeur et il fonctionne bien sur mon Excel pour Mac.
Mais peut-être avez-vous des conseils d'optimisation.
Public Sub DeleteSlicersActiveSheet()
Dim slc As Slicer
Dim ws As Worksheet
Set ws = ActiveSheet
' Création d'une collection temporaire pour stocker les slicers à supprimer
Dim slicersToDelete As Collection
Set slicersToDelete = New Collection
' Parcourir tous les slicers de chaque SlicerCache
Dim slcCache As SlicerCache
For Each slcCache In ActiveWorkbook.SlicerCaches
For Each slc In slcCache.Slicers
If slc.Shape.Parent.Name = ws.Name Then
slicersToDelete.Add slc
End If
Next slc
Next slcCache
' Supprimer les slicers de la feuille active
Dim slicerToDelete As Slicer
For Each slicerToDelete In slicersToDelete
slicerToDelete.Delete
Next slicerToDelete
End Sub
Encore merci à vous 2
Trés cordialement
Hugues