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

Garder les infos d'un userform

C

carlos

Guest
Bonjour,


Dur, dur le lundi matin... -_-

Petit problème :

Comment conserver les infos d'userform sans avoir à conserver tout à l'aide de variables publiques déclarées. De plus, les valeurs du userform changent (pas encore justement) à chaque valeur du combobox?
Euh.. j'éspère que je suis clair?


Si vous avez une solution simple et rapide, merci bien .

C@rlos

PS : Je ne peux pas joindre ma macro, elle fait 72ko.
 
L

Lord Nelson

Guest
Salut Carlos,

Tu pourrais consacrer un onglet de classeur à cette tâche. Voici un exemple avec 3 TextBoxs à enregistrer dans une feuille intitulée "Paramètres".

A la fermeture de l'UserForm :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
With Sheets("Paramètres")
.Range("A1") = TextBox1
.Range("A2") = TextBox2
.Range("A3") = TextBox3
End With
End Sub

et à son ouverture :

Private Sub UserForm_Initialize()
With Sheets("Paramètres")
TextBox1 = .Range("A1")
TextBox2 = .Range("A2")
TextBox3 = .Range("A3")
End With
End Sub

A+
Horry
 
S

sousou

Guest
Bonjour Carlos.

A savoir qu'un userform est un objet comme un autre et qu'il conserve ses données tant qu'il n'est pas effacé de la mémoire.

Regarde cette exemple:

Dim un As UserForm1
Dim deux As UserForm1
Sub test()
Set un = UserForm1
un.Show
Set deux = UserForm1
deux.Show
MsgBox un.TextBox1 & " " & deux.TextBox1
End Sub
 
C

carlos

Guest
Merci Lord Nelson mais :

J'ai 30 valeurs de combobox qui engendrent chacun 40 textbox donc...
je sais pas si tu vois le problème mais je préfère une autre solution.
Merci quand même.

C@rlos
 
M

myDearFriend

Guest
Bonsoir Carlos, Lord Nelson et Sousou.


Carlos, et si tu créais un onglet caché et utilisais la propriété ControlSource des Textbox tout simplement ?

(Ou peut-être n'ai-je rien compris au problème...)


Cordialement,
Didier_mDF
 
L

Lord Nelson

Guest
Salut Carlos, Sousou et Didier,

Si j'ai bien compris, il ya 30 choix possibles dans la ComboBox et à chacun de ces choix correspondent 40 données à reporter dans les TextBoxs.
Cela nous fait donc 1200 données à enregistrer.
Je persiste à dire qu'un onglet dédié à cet effet pourrait fort bien convenir.
Tu pourrais ranger en colonnes les trente choix possibles de la combo et en lignes les 40 données à faire apparaître dans les TextBoxs.

Dans un cas de ce genre, on enregistrerait les données à chaque changement de la combo. Ce n'est peut-être pas aussi simple que tu l'aurais souhaité mais c'est jouable.

A+
Horry
 
C

carlos

Guest
Tout à fait d'accord Horry mais...
Le petit problème c'est que l'utilisateur doit :
1°)choisir une valeur du combobox
2°)remplir les textbox

De mon côté, je dois :
1°)conserver ces valeurs de textbox pour chaque combobox
2°)les faire réapparaitre quand l'utiliseur revient sur la même valeur de combobox.

Je comprends :
1°)Horry : ce serait trop long à programmer de faire une ligne pour chaque valeur de textbox/combobox
2°)De même pour un onglet qui implique aussi le 1°)

Ca représente une quantité gigantesque de valeurs. J'ajoute des comboboxs ts les jours et c'est pas fini.

Donc vous comprenez mon problème. Mais si je dois tout rentrer... je rentrerais tout! J'y avais déjà pensé -_-!

Y a-t-il un génie dans la place Je vais creuser le controlsource.

Merci tout le monde déjà.

A vos esprits de synthèse. Partez!

C@rlos
 
J

Jon

Guest
bonjour

il serait possible d'utiliser une plage nommée tableau,contenant le nom de l'objet et sa valeur.
une plage nommée peut même être cache je crois afin de ne pas apparaaître dans lemenu insertion, définir nom
Stéphane
 
D

david2

Guest
Salut à tous

pourquoi ne pas faire comme le propose Lord Nelson,

à chaque modif du textbox les cellules de ta feuille dédié se mettent à jours
toujours dans la même sub tu executes maintenant la mise à jours des textbox par le contenu des cellules de te feuille dédié.

exemple:

Private Sub TextBox1_Change()
call mettre_a_jours_cellules_via_textbox
call mettre_a_jour_textbox_via_cellules
End Sub
---------------------------------------
1) bien entendu mettre_a_jours_cellules_via_textbox ne va mettre à jours que le textbox modifié, tandis que mettre_a_jour_textbox_via_cellules
va modifier toutes les textbox pour rafraichir
2) dans ta feuille dédié aux paramètres il faut que tu est des lignes contenant le nom des textbox correspondant (textbox(0,textbox(1),textbox,...,(n)).
3) tu peux même ajouter des textbox dans l'avenir en les utilisant via un numéro d'index, numero que tu stockera dans ta feuille pour savoir combien tu as de Textbox


Ou alors j'ai vraiment rien compris

A++
 
L

Lord Nelson

Guest
Salut Carlos et tout le monde,

Tu trouveras joint un exemple d'USF dont les données sont sauvegardées sur une feuille.

A chaque changement de sélection dans la Combo, les données relatives à un pays s'affichent et peuvent être complétées ou modifiées.

Chaque sélection dans la Combo correspond à une colonne dans la feuille Excel où chaque ligne représente une donnée saisie dans l'USF (pour cet exemple la capitale, la population et la superficie).

Teste le et dis nous si ça ressemble à ce que tu cherches à obtenir.

A+
Horatio
 

Pièces jointes

  • TestUSF.zip
    10.4 KB · Affichages: 120
  • TestUSF.zip
    10.4 KB · Affichages: 115
  • TestUSF.zip
    10.4 KB · Affichages: 115

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…