Vérifier si un texte à été ajouté à une forme excel

[Résolu]
Signaler
Messages postés
9
Date d'inscription
mardi 23 novembre 2004
Statut
Membre
Dernière intervention
3 octobre 2007
-
Messages postés
9
Date d'inscription
mardi 23 novembre 2004
Statut
Membre
Dernière intervention
3 octobre 2007
-
Bonjour,

j'ai un problème sur excel.

j'ai des formes (shape) dans mon classeur excel et je veux vérifier si un texte a été ajouté à ma forme.

Par exemple j'ai des rectangles ou des cercles (des formes office),  sur certain des textes ont été ajoutés et sur d'autre non.

(Pour info les textes sont ajouté sur la forme en faisant un clic droit et ajouter texte)

Comment distinguer ces deux types de forme ?

j'ai testé la solution suivante
'######################################
Dim Forme as Shape
Set Forme = Selection.ShapeRange.Item(1)
MsgBox Forme.characters.count
'######################################

Si la forme a du texte d'inséré, le code marche sinon j'ai une erreur :

erreur d'exécution '1004':

Impossible de lire la propriété Count de la classe Characters.

merci d'avance

Julien

2 réponses

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Je ne sais pas si ceci peut t'aider, mais bon...
Les Shapes ne sont pas des objets simples avec lesquels travailler.
Pour éviter le genre d'erreur que tu reçois, tu peux utiliser On Error Resume Next qui permet de sauter les erreurs rencontrées dans certains traitements. Ce genre de manipulation est à proscrire en général, mais quelquefois, comme dans le cas des Shapes, c'est assez difficile de s'en passer...

    Dim Shp As Shape
   
    On Error Resume Next  'nécessaire à cause de tous les différents types de Shape
   
    For Each Shp In ActiveSheet.Shapes
        If Shp.OLEFormat.Object.Text <> "" Then
            MsgBox "La forme " & Shp.Name & " contient le texte " & Shp.OLEFormat.Object.Text
        End If
    Next

Et il y a certainement moyen de mieux faire...

MPi
Messages postés
9
Date d'inscription
mardi 23 novembre 2004
Statut
Membre
Dernière intervention
3 octobre 2007

merci beaucoup pour la réponse, j'avais déjà songé à cette solution et pour le moment j'en ai pas trouvé d'autre.

C'est vrai que les formes offices sont assez mal géré par VB.

Merci encore

Julien