Une variable qui varie........

Troudz

XLDnaute Occasionnel
Bonjour,

Une question surement très bête mais pour laquelle je n'arrive pas à trouver de solution (pourtant j'ai beaucoup cherché sur les forums).

On peut désigner un userform par :
Code:
Userform1.show
ou par :
Code:
Userform(Userform1).show

et bien je voudrais savoir s'il est possible de faire pareil avec une variable. J'ai essayé des trucs du genre Variable(MaVariable) ou Var(MaVariable) mais rien ne marche.

Qqun aurait une idée ?

Merci
 

JNP

XLDnaute Barbatruc
Re : Une variable qui varie........

Bonsoir le fil :),
et bien je voudrais savoir s'il est possible de faire pareil avec une variable. J'ai essayé des trucs du genre Variable(MaVariable) ou Var(MaVariable) mais rien ne marche.
Tu veux peut être accéder aux propriétés de ta variable ?
Exemple : Set MaCellule = Range("A1")
MaCellule.Address donne $A$1
MaCellule.Text la valeur d'A1
Etc.
Bonne soirée :cool:
 

Troudz

XLDnaute Occasionnel
Re : Une variable qui varie........

Merci pour ta réponse Pierrot mais je crois que je me suis mal fait comprendre.
Je vais donc prendre un exemple plus concret :

exemple.JPG

Sur ce userform, je voudrais qu'en cliquant sur le bouton, ça enregistre toutes les valeurs saisies dans une variable qui prendrait le nom choisi dans le combobox. Dans le cas présent, les infos seraient enregistrées dans la variable Voiture_1. Bien évidemment, anticiper d'avance toutes les valeurs que vont prendre ces variables et je voudrais même qu'il puisse y en avoir une infinité. Je ne peux donc déclarer et différencier mon code pour Voiture_1, Voiture_2, Voiture_3....

Je pensais donc pouvoir faire un code qui ressemble grosso modo à ça :

Code:
Public Type Voiture
    Marque as String
    Type as String
    Couleur as String
    Portes as Byte
End Type

Private Sub CommandButton1_Click()
    Dim Variable(ComboBox1.Text) As Voiture
    Variable(ComboBox1.Text).Marque = TextBox1
    Variable(ComboBox1.Text).Type = TextBox2
    Variable(ComboBox1.Text).Couleur = TextBox3
    Variable(ComboBox1.Text).Portes = TextBox4
End Sub

mais bien évidemment ça ne fonctionne pas.

Qqun aurais une idée ?
 

Pièces jointes

  • exemple.JPG
    exemple.JPG
    16.3 KB · Affichages: 206
  • exemple.JPG
    exemple.JPG
    16.3 KB · Affichages: 207
Dernière édition:

Troudz

XLDnaute Occasionnel
Re : Une variable qui varie........

Merci JNP mais ça n'est pas ça non plus. Décidément, j'ai du mal à me faire comprendre moi ce soir.
Je veux tout simplement enregistrer des valeurs dans une variable dont je ne peux pas prévoir le nom à l'avance.
C'est clair dans ma tête mais c'est la traduction pour le monde extérieur qui me pause problème ^^
 

Troudz

XLDnaute Occasionnel
Re : Une variable qui varie........

Petite explication qui pourrait clarifier tout ça :

Grosso modo, ce que je recherche ça serait une simplification du code suivant :

Code:
Private Sub CommandButton1_Click()
    Dim Voiture_1 As Voiture
    Dim Voiture_2 As Voiture
    Dim Voiture_3 As Voiture

    If ComboBox1 = Voiture_1 Then
        Voiture_1.Marque = TextBox1
        Voiture_1.Type = TextBox2
        Voiture_1.Couleur = TextBox3
        Voiture_1.Portes = TextBox4
    End if

    If ComboBox1 = Voiture_2 Then
        Voiture_2.Marque = TextBox1
        Voiture_2.Type = TextBox2
        Voiture_2.Couleur = TextBox3
        Voiture_2.Portes = TextBox4
    End if

....
End Sub

Cette simplification devrait permettre de ne pas avoir à anticiper toutes les valeurs que peut prendre Combobox1.
 
Dernière édition:

ibourk

XLDnaute Nouveau
Re : Une variable qui varie........

Bonjour
je suis nouveau sur le forum ,mais croyez moi que j'essaie de me concentrer sur ce que vous avez ecrit mais je comprend pas lorsque vous parlez sur des trucs comme ça Dim MonUSF As Object
Set MonUSF = UserForm1
MonUSF.Show
j'aime bien comprendre surtout que je passe toute la journée a travailler sur excel, j'aime bien savoir si ces codes vont m'aider

merci a vous
 

JNP

XLDnaute Barbatruc
Re : Une variable qui varie........

Re :),
Vois la pièce jointe avec un exemple d'utilisation de Type. Sinon, tu peux regarder du côté des modules de classe ;)...
@ Ibourk : Il s'agit du chargement d'un USF dans un objet, mais je ne sais pas si ça va t'expliquer beaucoup de choses :rolleyes:...
Bonne soirée :cool:
 

