Ecrire correctement un array

Le
manbas
Bonjour
Toujours en echec sur un probleme de selection de shapes présents dans une
feuille (en sélectionner certaines et pas toutes), je rencontre une
difficulté d'écriture avec array. Les solutions qui me permettraient
d'écrire une macro pérenne ne marchent pas.

result = [A1].Value 'cellule A1 contient la chaine de caractères, qui est la
concaténation des noms des formes à sélectionner obtenue par macro, exemple
: rect1, fl1
N1 = [B1].Value ' B1 contient le nom de la première forme, exemple: rect1
N2 = [B2].Value ' B2 contient le nom de la deuxième forme, exemple: fl1
resultBis = N1 & ", " & N2
ActiveSheet.Shapes.Range(Array("rect1", "fl1")).Select 'fonctionne, mais
inutilisable car ré-écriture macro
ActiveSheet.Shapes.Range(Array(N1, N2)).Select 'fonctionne alors qu'il n'y a
pas de guillemets dans l'écriture, mais inutilisable car limite a priori le
nombre de formes
ActiveSheet.Shapes.Range(Array(result)).Select 'ne fonctionne pas
ActiveSheet.Shapes.Range(Array(resultBis)).Select 'ne fonctionne pas

Pouvez-vous me donner vos avis SVP?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #20187031
Bonjour,

Pour sélectionner toutes les Shapes dont les noms
apparaissent dans la plage A1:Ax de la "Feuil1"

Dans la liste, il ne doit pas y avoir des contrôles qui
émanent de la barre d'outils "Formulaire" ou "Contrôles.

'-------------------------------------------
Sub test()
Dim A As Integer, X As Integer
Dim Arr()

With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = .Rows.Count
ReDim Arr(1 To X)
For A = 1 To X
Arr(A) = Range("A" & A)
Next
End With
.Shapes.Range(Arr).Select
End With

End Sub
'-------------------------------------------



"manbas" ##
Bonjour
Toujours en echec sur un probleme de selection de shapes présents dans une
feuille (en sélectionner certaines et pas toutes), je rencontre une
difficulté d'écriture avec array. Les solutions qui me permettraient
d'écrire une macro pérenne ne marchent pas.

result = [A1].Value 'cellule A1 contient la chaine de caractères, qui est la
concaténation des noms des formes à sélectionner obtenue par macro, exemple
: rect1, fl1
N1 = [B1].Value ' B1 contient le nom de la première forme, exemple: rect1
N2 = [B2].Value ' B2 contient le nom de la deuxième forme, exemple: fl1
resultBis = N1 & ", " & N2
ActiveSheet.Shapes.Range(Array("rect1", "fl1")).Select 'fonctionne, mais
inutilisable car ré-écriture macro
ActiveSheet.Shapes.Range(Array(N1, N2)).Select 'fonctionne alors qu'il n'y a
pas de guillemets dans l'écriture, mais inutilisable car limite a priori le
nombre de formes
ActiveSheet.Shapes.Range(Array(result)).Select 'ne fonctionne pas
ActiveSheet.Shapes.Range(Array(resultBis)).Select 'ne fonctionne pas

Pouvez-vous me donner vos avis SVP?
manbas
Le #20188411
Merci Michdenis. Comme tu vois je suis toujours sur le même sujet.
Les formes sont des formes automatiques crées à partir de la BO Dessin, au
travers de commandes VBA (cf classeur cjoint)
Le code est en échec sur .Shapes.Range(Arr).Select
avec le message Erreur d'execution 1004: l'index de cette collection est en
dehors des limites.
Moi j'ai p'u d'idées !


"michdenis" news:
Bonjour,

Pour sélectionner toutes les Shapes dont les noms
apparaissent dans la plage A1:Ax de la "Feuil1"

Dans la liste, il ne doit pas y avoir des contrôles qui
émanent de la barre d'outils "Formulaire" ou "Contrôles.

'-------------------------------------------
Sub test()
Dim A As Integer, X As Integer
Dim Arr()

With Worksheets("Feuil1")
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = .Rows.Count
ReDim Arr(1 To X)
For A = 1 To X
Arr(A) = Range("A" & A)
Next
End With
.Shapes.Range(Arr).Select
End With

End Sub
'-------------------------------------------



"manbas" discussion :
##
Bonjour
Toujours en echec sur un probleme de selection de shapes présents dans une
feuille (en sélectionner certaines et pas toutes), je rencontre une
difficulté d'écriture avec array. Les solutions qui me permettraient
d'écrire une macro pérenne ne marchent pas.

