Remplir tableau dynamique Userform

Résolu/Fermé
ezor Messages postés 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 - Modifié par ezor le 28/12/2015 à 19:47
ezor Messages postés 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 - 29 déc. 2015 à 02:12
Bonjour à tous,

Je cherche à récupérer un ensemble d'entier que l'utilisateur entre dans un userform que j'ai créé. J'ai donc fait un tableau dynamique, et je souhaite entrer les valeurs au fur et à mesure (à chaque fois que l'on clique sur le bouton "ajouter").

J'ai donc le code suivant dans mon userform
Public fin_entrez_val as Booleen

Private Sub BoutonAjouter_Click()
rep_userform = TextBox1 'je stock la réponse entrée dans "rep_userform"
TextBox1 = "" 
End Sub

Private Sub BoutonAetF_Click() 'ce bouton doit enregistrer la dernière valeur puis fermer l'userform
rep_userform = TextBox1
fin_entrez_val = True
Unload Me
End Sub


et dans la macro elle-même, j'ai la routine suivante

Dim tab_val_pos() as Integer
Dim fin_entrez_val as Booleen
fin_entrez_val = False

Public Sub ask_val()

Dim compt As Integer
compt = 0

'Je veux ici enregistrer les valeurs dans le tableau à chaque clic du bouton ajouter, et sortir de la boucle une fois que l'on a cliqué sur le bouton AetF
Do
boite_diag.Show
ReDim Preserve tab_val_pos(compt)

tab_val_pos(compt) = rep_userform 'valeur entrée dans la boite de diag
compt = compt + 1
Loop While (fin_entrez_val = False)

fin_ask_val = True 'un booleen qui sert dans une autre macro, sans importance ici
End Sub



Le problème est le suivant : mon userform est impossible à fermer. Quand je clic sur A&F, il se réouvre, comme si le booleen fin_entrez_val était toujours à False au lieu de passer à True avant la fermeture (et donc faire sortir de la boucle do while)

J'ai essayé avec une boucle While, en déclarant fin_entrez_val dans la macro (toujours en public) mais pas de réusltat.

J'espère que c'est assez clair. Merci d'avance pour votre aide,



ezor
A voir également:

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
28 déc. 2015 à 20:20
Bonjour,

Tu dois déclarer ta variable de FIN en public et non dans la fonction elle même.
https://silkyroad.developpez.com/VBA/LesVariables/#LV

.

0
ezor Messages postés 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 11
Modifié par ezor le 28/12/2015 à 20:53
merci pour ta réponse.
Elle est déjà en public, dans la "zone" de déclaration.

EDIT : elle n'était effectivement pas dans un module mais dans la page de la "feuille 1". Je vais voir en changeant ça.
0
ezor Messages postés 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 11
28 déc. 2015 à 20:58
ça semble fonctionner. Merci pour ton aide.
Si tu peux me dire en plus d'où vient "l'incompatibilité de type" qui m'est retourné quand je sors, alors ce sera parfait ;)
0
ezor Messages postés 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 11
28 déc. 2015 à 22:25
J'ai un deuxième problème, toujours avec le même programme. Je n'enregistre que la dernière valeur rentrée, car c'est seulement en quittant le Userform que je re-rentre dans ma boucle do-while (en d'autre terme, mon compteur ne va que jusqu'à 1).

Y a t il une solution pour assurer l'aller retour entre la macro (la boucle do-while) et l'userform (le clic sur l'un des boutons?)

merci
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
29 déc. 2015 à 01:41
Lorsque la macro s'arrête... les variables se vident...
Il ne te reste qu'à sauvegarder ta variable dans une feuille cachée de ton classeur et aller la rechercher à chaque fois que tu réouvres ton userform.
0
ezor Messages postés 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 11
29 déc. 2015 à 02:12
la macro globale (celle qui gère l'ouverture de l'userform entre autre) ne s'arrete pas, et la valeur du champ de saisie est enregistrée dans une variable public d'un module. Et c'est justement cette variable que je veux stocker à chaque fois dnas un tableau
0