Il faut, pour cela, évaluer la propriété ContainedType de l'espace réservé.
Par exemple pour la zone 1 de la diapo en cours, si la zone a une image :
If ActiveWindow.Selection.SlideRange.Shapes(1).PlaceholderFormat.ContainedType = msoPicture Then
Ou bien si on veut vérifier que la zone 1 de la diapo en cours est vide :
If ActiveWindow.Selection.SlideRange.Shapes(1).PlaceholderFormat.ContainedType <> msoPicture Then
C'est intéressant de le savoir si c'est la condition pour supprimer une zone vide. En effet, la méthode Delete va supprimer la zone si celle-ci est vide, mais va supprimer l'image et conserver la zone si cette dernière n'est pas vide. Voici donc un exemple de code qui va analyser la diapo en cours et qui va s'arrêter sur chaque espace réservé image vide, et supprimer cet espace uniquement s'il n'a pas été rempli.
On teste tous les objets de la diapositive et on ne traite que ceux qui sont des espaces réservés image (le nom commence par Picture Placeholder).
Notez qu'on pourrait utiliser un For each... Next, mais ça paraît buggé... La macro ne supprime pas tout ce qui doit être supprimé.
Sub suppr()
With ActiveWindow.Selection.SlideRange
For x = .Shapes.Count To 1 Step -1
If Left(.Shapes(x).Name, 19) = "Picture Placeholder" Then
If .Shapes(x).PlaceholderFormat.ContainedType <> msoPicture Then
.Shapes(x).Delete
End If
End If
Next
End With
End Sub