result = [A1].Value 'cellule A1 contient la chaine de caractères, qui est
la
concaténation des noms des formes à sélectionner obtenue par macro,
exemple
: rect1, fl1
N1 = [B1].Value ' B1 contient le nom de la première forme, exemple: rect1
N2 = [B2].Value ' B2 contient le nom de la deuxième forme, exemple: fl1
resultBis = N1 & ", " & N2
ActiveSheet.Shapes.Range(Array("rect1", "fl1")).Select 'fonctionne, mais
inutilisable car ré-écriture macro
ActiveSheet.Shapes.Range(Array(N1, N2)).Select 'fonctionne alors qu'il n'y
a
pas de guillemets dans l'écriture, mais inutilisable car limite a priori
le
nombre de formes
ActiveSheet.Shapes.Range(Array(result)).Select 'ne fonctionne pas
ActiveSheet.Shapes.Range(Array(resultBis)).Select 'ne fonctionne pas

Pouvez-vous me donner vos avis SVP?



michdenis
Le #20188701
Si tu as mis le code dans un module standard,
la feuille active doit être la feuille où tu as tes shapes.

Tu peux simplement ajouter à la macro ceci :
La ligne : .Activate pour en être sûr !

'------------------------------------
Sub test()
Dim A As Integer, X As Integer
Dim Arr()

With Worksheets("Feuil1")
.Activate
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = .Rows.Count
ReDim Arr(1 To X)
For A = 1 To X
Arr(A) = Range("A" & A)
Next
End With
.Shapes.Range(Arr).Select
End With

End Sub
'------------------------------------
manbas
Le #20188981
Pas mieux, malheureusement. Même en élargissant la plage A1:AP...


"michdenis" news:
Si tu as mis le code dans un module standard,
la feuille active doit être la feuille où tu as tes shapes.

Tu peux simplement ajouter à la macro ceci :
La ligne : .Activate pour en être sûr !

'------------------------------------
Sub test()
Dim A As Integer, X As Integer
Dim Arr()

With Worksheets("Feuil1")
.Activate
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = .Rows.Count
ReDim Arr(1 To X)
For A = 1 To X
Arr(A) = Range("A" & A)
Next
End With
.Shapes.Range(Arr).Select
End With

End Sub
'------------------------------------







michdenis
Le #20189071
fichier exemple : http://cjoint.com/?jutbfRaV0B



"manbas"
Pas mieux, malheureusement. Même en élargissant la plage A1:AP...


"michdenis" news:
Si tu as mis le code dans un module standard,
la feuille active doit être la feuille où tu as tes shapes.

Tu peux simplement ajouter à la macro ceci :
La ligne : .Activate pour en être sûr !

'------------------------------------
Sub test()
Dim A As Integer, X As Integer
Dim Arr()

With Worksheets("Feuil1")
.Activate
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = .Rows.Count
ReDim Arr(1 To X)
For A = 1 To X
Arr(A) = Range("A" & A)
Next
End With
.Shapes.Range(Arr).Select
End With

End Sub
'------------------------------------







FS
Le #20189061
Bonsoir,

Si tu travailles toujours sur le classeur dont tu avais envoyé un
exemplaire sur cjoint le 19/9 à 17h05, je trouve 29 formes sur la
feuille 1 (Chronologie) avec des noms du style D1-F1, D2-F2 etc. et
d'autres plus exotiques (AutoShape 241 par exemple).
Selon quels critères veux-tu en "sélectionner certaines et pas toutes" ?

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

manbas a écrit :
Bonjour
Toujours en echec sur un probleme de selection de shapes présents dans
une feuille (en sélectionner certaines et pas toutes), je rencontre une
difficulté d'écriture avec array. Les solutions qui me permettraient
d'écrire une macro pérenne ne marchent pas.

result = [A1].Value 'cellule A1 contient la chaine de caractères, qui
est la concaténation des noms des formes à sélectionner obtenue par
macro, exemple : rect1, fl1
N1 = [B1].Value ' B1 contient le nom de la première forme, exemple: rect1
N2 = [B2].Value ' B2 contient le nom de la deuxième forme, exemple: fl1
resultBis = N1 & ", " & N2
ActiveSheet.Shapes.Range(Array("rect1", "fl1")).Select 'fonctionne, mais
inutilisable car ré-écriture macro
ActiveSheet.Shapes.Range(Array(N1, N2)).Select 'fonctionne alors qu'il
n'y a pas de guillemets dans l'écriture, mais inutilisable car limite a
priori le nombre de formes
ActiveSheet.Shapes.Range(Array(result)).Select 'ne fonctionne pas
ActiveSheet.Shapes.Range(Array(resultBis)).Select 'ne fonctionne pas

