OVH Cloud OVH Cloud

UserForm et formule

2 réponses
Avatar
Apitos
Bonjour,

Fichier avant.xls : http://cjoint.com/?jntlelKxTv

Fichier apres.xls : http://cjoint.com/?jntpmwMyvD

Cet exemple avec un UserForm =E0 pour r=F4le de permettre :

- La lecture et l'affichage dans le UserForm la valeur de la cellule
C11 (avec la formule C11=3DC11+B11) dans le TextBox2.

- La lecture et l'affichage dans le UserForm la valeur de la cellule
F11 dans le TextBox3.

- La saisie d'une valeur dans le TextBox1.

La proc=E9dure qui appelle le UserForm depuis la feuille Feuil1:

Private Sub CommandButton1_Click()
UserForm1.Show
UserForm1.TextBox1.Value =3D Sheets("Feuil1").Range("B11").Value
UserForm1.TextBox2.Value =3D Sheets("Feuil1").Range("C11").Value
UserForm1.TextBox3.Value =3D Sheets("Feuil1").Range("F11").Value
End Sub

Lors de premier lancement les valeurs de C11 et F11 n'apparairent pas.

Apr=E8s un deuxi=E8me clique, les TextBox2 et TextBox3 du UserForm1, sont
renseign=E9es des valeurs C11 et F11.

Donc pourquoi ce disfonctionnement ?

Ensuite quand on clique sur le bouton Valider du UserForm1:

Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("B11").Value =3D TextBox1.Value
Sheets("Feuil1").Range("F11").Value =3D TextBox3.Value + TextBox1.Value
Hide
End Sub

Des anomalies apparaissent :

- La formule circulaire dans C11 (C11=3DC11+B11) n'est pas prise en
compte, ce qui signifie que C11 reste inchangeable (garde la m=EAme
pr=E9c=E9dente).
- Si on ajoute la ligne :

Sheets("Feuil1").Range("C11").Value =3D TextBox2.Value + TextBox1.Value

Dans le click() du bouton Valider, la formule dans C11 (C11=3DC11+B11)
est simplement effacer est remplacer par une cha=EEne de caract=E8res (de
C11 et B11).

- La valeur de F11 au lieu d'=EAtre calcul=E9e, elle est consid=E9r=E9e
comment cha=EEne de caract=E8re et la valeur du TextBox1 vient seulement
juxtaposer l'ancienne valeur de F11 (Voir le fichier : Apres.xls).

Quelle erreur dans le code dois-je corriger ?

Merci.

2 réponses

Avatar
RV
Bonsoir Apitos,
Je ne suis pas sûr d'avoir tout compris, mais s'il faut remplir les textbox
alors colle ceci à la place de ton code:

Private Sub UserForm_Activate()
With UserForm1
.TextBox1.Value = Sheets("Feuil1").Range("B11").Value
.TextBox2.Value = Sheets("Feuil1").Range("C11").Value
.TextBox3.Value = Sheets("Feuil1").Range("F11").Value
End With
End Sub


Quant à ta référence circulaire le code est le suivant:

Sheets("Feuil1").Range("C11").Value = val(TextBox2) + val(TextBox1)

Bonne soirée
Hervé


"Apitos" a écrit dans le message de news:

Bonjour,

Fichier avant.xls : http://cjoint.com/?jntlelKxTv

Fichier apres.xls : http://cjoint.com/?jntpmwMyvD

Cet exemple avec un UserForm à pour rôle de permettre :

- La lecture et l'affichage dans le UserForm la valeur de la cellule
C11 (avec la formule C11Á1+B11) dans le TextBox2.

- La lecture et l'affichage dans le UserForm la valeur de la cellule
F11 dans le TextBox3.

- La saisie d'une valeur dans le TextBox1.

La procédure qui appelle le UserForm depuis la feuille Feuil1:

Private Sub CommandButton1_Click()
UserForm1.Show
UserForm1.TextBox1.Value = Sheets("Feuil1").Range("B11").Value
UserForm1.TextBox2.Value = Sheets("Feuil1").Range("C11").Value
UserForm1.TextBox3.Value = Sheets("Feuil1").Range("F11").Value
End Sub

Lors de premier lancement les valeurs de C11 et F11 n'apparairent pas.

Après un deuxième clique, les TextBox2 et TextBox3 du UserForm1, sont
renseignées des valeurs C11 et F11.

Donc pourquoi ce disfonctionnement ?

Ensuite quand on clique sur le bouton Valider du UserForm1:

Private Sub CommandButton1_Click()
Sheets("Feuil1").Range("B11").Value = TextBox1.Value
Sheets("Feuil1").Range("F11").Value = TextBox3.Value + TextBox1.Value
Hide
End Sub

Des anomalies apparaissent :

- La formule circulaire dans C11 (C11Á1+B11) n'est pas prise en
compte, ce qui signifie que C11 reste inchangeable (garde la même
précédente).
- Si on ajoute la ligne :

Sheets("Feuil1").Range("C11").Value = TextBox2.Value + TextBox1.Value

Dans le click() du bouton Valider, la formule dans C11 (C11Á1+B11)
est simplement effacer est remplacer par une chaîne de caractères (de
C11 et B11).

- La valeur de F11 au lieu d'être calculée, elle est considérée
comment chaîne de caractère et la valeur du TextBox1 vient seulement
juxtaposer l'ancienne valeur de F11 (Voir le fichier : Apres.xls).

Quelle erreur dans le code dois-je corriger ?

Merci.
Avatar
Apitos

Bonsoir Apitos,
Je ne suis pas sûr d'avoir tout compris, mais s'il faut remplir les tex tbox
alors colle ceci à la place de ton code:

Private Sub UserForm_Activate()
With UserForm1
.TextBox1.Value = Sheets("Feuil1").Range("B11").Value
.TextBox2.Value = Sheets("Feuil1").Range("C11").Value
.TextBox3.Value = Sheets("Feuil1").Range("F11").Value
End With
End Sub


Quant à ta référence circulaire le code est le suivant:

Sheets("Feuil1").Range("C11").Value = val(TextBox2) + val(TextBox1)

Bonne soirée
Hervé


Ca marche pour le moment.

Merci Hervé.