KB0073 : Comment savoir avec VBA si une forme est utilisée par thinkcell ?

Toutes les formes détectées par thinkcell sont marquées par une balise. Outre les formes PowerPoint, thinkcell peut également placer une forme spéciale (conteneur ActiveDocument) sur les diapositives, les masques des diapositives ou les dispositions personnalisées. Ce conteneur ActiveDocument n'est pas visible et contient des informations spéciales à propos des objets thinkcell. Dans le modèle d’objet PowerPoint, chaque objet PowerPoint.Shape présente une série de Tags. thinkcell définit la balise spéciale thinkcellShapeDoNotDelete afin d’identifier ces formes. La valeur de cette balise spéciale est définie sur thinkcellActiveDocDoNotDelete pour le conteneur ActiveDocument ; pour toutes les autres formes contrôlées par thinkcell, elle commence par t.

Exemple : Comment vérifier la présence de formes thinkcell ?

La fonction VBA suivante illustre la façon de classifier un objet PowerPoint.Shape donné à l’aide de la balise spéciale :

Sub CheckShape(oShape As PowerPoint.Shape)
    Dim str As String
    str = oShape.Tags.Item(Name:="thinkcellShapeDoNotDelete")
    If (str = "" Or Left$(str, 1) <> "t") Then
        MsgBox "PowerPoint shape"
    Else
        If str = "thinkcellActiveDocDoNotDelete" Then
            MsgBox "thinkcell ActiveDocument"
        Else
            MsgBox "thinkcell shape"
        End If
    End If
End Sub

Vous pouvez utiliser cette fonction pour identifier toutes les formes sur la diapositive active :

Sub Test()
    Dim oShape As PowerPoint.Shape
    For Each oShape In ActiveWindow.View.Slide.Shapes
        Call CheckShape(oShape)
    Next oShape
End Sub

Veuillez noter que la collection de balises de chaque forme est également copiée chaque fois que vous copiez une forme, par exemple en copiant et en collant le graphique thinkcell. CheckShape signalera thinkcell shape pour toutes les formes qui ont fait partie d’un graphique thinkcell, même si une forme a été copiée et collée dans une autre présentation.

Vous pourriez également être intéressé par l’article KB0107 : Comment copier-coller des graphiques thinkcell dans mon code VBA ?