Trouver un objet Shape depuis son nom

Bonjour à tous,

Je rencontre un problème lors que j'essaye de récupérer un objet à partir de son nom en utilisant une variable.

Sub Majmontage()

Dim Nom As String
Dim NomPtCollecte As String

Nom = "S22"

NomPtCollecte = "Pt de collecte : " & Nom

Change_Pointdecollecte Nom, Sheets("Montage").Shapes(NomPtCollecte.Value)

End sub

La fonction ChangePointdecollecte fait référence à une autre fonction avec 2 variables d'entrée :

Sub Change_Pointdecollecte(Nomdupoint As String, TargetShape As shape)

Dans mon cas, lorsque j'appelle la fonction en écrivant du texte tel que :

Change_Pointdecollecte Nom, Sheets("Montage").Shapes("Pt de collecte : S22")

Cela fonctionne correctement. Mais dès que j'utilise une variable comme dans le premier code, j'obtiens l'erreur "Qualificateur incorrect".

J'ai besoin d’utiliser une variable pour faire une boucle.

Merci beaucoup pour votre aide

Bonjour Louis,

NomPtCollecte est une string et non un objet et donc ne peut pas posséder de propriétés, donc NomPtCollecte.Value est incorrect

Sheets("Montage").Shapes(NomPtCollecte) devrait suffire

Pierre

Bonjour Louis,

MonPtCollecte est une variable contenant le nom de la forme, il n'est pas utile de mettre .Value après.

Si tous tous les espaces dans le nom son respectés, je ne vois rien d'autre.

Merci pour vos réponses.

Si je met juste :

Change_Pointdecollecte Nom, Sheets("Montage").Shapes(NomPtCollecte)

Excel me renvoi l'erreur : "L'élément portant ce nom est introuvable".

Pourtant l’orthographe est bien respecté.

Pour illustrer le problème, le code suivant ne fonctionne pas :

Dim NomPtCollecte As String

NomPtCollecte = "Pt de collecte : S22"

Change_Pointdecollecte Nom, Sheets("Montage").Shapes(NomPtCollecte)

Alors que lui oui

Change_Pointdecollecte Nom, Sheets("Montage").Shapes("Pt de collecte : S22")

Bonjour Louis Martinez, le Forum,

Tout d'abord ne mettre jamais d'espace dans les noms de forme. Donc

Pt de collecte : S22

Deviendra

Ptdecollecte:S22

Ainsi si tu as un espace de trop dans un de tes plusieurs espaces dans la 1ière version, tu ne le verras pas. Alors que dans la 2ième version cela se verra.

Ensuite vérifie si tu peux sélectionner ta forme avec son chemin complet. Sheets("Montage").Shapes(nom).select.

Si tu ne le peux pas c'est que la forme n'existe pas sous cette dénomination.

Que représente S22? la cellule S22 ou une donnée située dans cette cellule ou autre?

A suivre...

Salut Cellus !

Tu viens de résoudre mon problème !

Ce n'était qu'une question d'espace mais c'est quand même étrange

J'ai plus qu'à renommer les 40 shapes dans mon classeur....

Merci beaucoup !

A nouveau,

Pour cela tu as la propriété Name de Shapes.

En bouclant sur chaque shape tu peux les renommer en reprenant leur nom ancien et par Trim (VBA) enlever automatiquement les espaces afin de que le nouveau nom n'est plus d'espaces.

N'oublie pas aussi de clore le sujet.

Rechercher des sujets similaires à "trouver objet shape nom"