Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/05/2007, 13h12   #1
Invité de passage
 
Inscription : mai 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 13
Points : 3
Points : 3
Par défaut Définition dynamique de variables

Bonjour, j'ai crée un Type
Code :
1
2
3
4
5
Type nomType
 prop1 As ..
 prop2() As ..
 ..
End Type
J'ai besoin de définir un certain nombre de variables de ce type, autant que l'indique la variable Nbre. Donc je voudrais les nommer avec un indice pour les différencier, par exemple :

Code :
1
2
3
For i = 1 To Nbre
 Dim "nomType"&i As nomType
Next i
Mais ça marche pas. Vous comprendrez bien que la partie en rouge est archi fausse, mais je ne sais pas comment y remédier. Peut être avez vous d'autres idées en définissant un tableau de type et appeler un indice pour accéder à un Type, je ne sais pas...
Cris++ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 13h51   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tu aurais peut-être une solution avec Collection. Regarde dans l'aide, les explications et l'exemple seront toujours mieux que ce que pourrais t'en dire.
A tout hasard.
Sinon, tu as le tableau de tableau. Mais tu devras déclarer l'un et l'autre en début de procédure et éventuellement les redimensionner en cours de code.
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 13h56   #3
Membre éprouvé
 
Inscription : février 2007
Messages : 491
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 491
Points : 469
Points : 469
bonjour
essaye en declarant
nomtype(i) as ...
patbou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 14h03   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub ExempleAvecCollection()
Dim Laligne As String, LeTableau
Dim i As Long, j As Long
    Laligne =  "Un objet Collection est un jeu d'éléments indexés " & _
    "auxquels il peut être fait référence comme s'ils " & _
    "constituaient un ensemble unique."
    LeTableau = Split(Laligne, " ") 'n'est là que pour créer une collection
 
    Dim Val1 As New Collection
    For i = 0 To UBound(LeTableau)
        Val1.Add LeTableau(i)
    Next
    For i = 0 To UBound(LeTableau)
        MsgBox Val1(i + 1) '+1 -> l'index commence à 1
    Next
End Sub
Je ne sais pas si ça peut te servir en adaptant mais voilà toujours
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 14h28   #5
Invité de passage
 
Inscription : mai 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 13
Points : 3
Points : 3
Pour les tableaux, j'ai essayé, oui en effet, il faudrait le redimensionner à chaque fois. Je vais travailler l'idée sur les collections. A voir !
Cris++ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 15h11   #6
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Tu peux corriger la boucle
Code :
1
2
3
    For i = 1 To Val1.Count
        MsgBox Val1(i)
    Next
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 15h16   #7
Invité de passage
 
Inscription : mai 2007
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 13
Points : 3
Points : 3
Merci pour ta réponse si rapide. Je viens de reprendre ton exemple avec Collection, réadaptée à mon cas.
Du coup quand on ajoute un élément à la collection, LeTableau(i), pas besoin de spécifier son type ?
Ca m'a l'air génial !
Cris++ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2007, 15h28   #8
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Regarde les propriétés de Collection, tu peux modifier un item avec Remove... enfin, regarde
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h26.


 
 
 
 
Partenaires

Hébergement Web