Garder en mémoire les données d'une userform après fermeture

Fermé
thomanneca - Modifié par thomanneca le 26/01/2014 à 17:16
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 26 janv. 2014 à 18:42
Bonjour,
J'aimerais conserver en mémoire lors d'une réouverture de mon fichier excel les données précédemment introduite dans mon userform.
J'arrive à les stocker sur une autre page mais je ne parviens pas à aller les rechercher.

Voici mon code :

Private Sub JoursFeries_Click() 'quand je clic sur un bouton, mon userform s'ouvre
userform1.Show


For i = 1 To 30
For j = 2 To 11
userform1.Controls("TextBox" & i).Value = Sheets("data vba").Range("B" & i + 1).Value
Next
Next


'ou même plus simplement pour un test :

userform1.textbox1.value=sheets("data vba").range("B2").value

End Sub

merci d'avance

4 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
26 janv. 2014 à 17:18
Bonjour

Pour quoi la boucle For j = 2 to 11 ? j n'est utilisé nul part !!!
0
oui pardon,

Private Sub JoursFeries_Click() 'quand je clic sur un bouton, mon userform s'ouvre 
userform1.Show
For i = 1 To 30
For j = 2 To 11
userform1.Controls("TextBox" & i).Value = Sheets("data vba").Range("B" & j + 1).Value
Next
Next
0
en fait je crois bien que cela ne marchera pas en effet. Reprenons un simple retour de donnée pour une cellule alors, je regarderai après pour les autres


Private Sub JoursFeries_Click()
userform1.Show
userform1.textbox1.value=sheets("data vba").range("B2").value

même cela ne marche pas
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
Modifié par Polux31 le 26/01/2014 à 17:32
Tu as donc 30 textboxes mais il n'y a que 10 cellules de renseignées !!! tu as la valeur de la même cellule dans 3 textboxes ?

Pourquoi faire For j = 2 to 11 pour ensuite faire Range("B" & j + 1).Value ?
Autant faire For j = 3 to 12 ? non ?

«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
0
oui tout à fait, je dois changer cela.
Je ne m'y étais pas encore attardé étant donné que l'objectif premier est de faire revenir l'info, après je verrai pour raccourcir s'il y a moyen..
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
26 janv. 2014 à 18:01
Heuuu nan, ça ne fonctionne pas tout à fait comme ça ... Si l'algo n'est pas bon, le code ne fonctionnera pas !!! et ici l'algo ne donne pas ce que tu cherches à faire ...

Tu dis avoir réussi à sauvegarder les infos de l'UF dans une feuille ... peux-tu mettre ici le code stp ?
0
Private Sub BoutonValiderJoursFeries_Click()
Application.ScreenUpdating = False

With Sheets("data vba")
.[B2] = userform1.TextBox1.Value
.Range("C2") = userform1.TextBox2.Value
.Range("D2") = userform1.TextBox3.Value

.Range("B3") = userform1.TextBox4.Value
.Range("C3") = userform1.TextBox5.Value
.Range("D3") = userform1.TextBox6.Value

.Range("B4") = userform1.TextBox7.Value
.Range("C4") = userform1.TextBox8.Value
.Range("D4") = userform1.TextBox9.Value

.Range("B5") = userform1.TextBox10.Value
.Range("C5") = userform1.TextBox11.Value
.Range("D5") = userform1.TextBox12.Value

.Range("B6") = userform1.TextBox13.Value
.Range("C6") = userform1.TextBox14.Value
.Range("D6") = userform1.TextBox15.Value

.Range("B7") = userform1.TextBox16.Value
.Range("C7") = userform1.TextBox17.Value
.Range("D7") = userform1.TextBox18.Value

.Range("B8") = userform1.TextBox19.Value
.Range("C8") = userform1.TextBox20.Value
.Range("D8") = userform1.TextBox21.Value

.Range("B9") = userform1.TextBox22.Value
.Range("C9") = userform1.TextBox23.Value
.Range("D9") = userform1.TextBox24.Value

.Range("B10") = userform1.TextBox25.Value
.Range("C10") = userform1.TextBox26.Value
.Range("D10") = userform1.TextBox27.Value

.Range("B11") = userform1.TextBox28.Value
.Range("C11") = userform1.TextBox29.Value
.Range("D11") = userform1.TextBox30.Value

End With
0
voici le code et jusque la, tout fonctionne correctement.
me reste à conserver les données lors de la fermeture du fichier..
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
26 janv. 2014 à 18:21
Il suffit de faire l'inverse ...

C'est à dire:

With userform1
     .TextBox1.Text = Sheets("data vba").Range("B2").Value
     .TextBox2.Text = Sheets("data vba").Range("C2").Value
     .TextBox3.Text = Sheets("data vba").Range("D2").Value
' .... etc ...
End With


Et de coller ça dans l'évènement UserForm_Initialize() de l'userform1.
0