Pouvez-vous me donner vos avis SVP?




manbas
Le #20189191
Merci pour tout MichDenis
Sur ma feuille il y a une majorité de zones de texte, qui ne sont pas
sélectionnées par ce code!! Les zones de texte ne semblent pas être des
shapes comme les autres.
Je vais repenser ma feuille en tenant compte de ça.

"michdenis" news:
fichier exemple : http://cjoint.com/?jutbfRaV0B



"manbas" discussion :

Pas mieux, malheureusement. Même en élargissant la plage A1:AP...


"michdenis" news:
Si tu as mis le code dans un module standard,
la feuille active doit être la feuille où tu as tes shapes.

Tu peux simplement ajouter à la macro ceci :
La ligne : .Activate pour en être sûr !

'------------------------------------
Sub test()
Dim A As Integer, X As Integer
Dim Arr()

With Worksheets("Feuil1")
.Activate
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
X = .Rows.Count
ReDim Arr(1 To X)
For A = 1 To X
Arr(A) = Range("A" & A)
Next
End With
.Shapes.Range(Arr).Select
End With

End Sub
'------------------------------------










manbas
Le #20189351
Bonsoir Frederic
Merci de jeter un oeil sur mes problemes.
En effet je travaille toujours dessus.
Les shapes D correspondent aux zones de texte, et les F correspondent aux
connecteurs. Les 241 & co sont les accolades que j'ai rajouté pour
MichDenis, afin de differencier les résultats obtenus avec le même code dans
2003 et 2007 (celles-ci ne sont pas des shapes obtenues par macro)
La feuille est divisée globalement en 4 pages au format paysage, délimitées
par les colonnes bleues.
L'objectif est de selectionner les shapes page par page pour les copier dans
powerpoint slide par slide.

"FS" news:
Bonsoir,

Si tu travailles toujours sur le classeur dont tu avais envoyé un
exemplaire sur cjoint le 19/9 à 17h05, je trouve 29 formes sur la feuille
1 (Chronologie) avec des noms du style D1-F1, D2-F2 etc. et d'autres plus
exotiques (AutoShape 241 par exemple).
Selon quels critères veux-tu en "sélectionner certaines et pas toutes" ?

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

manbas a écrit :
Bonjour
Toujours en echec sur un probleme de selection de shapes présents dans
une feuille (en sélectionner certaines et pas toutes), je rencontre une
difficulté d'écriture avec array. Les solutions qui me permettraient
d'écrire une macro pérenne ne marchent pas.

result = [A1].Value 'cellule A1 contient la chaine de caractères, qui est
la concaténation des noms des formes à sélectionner obtenue par macro,
exemple : rect1, fl1
N1 = [B1].Value ' B1 contient le nom de la première forme, exemple: rect1
N2 = [B2].Value ' B2 contient le nom de la deuxième forme, exemple: fl1
resultBis = N1 & ", " & N2
ActiveSheet.Shapes.Range(Array("rect1", "fl1")).Select 'fonctionne, mais
inutilisable car ré-écriture macro
ActiveSheet.Shapes.Range(Array(N1, N2)).Select 'fonctionne alors qu'il
n'y a pas de guillemets dans l'écriture, mais inutilisable car limite a
priori le nombre de formes
ActiveSheet.Shapes.Range(Array(result)).Select 'ne fonctionne pas
ActiveSheet.Shapes.Range(Array(resultBis)).Select 'ne fonctionne pas

Pouvez-vous me donner vos avis SVP?





michdenis
Le #20189341
La procédure soumise n'a aucune difficulté à sélectionner
des zones de texte. Comme déjà énoncé, ces zones de texte
ne doivent pas être des contrôles "Textbox" émanant de la barre d'outils
"contrôles". En Excel 2007, ces zones de texte ont par défaut :
ZoneTexte 1, 1 étant l'index ... !
manbas
Le #20189461
OK
J'ai enfin compris ! (j'oubliais les espace entre les mots des shapes dans
ta démo: Zonedetexte9).
ça correspond tout à fait à la solution au problème de l'array qui était au
départ de ce fil, donc probleme résolu.
Merci beaucoup +++
A bientôt



"michdenis" news:
La procédure soumise n'a aucune difficulté à sélectionner
des zones de texte. Comme déjà énoncé, ces zones de texte
ne doivent pas être des contrôles "Textbox" émanant de la barre d'outils
"contrôles". En Excel 2007, ces zones de texte ont par défaut :
ZoneTexte 1, 1 étant l'index ... !






Publicité
Poster une réponse
Anonyme