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

thomanneca -  
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

4 réponses

Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour

Pour quoi la boucle For j = 2 to 11 ? j n'est utilisé nul part !!!
0
thomanneca
 
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
thomanneca
 
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   Statut Membre Dernière intervention   1 204
 
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
thomanneca
 
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   Statut Membre Dernière intervention   1 204
 
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
thomanneca
 
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
thomanneca
 
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   Statut Membre Dernière intervention   1 204
 
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