XL 2013 Syntaxe erronée

escouger

XLDnaute Occasionnel
Bonjour,
Dans une macro, je sélectionnais 7 objets afin de les regrouper.
ActiveSheet.Shapes.Range(Array("Rectangle 203", "IMPR_BIL", "Rectangle 202",
'"Rectangle 122", "Rectangle 22", "Rectangle 121", "Rectangle 124")).Select

Cela fonctionnait bien.

J'ai voulu que la sélection des shapes devant être regroupées soit plus souple.
J'ai donc placé dans une colonne de ma feuille la liste des noms des shapes à regrouper.
J'en ai profité pour changer les noms de ces shapes. (par exemple "Rectangle 203" est devenu "PYjdrimpr_pap").

J'ai ensuite construit en VBA une zone nommée g_lstp contenant les noms des shapes à regouper.
La liste est préparée dans une zone de type String nommée: g_lstp.
Quelle que soit la manière de procéder pour préparer ma liste g_lstp, l'instruction "Activesheet.shapes.range....." ne passe pas.
(Erreur 1004, l'élément portant ce nom est introuvable)
ActiveSheet.Shapes.Range(Array(g_lstp)).Select



____________________________________________________________________


En désespoir de cause j'ai recopié l'instruction initiale en changeant simplement les noms de mes shapes.

ActiveSheet.Shapes.Range(Array("PYjdrimpr_pap", "PYjdrcreat_parcelle", "PYwjdrplanjp", _
"PYjdrsupp_parc", "PYjdrplanjl", "PYjdrIMPR_BIL", "PYjdrparc8libre")).Select

...et çà ne marche quand même pas.

Je ne vois pas d'erreur de syntaxe, et mes shapes existent bel et bien avec les bons noms!

Merci de m'aider à trouver un début de piste, car j'y perd mon latin!

GE
 

job75

XLDnaute Barbatruc
Re, bonjour mon cher Pierre,

Pour ce qui est de la plage nommée g_Istp :

1) s'il s'agit d'une plage verticale comme A1:A7 exécutez :
VB:
ActiveSheet.Shapes.Range(Application.Transpose([g_Istp])).Select
2) s'il s'agit d'une plage horizontale comme A1:G1 exécutez :
VB:
ActiveSheet.Shapes.Range(Application.Transpose(Application.Transpose([g_Istp]))).Select
A+
 

escouger

XLDnaute Occasionnel
Bonsoir,
La solution proposée par JOB75 convient bien, mais je bute encore sur ce qui est probablement un détail dans la synthaxe de la commande destinée à créer un nom (ici G_LSTP).
Le contenu de adrlimit0 est "$az10:$az55"
Ce contenu, y compris les guillemets de début et fin, est copié dans la zone référence du nom. De ce fait les valeurs contenues dans AZ10 à AZ55 ne sont prises en compte.
C'est le texte $az10:$az55 qui figure à la place des valeurs dans la colonne "valeurs".
Pourriez vous me dire quelle est la bonne syntaxe pour créer correctement ce nom G_LSTP.
Merci d'avance

Mon VBA est le suivant:

Dim adrlimit0 As String
adrlimit1 = "$AZ$10:$AZ$"
adrlimit2 = Range("az9") + 9 ' az9 vaut 46 adrlimit2 vaut 55
adrlimit0 = adrlimit1 & adrlimit2 ' adrlimit0 vaut "$AZ$10:$AZ$55"
Range("az8") = adrlimit0

On Error GoTo saut
ActiveWorkbook.Names("g_lstp").Delete
saut:
' problème des guillemets mal interprétés ensuite dans le nom crée
ActiveWorkbook.Names.Add Name:="g_lstp", RefersToR1C1:=(adrlimit0)
 

Statistiques des forums

Discussions
312 153
Messages
2 085 800
Membres
102 980
dernier inscrit
brossadan