Bouton précédent et userform vidé de ses réponses

Bonjour,

j''ai une problématique avec le questionnaire que je suis en train de faire avec des userforms.

Il s'agit d'un questionnaire avec plusieurs pages.

Quand on a finit de remplir la première page, qu'on passe à la suivante et qu'on revient à la première page par un commandbutton "précédent", toutes les réponses données sont effacées. On est obligé de tout recommencer.

Je souhaite que les réponses ne soient pas effacées quand on revient sur la page.

Petite précision, j'utilise le code "UserForm_Initialize()" lors de l'ouverture de chaque page pour pouvoir cacher une partie de la page (questions qui apparaissent au fur et à mesure).

Et lorsqu'on appuie sur le commandbutton "suite" pour aller à la page suivante, ça copie le contenu des textbox dans une page excel.

Je ne sais pas si les réponses disparaissent lorsque j'appuie sur "suite" ou au moment où je souhaite y revenir avec le bouton "précédent de la deuxième page à cause du code "UserForm_Initialize()" .

Dans ce cas, existe-t-il un code pour empêcher ça? genre quand j'appuie sur le bouton "suite", je mets un code qui annule "UserForm_Initialize()" au cas où on souhaite changer nos réponses.

Merci pour votre aide

Bonjour une piste

Une façon de résoudre ce problème est de stocker les réponses de l'utilisateur dans des variables ou des objets en mémoire au lieu de les stocker uniquement dans les contrôles du UserForm. De cette manière, lorsque vous revenez à la première page, vous pouvez recharger les réponses précédemment saisies à partir de ces variables ou objets. Voici comment vous pourriez procéder :

  1. Créez des variables ou des objets pour stocker les réponses de l'utilisateur. Vous pouvez les déclarer dans la partie déclarations du UserForm :
Dim reponsesPage1 As Collection ' Par exemple, utilisez une Collection pour stocker les réponses de la première page
  1. Lorsque l'utilisateur remplit les champs de la première page, ajoutez leurs valeurs à la variable ou à l'objet approprié. Vous pouvez le faire dans la procédure associée au bouton "suite" :
' Code pour enregistrer les réponses de la première page
Set reponsesPage1 = New Collection

reponsesPage1.Add Me.TextBox1.Value ' Remplacez TextBox1 par le nom de votre contrôle TextBox
reponsesPage1.Add Me.TextBox2.Value ' Remplacez TextBox2 par le nom de votre contrôle TextBox, etc.
' Ajoutez autant de lignes que nécessaire pour chaque contrôle de la première page
  1. Lorsque l'utilisateur revient à la première page en utilisant le bouton "précédent", utilisez la procédure associée au bouton pour recharger les réponses précédemment enregistrées :
' Code pour revenir à la première page et charger les réponses précédentes
Me.TextBox1.Value = reponsesPage1(1) ' Remplacez TextBox1 par le nom de votre contrôle TextBox
Me.TextBox2.Value = reponsesPage1(2) ' Remplacez TextBox2 par le nom de votre contrôle TextBox, etc.
' Ajoutez autant de lignes que nécessaire pour chaque contrôle de la première page

De cette manière, les réponses saisies par l'utilisateur sur la première page seront conservées dans la variable reponsesPage1, et vous pourrez les réafficher lorsque l'utilisateur reviendra à la première page en utilisant le bouton "précédent". Assurez-vous d'ajuster cela pour chaque page de votre questionnaire si nécessaire.

Merci beaucoup pour ces pistes. Je testerai ça ce soir après le boulot.

Bonsoir,

je viens donner des nouvelles.

Comme je galérais pour faire la piste suggérée, mon mari a bien voulu m'aider. Il a trouvé une autre solution.

A chaque fois que je valide un userform, les données des textbox sont automatiquement sauvegardés dans une page excel avec cette macro

Sheets("réponse_questionnaire").Activate

With Sheets("réponse_questionnaire")
Range("B3").Value = TextBox01.Value
End With

Du coup, quand j'appuies sur le bouton précédent de l'userform 2, cela active le sub-initialize de l'userform 1 ayant le code inverse

Sheets("réponse_questionnaire").Activate

With Sheets("réponse_questionnaire")
TextBox01.Value = Range("B3").Value
End With

NB seulement pour les débutants qui lieront peut-être un jour ma solution: réponse_questionnaire est le nom de la page où toutes mes réponses sont récupérées et B3 correspond à la case où je souhaite récupérer les données écrits dans textBox1. B=colonne 3=ligne

Voilà

Merci pour votre aide

Bonjours,

Du coup c'est bon ça fonctionne ? Mais avec ton fichier ça aurait été plus simple.

sans titre

j'avais essayé de mettre toutes mes questions dans un seul userform mais j'ai été limité par la taille maximale de l'userform.

En plus, j'utilise aussi des userform pour avoir des précisions selon la réponse à une des questions.

Ex: "est-ce que votre enfant a déjà été hospitalisé ?

Si le parent coche NON, ça fait apparaître la question suivante dans l'userform.

Si il coche OUI, ça ouvre une autre userform demandant au parent plus de précision. Et quand il a fini de préciser, il valide pour fermer l'userform correspondant et revenir à l'userform de départ qui est toujours affiché.

Ce soir, j'ai enfin fini mon questionnaire sur excel

Maintenant, il faut que je le fasse fonctionner sur libreoffice.

Merci beaucoup.

Rechercher des sujets similaires à "bouton precedent userform vide reponses"