Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Liste des membres d'une collection

  • Initiateur de la discussion Initiateur de la discussion mindthegap
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

mindthegap

Guest
Bonjour à tous,

J'ai cherché sur le forum et il me semble qu'il ne s'y trouve pas de réponse à mon problème (si je n'ai pas bien cherché, merci de me signer le post adequat)

J'ai créé une collection contenant un certain nombres d'éléments. J'arrive à extraire un à un chacun des membres de cette collection en fonction de leur index mais je n'arrive pas à récupérer la liste de l'ensemble des membres de cette collection

Est-ce possible ?

Merci d'avance à tous ceux qui pourraient m'aider !
 
Re : Liste des membres d'une collection

Bonjour mindthegap, bienvenue sur XLD,

Le terme "Collection" regroupe beaucoup de choses.

Montrez-nous donc votre macro ou mieux le fichier.

A+
 
Re : Liste des membres d'une collection

Bonjour à tous et merci pour vos premières réponses.

Voici plus de détails sur ma macro : dans une première feuille sont dessinées un certain nombre de formes automatiques. Je souhaite copier l'ensemble de ces formes puis les coller sur d'autres onglets (un traitement leur est alors appliqué)

J'ai instancié le nom de ces formes : Zone_j

Si j'utilise l'enregistreur de macro j'ai, par exemple, le code suivant :

ActiveSheet.Shapes.Range(Array("Zone_1", "Zone_2", "Zone_3", "Zone_4")).Select

Le nombre de formes étant variable et potentiellement important, cette façon de coder n'est pas la bonne. J'ai donc crée une collection regroupant l'ensemble des formes automatiques

Dim arshapes As Variant
Dim j As Integer
Dim n As Integer
Dim Formes As New Collection

Sheets(1).Activate
n = ActiveSheet.Shapes.Count - 2 '(2 boutons sur la feuille)
For j = 1 To n
arshapes = "Zone_" & j
Formes.Add (arshapes)
Next j

Je peux maintenant écrire le code pour copier coller en utilisant les index des membres de la collection mais cela ne m'avance pas beaucoup :

ActiveSheet.Shapes.Range(Array(Formes(1))).Select
Selection.Copy

J'aurai donc aimé récupérer l'ensemble des membres (les Zones_j) de la collection pour les mettre dans l'array et les copier.

Petite précision : je souhaite copier l'ensemble des formes en 1 fois et non pas répéter l'opération membre après membre pour que la position relative des formes les unes par rapport aux autres soit respectée.



Voila, j'espère que cela vous aide à comprendre mon problème !
 
Re : Liste des membres d'une collection

Bonjour mindthegap, le fil,

ActiveSheet.Shapes.Range(Array("Zone_1", "Zone_2", "Zone_3", "Zone_4")).Select

Le nombre de formes étant variable et potentiellement important, cette façon de coder n'est pas la bonne.

C'est vous qui le dites... Voyez ce code qui utilise un tableau :

Code:
Sub Formes()
Dim Liste(), i
With ActiveSheet.Shapes
  ReDim Liste(1 To .Count - 2)
  For i = 1 To UBound(Liste)
    Liste(i) = "Zone_" & i
  Next
  .Range(Liste).Select 'puis Selection.Copy etc...
End With
End Sub

Passer par une New Collection ici ne paraît pas la bonne solution.

A+
 
Dernière édition:
Re : Liste des membres d'une collection

Bonjour,

Code:
  Set mondico = CreateObject("Scripting.Dictionary")
  For i = 1 To 3
   mondico("zt" & i) = 1
  Next i
  ActiveSheet.Shapes.Range(mondico.keys).Select

Code:
  ActiveSheet.Shapes("zt1").Select
  For i = 2 To 3
   ActiveSheet.Shapes("zt" & i).Select False
  Next i

JB
 
Dernière édition:
Re : Liste des membres d'une collection

Bonsoir JB, et tous mes voeux,

Je me doutais que tu allais intervenir avec "Scripting.Dictionary".

C'est toi qui m'as fait connaître cet objet, c'est un domaine qui t'est (presque) réservé.

Par contre je n'ai pas hésité à démolir "New Collection" que tu n'aimes guère si je me souviens bien 😉

A+
 
Re : Liste des membres d'une collection

merci beaucoup pour vos réponses

En cette fin de semaine je n'ai pas eu le temps de me replonger dans le vba mais je vais trouver le temps ce weekend !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
493
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…