Enregistrer l'etat d'un userform

Bonjour à tous

Je me prépare à créer un userform avec à l'intérieur des demandes de vérifications.Je me demande juste si je peux créer un bouton de sauvegarde temporaire qui permettrait d'enregistrer le classeur en gardant l'état de mon userform pour que quand je l'ouvre à nouveau je ne sois pas obligé de recocher les cases depuis le début.

Je n'ai pas de fichier d'exemple mais l'idée se résume ainsi :

  1. ouverture du userform.
  2. question A avec 3 choix de réponses.
  3. question B avec 3 choix de réponses.
  4. question C avec 3 choix de réponses
  5. etc....
  6. clic sur le bouton de sauvegarde temporaire
  7. déclenche enregistrement du classeur et sauvegarde l'état des réponses dans le userform

En espérant avoir été suffisamment clair.

Bonjour,

Il te faut utiliser une feuille cachée où tu inscrit tes valeurs à la fermeture de ta Form (UserForm_QueryClose) et les récupère à l'ouverture (UserForm_Initialize).

Si tu ne veux pas utiliser une feuille cachée, tu peux utiliser un nom ou encore la base de registre.

Hervé.

Merci Hervé pour la réponse

Peux tu me donner éventuellement des précisions sur l'utilisation du nom à la place de la feuille cachée.Cela veut -il dire que ton Query_Close = nom_de_variable ?

Merci

Bonjour,

Un exemple avec les valeurs de 3 TextBox et 1 CheckBox stockées dans des noms cachés de cette façon, même si l'utilisateur va dans la boite (Insertion->Nom->Définir...), les noms sont invisibles :

Private Sub UserForm_Initialize()

    Dim Nom As Name

    'si le nom n'existe pas
    On Error Resume Next

    Set Nom = ThisWorkbook.Names("TextBox1")
    If Err.Number = 0 Then
        TextBox1.Text = Split(Nom, """")(1)
    End If

    Set Nom = ThisWorkbook.Names("TextBox2")
    If Err.Number = 0 Then
        TextBox2.Text = Split(Nom, """")(1)
    End If

    Set Nom = ThisWorkbook.Names("TextBox3")
    If Err.Number = 0 Then
        TextBox3.Text = Split(Nom, """")(1)
    End If

    Set Nom = ThisWorkbook.Names("CheckBox1")
    If Err.Number = 0 Then
        CheckBox1.Value = CBool(Split(Nom, """")(1))
    End If

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    'inscrit les valeurs dans des Noms cachés
    ThisWorkbook.Names.Add "TextBox1", TextBox1.Text, False
    ThisWorkbook.Names.Add "TextBox2", TextBox2.Text, False
    ThisWorkbook.Names.Add "TextBox3", TextBox3.Text, False
    ThisWorkbook.Names.Add "CheckBox1", CStr(CheckBox1.Value), False

End Sub

Hervé.

Merci.

Je teste ça et je vais essayer d'adapter à ma convenance.

Rechercher des sujets similaires à "enregistrer etat userform"