Pièces jointes

  • Exemple Type.xls
    40 KB · Affichages: 70

Troudz

XLDnaute Occasionnel
Re : Une variable qui varie........

Bon alors déjà, je vous prie de bien vouloir m'excuser pour le temps perdu à me faire comprendre. Je vous joins un véritable fichier exemple cette fois.

Regardez le code déclenché par l'évènement CommandButon1_Click. Plutôt que d'énumérer toutes les situations possibles (ce qui n'est pas vraiment possible), je voudrais "trouver automatiquement" le nom de la variable dans laquelle vont être stockée mes données.

Grosso modo, comment dire :
Code:
 - si Combobox1.Text = "Voiture_1" alors stocker les données dans la variable Voiture_1
    - si Combobox1.Text = "Voiture_2" alors stocker les données dans la variable Voiture_2
    - si Combobox1.Text = "Voiture_3" alors stocker les données dans la variable Voiture_3
    - etc......

en sachant que je ne peux pas prévoir à l'avance le nombre de valeurs possibles pour combobox.

J'ai fait le parallèle avec les userform car, si on voulait afficher le userform choisi dans un combobox, on pourrait transformer le code suivant :
Code:
    - If Combobox1.Text = "Userform1" Then Userform1.show
    - If Combobox1.Text = "Userform2" Then Userform2.show

en

Code:
    Userform(ComboBox1.Text).show


Bon ben j'espère que cette fois, ça sera suffisament claire pour tout le monde. Je crois que je peux pas faire mieux que ça.
 

Pièces jointes

  • Test.xls
    38.5 KB · Affichages: 94
  • Test.xls
    38.5 KB · Affichages: 75
  • Test.xls
    38.5 KB · Affichages: 75

Troudz

XLDnaute Occasionnel
Re : Une variable qui varie........

Merci pour ta réponse, tu es celui qui se rapproche le plus de ce que j'essaye d'obtenir.
Malheureusement, mon problème ne réside pas dans l'utilisation des variables Type.
Mon problème est de désigner une variable de destination par un string tout comme on pourrait le faire pour désigner un userform en faisant : Userform("Userform1").Show
 

JNP

XLDnaute Barbatruc
Re : Une variable qui varie........

Re :),
Pas sûr de comprendre ta problématique, mais tu peux essayer ton fichier modifié. Tu choisis plusieurs véhicules, et à chaque fois tu valides. Puis tu appui sur le CommandButton3 que j'ai rajouté ;)...
Bonne nuit :cool:
 

Pièces jointes

  • Voiture.xls
    52.5 KB · Affichages: 73
  • Voiture.xls
    52.5 KB · Affichages: 71
  • Voiture.xls
    52.5 KB · Affichages: 70

Troudz

XLDnaute Occasionnel
Re : Une variable qui varie........

Décidément j'ai du mal à me faire comprendre :confused::confused::confused:
Excusez moi de pas être suffisament clair pour exprimer ce que je veux.
En tout cas, merci à vous 5 de m'avoir aidé. Au final, la solution proposée par JNP convient quand même à ce que je veux faire. un grand merci à lui

J'aurai toutefois encore quelques questions techniques à vous poser.

Je voudrais désormais :
- charger toute la table Excel dans une variable
- ouvrir l'userform
- En fonction du choix effectué dans le combobox, charger la ligne correspondante dans l'userform (il doit pouvoir charger une ligne, la modifier, passer à une autre, revenir sur la précédente en tenant compte des modif déjà effectuées)
- ouvrir la possibilité à l'utilisateur de rajouter et de supprimer des lignes
- mettre la table Excel à jour uniquement lors de la fermeture du userform

Est ce que vous penser que l'utilisation d'un variable type définie comme ceci conviendrait à ce que je veux faire ???

Code:
'Définition de la variable
Type Voiture
    .Marque
    .Type
    .Couleur
End Type

'Chargement de la table Excel
Sub Chargement
    Dim Voitures() as Voiture
    Voitures(1).Marque = Cells(1,1)
    Voitures(1).Type = Cells(1,2)
    Voitures(1).Couleur = Cells(1,3)
    Voitures(1).Marque = Cells(2,1)
    Voitures(1).Type = Cells(2,2)
    Voitures(1).Couleur = Cells(2,3)
etc...
End sub
 

CBernardT

XLDnaute Barbatruc
Re : Une variable qui varie........

Bonjour à tous,

Si j'ai bien compris :cool:

Un essai pour enregistrer soit une modif des véhicules existants ou enregistrement d'un nouveau véhicule.
 

Pièces jointes

  • CataVoiture.xls
    45.5 KB · Affichages: 83
  • CataVoiture.xls
    45.5 KB · Affichages: 87
  • CataVoiture.xls
    45.5 KB · Affichages: 85
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 848
Messages
2 092 786
Membres
105 534
dernier inscrit
EmilieG60