OVH Cloud OVH Cloud

Actualisation formule?

6 réponses
Avatar
Nangoustine
Bonjour à tous, j'ai un petit soucis dont je ne trouve pas la cause:

A l'ouverture de ma feuille excel, j'ai un useform qui se déclenche
contenant un Textbox et un CommandButton (pour valider le useform).
Lorsque l'utilisateur clique sur le CommandButton pour valider le useform,
le contenu de la Textbox est reporté en cellule A3. Tout ça marche impeccable.

Le problème est que j'ai des formules qui font références à cette cellule
A3, seulement ces formules ne prennent pas en compte les valeurs affichées en
A3 tant que je ne double clique pas sur la cellule. On dirait que les
formules liées ne sont pas actualisées tant que l'on ne clique pas dans la
cellule.

Avez vous une idée pour éviter de devoir rentrer dans les cellules pour que
les formules marchent?

Nangoustine
----------------------------------------------------------
Pour infos:
- Le code du Useform :
Private Sub CommandButton1_Click()
If Controls("Textbox1") = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer LA DATE !", vbExclamation, _
"ERREUR ... indiquer la date SVP !"
Controls("Textbox1").SetFocus
Exit Sub
End If
[A2] = UserForm1.TextBox1
Unload UserForm1
End Sub
---------------------------------------------------
Private Sub TextBox1_Change()
[A3] = UserForm1.TextBox1
End Sub
-----------------------------------------------
Private Sub UserForm_Click()

End Sub

- La formule fesant référence à A3 est la suivante:

=SI(ET($A$3>='Saisie enquête'!$B4;$A$3<='Saisie enquête'!$C4);"Oui";"Non")

6 réponses

Avatar
Michel Gaboly
Bonjour,

Même problème que pour Arnaud (fil Inversion des chiffres dans une date,
ce matin à 11h36, heure de Paris)

Un Textbox, comme son nom l'indique contient du texte, reporté comme tel
dans les cellules, si tu écris Range(xxx) = Textbox1.

Le contenu de la cellule n'est alors pas forcément reconnu correctement
par les formules qui s'y réfèrent; typiquement,dans une cellule non
formatée, un nombre alimenté par un Texbox sera aligné sur la gauche au
lieu de l'être sur la droite.

Quand tu cliques dans la cellule, puis valide, Excel reconnaît enfin
qu'il s'agit d'un nombre ou d'une date et tout rentre dans l'ordre.

C'est pourquoi, il vaut mieux bien souvent utiliser les fonctions de
conversion :

CDate pour une date
CInt pour un entier (jusqu'à 32768)
CLng pour un entier susceptible de dépasser 32768
...

Ici :

Range("A2") = CDate(Textbox1)

devrait faire l'affaire.


PS - Dans le code d'un UserForm, n'emploie jamais le nom du UserForm,
remplace-le par "Me" :

Unload Me

plutôt que

Unload UserForm1.

Outre le fait que c'est + court, le code continuera à fonctionner si
dans le projet contenant plusieurs UserForms, tu décides de leur donner
des noms plus parlant pour facliter la lecture du code.


Bonjour à tous, j'ai un petit soucis dont je ne trouve pas la cause:

A l'ouverture de ma feuille excel, j'ai un useform qui se déclenche
contenant un Textbox et un CommandButton (pour valider le useform).
Lorsque l'utilisateur clique sur le CommandButton pour valider le useform,
le contenu de la Textbox est reporté en cellule A3. Tout ça marche impeccable.

Le problème est que j'ai des formules qui font références à cette cellule
A3, seulement ces formules ne prennent pas en compte les valeurs affichées en
A3 tant que je ne double clique pas sur la cellule. On dirait que les
formules liées ne sont pas actualisées tant que l'on ne clique pas dans la
cellule.

Avez vous une idée pour éviter de devoir rentrer dans les cellules pour que
les formules marchent?

Nangoustine
----------------------------------------------------------
Pour infos:
- Le code du Useform :
Private Sub CommandButton1_Click()
If Controls("Textbox1") = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer LA DATE !", vbExclamation, _
"ERREUR ... indiquer la date SVP !"
Controls("Textbox1").SetFocus
Exit Sub
End If
[A2] = UserForm1.TextBox1
Unload UserForm1
End Sub
---------------------------------------------------
Private Sub TextBox1_Change()
[A3] = UserForm1.TextBox1
End Sub
-----------------------------------------------
Private Sub UserForm_Click()

End Sub

- La formule fesant référence à A3 est la suivante:

=SI(ET($A$3>='Saisie enquête'!$B4;$A$3<='Saisie enquête'!$C4);"Oui";"Non")





--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
anomymousA
bonjour,

c'est exact , mais on peut se passer de cet artifice pour les formules
simples ( et notamment non booléennes car dans ce cas les opérateurs de
comparaison en dehors de = ou <> peuvent poser problèmes ) où Excel est de
bonne composition et accepte quand même de faire des calculs car un nombre
même en texte reste quand même reconnaissable pour lui. p.e si dans la
cellule A4 on a £+2 ou =SI(A2<>8;"OK";"PB") , cette formule sera calculée.

A+


Bonjour à tous, j'ai un petit soucis dont je ne trouve pas la cause:

A l'ouverture de ma feuille excel, j'ai un useform qui se déclenche
contenant un Textbox et un CommandButton (pour valider le useform).
Lorsque l'utilisateur clique sur le CommandButton pour valider le useform,
le contenu de la Textbox est reporté en cellule A3. Tout ça marche impeccable.

Le problème est que j'ai des formules qui font références à cette cellule
A3, seulement ces formules ne prennent pas en compte les valeurs affichées en
A3 tant que je ne double clique pas sur la cellule. On dirait que les
formules liées ne sont pas actualisées tant que l'on ne clique pas dans la
cellule.

Avez vous une idée pour éviter de devoir rentrer dans les cellules pour que
les formules marchent?

Nangoustine
----------------------------------------------------------
Pour infos:
- Le code du Useform :
Private Sub CommandButton1_Click()
If Controls("Textbox1") = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer LA DATE !", vbExclamation, _
"ERREUR ... indiquer la date SVP !"
Controls("Textbox1").SetFocus
Exit Sub
End If
[A2] = UserForm1.TextBox1
Unload UserForm1
End Sub
---------------------------------------------------
Private Sub TextBox1_Change()
[A3] = UserForm1.TextBox1
End Sub
-----------------------------------------------
Private Sub UserForm_Click()

End Sub

- La formule fesant référence à A3 est la suivante:

=SI(ET($A$3>='Saisie enquête'!$B4;$A$3<='Saisie enquête'!$C4);"Oui";"Non")




Avatar
Nangoustine
Merci Michel, c'est vrai que ça marche avec -Range("A2") = CDate(Textbox1)-,
les formules fonctionnent maintenant.
Mais il reste un soucis: dans mon textbox où je rentre mes dates, je suis
maintenant obligé de noter le jour par rapport au 1er janvier 1900: 38500
pour le 28 Mai 2005. J'aurai voulu que les dates puissent y être rentrées
jjmmaaaa.
Auriez vous un complément de solution?

Nangoustine


Bonjour,

Même problème que pour Arnaud (fil Inversion des chiffres dans une date,
ce matin à 11h36, heure de Paris)

Un Textbox, comme son nom l'indique contient du texte, reporté comme tel
dans les cellules, si tu écris Range(xxx) = Textbox1.

Le contenu de la cellule n'est alors pas forcément reconnu correctement
par les formules qui s'y réfèrent; typiquement,dans une cellule non
formatée, un nombre alimenté par un Texbox sera aligné sur la gauche au
lieu de l'être sur la droite.

Quand tu cliques dans la cellule, puis valide, Excel reconnaît enfin
qu'il s'agit d'un nombre ou d'une date et tout rentre dans l'ordre.

C'est pourquoi, il vaut mieux bien souvent utiliser les fonctions de
conversion :

CDate pour une date
CInt pour un entier (jusqu'à 32768)
CLng pour un entier susceptible de dépasser 32768
....

Ici :

Range("A2") = CDate(Textbox1)

devrait faire l'affaire.


PS - Dans le code d'un UserForm, n'emploie jamais le nom du UserForm,
remplace-le par "Me" :

Unload Me

plutôt que

Unload UserForm1.

Outre le fait que c'est + court, le code continuera à fonctionner si
dans le projet contenant plusieurs UserForms, tu décides de leur donner
des noms plus parlant pour facliter la lecture du code.


Bonjour à tous, j'ai un petit soucis dont je ne trouve pas la cause:

A l'ouverture de ma feuille excel, j'ai un useform qui se déclenche
contenant un Textbox et un CommandButton (pour valider le useform).
Lorsque l'utilisateur clique sur le CommandButton pour valider le useform,
le contenu de la Textbox est reporté en cellule A3. Tout ça marche impeccable.

Le problème est que j'ai des formules qui font références à cette cellule
A3, seulement ces formules ne prennent pas en compte les valeurs affichées en
A3 tant que je ne double clique pas sur la cellule. On dirait que les
formules liées ne sont pas actualisées tant que l'on ne clique pas dans la
cellule.

Avez vous une idée pour éviter de devoir rentrer dans les cellules pour que
les formules marchent?

Nangoustine
----------------------------------------------------------
Pour infos:
- Le code du Useform :
Private Sub CommandButton1_Click()
If Controls("Textbox1") = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer LA DATE !", vbExclamation, _
"ERREUR ... indiquer la date SVP !"
Controls("Textbox1").SetFocus
Exit Sub
End If
[A2] = UserForm1.TextBox1
Unload UserForm1
End Sub
---------------------------------------------------
Private Sub TextBox1_Change()
[A3] = UserForm1.TextBox1
End Sub
-----------------------------------------------
Private Sub UserForm_Click()

End Sub

- La formule fesant référence à A3 est la suivante:

=SI(ET($A$3>='Saisie enquête'!$B4;$A$3<='Saisie enquête'!$C4);"Oui";"Non")





--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
Michel Gaboly
De rien ;-))

En principe une version française d'Excel accepte dans un Textbox une
date au format "jj/mm/aa", sans formatage particulier.

"jjmmaaaa" n'est pas reconnu directement, pas non plus dans une cellule
Excel : aucun moyen de le différencier d'un nombre à 8 chiffres.

On peut toutefois écrire (non testé)

Dim Annee as Integer, Mois as Integer, Jour as Integer
Annee = Right(Textbox1,4)
Mois = Mid(TextBox1,3,2)
Jour = Left(TextBox1,2)
Range("A2") = DateSerial(Annee, Mois, Jour)

ou

Range("A2") = DateSerial(Right(Textbox1,4), Mid(TextBox1,3,2),
Left(TextBox1,2))

sur 1 seule ligne

DateSerial est une fonction équivalente à la fonction DATE() dans une
feuille de calcul ; dans les 2 cas, 3 arguments sont à fournir, dans
l'ordre, l'année, le mois et le jour.

Mais cela a comme inconvenient est qu'il est impératif que l'utilisateur
entre 8 caractères. Cella implique en l'occurrence la mise en place d'un
contrôle de saisie. C'est pourquoi, la saisie au format est probablement
+ simple, avec en particulier le fait que pour l'année civile, jj/mm,
voire j/m est accepté.


Merci Michel, c'est vrai que ça marche avec -Range("A2") = CDate(Textbox1)-,
les formules fonctionnent maintenant.
Mais il reste un soucis: dans mon textbox où je rentre mes dates, je suis
maintenant obligé de noter le jour par rapport au 1er janvier 1900: 38500
pour le 28 Mai 2005. J'aurai voulu que les dates puissent y être rentrées
jjmmaaaa.
Auriez vous un complément de solution?

Nangoustine



Bonjour,

Même problème que pour Arnaud (fil Inversion des chiffres dans une date,
ce matin à 11h36, heure de Paris)

Un Textbox, comme son nom l'indique contient du texte, reporté comme tel
dans les cellules, si tu écris Range(xxx) = Textbox1.

Le contenu de la cellule n'est alors pas forcément reconnu correctement
par les formules qui s'y réfèrent; typiquement,dans une cellule non
formatée, un nombre alimenté par un Texbox sera aligné sur la gauche au
lieu de l'être sur la droite.

Quand tu cliques dans la cellule, puis valide, Excel reconnaît enfin
qu'il s'agit d'un nombre ou d'une date et tout rentre dans l'ordre.

C'est pourquoi, il vaut mieux bien souvent utiliser les fonctions de
conversion :

CDate pour une date
CInt pour un entier (jusqu'à 32768)
CLng pour un entier susceptible de dépasser 32768
....

Ici :

Range("A2") = CDate(Textbox1)

devrait faire l'affaire.


PS - Dans le code d'un UserForm, n'emploie jamais le nom du UserForm,
remplace-le par "Me" :

Unload Me

plutôt que

Unload UserForm1.

Outre le fait que c'est + court, le code continuera à fonctionner si
dans le projet contenant plusieurs UserForms, tu décides de leur donner
des noms plus parlant pour facliter la lecture du code.



Bonjour à tous, j'ai un petit soucis dont je ne trouve pas la cause:

A l'ouverture de ma feuille excel, j'ai un useform qui se déclenche
contenant un Textbox et un CommandButton (pour valider le useform).
Lorsque l'utilisateur clique sur le CommandButton pour valider le useform,
le contenu de la Textbox est reporté en cellule A3. Tout ça marche impeccable.

Le problème est que j'ai des formules qui font références à cette cellule
A3, seulement ces formules ne prennent pas en compte les valeurs affichées en
A3 tant que je ne double clique pas sur la cellule. On dirait que les
formules liées ne sont pas actualisées tant que l'on ne clique pas dans la
cellule.

Avez vous une idée pour éviter de devoir rentrer dans les cellules pour que
les formules marchent?

Nangoustine
----------------------------------------------------------
Pour infos:
- Le code du Useform :
Private Sub CommandButton1_Click()
If Controls("Textbox1") = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer LA DATE !", vbExclamation, _
"ERREUR ... indiquer la date SVP !"
Controls("Textbox1").SetFocus
Exit Sub
End If
[A2] = UserForm1.TextBox1
Unload UserForm1
End Sub
---------------------------------------------------
Private Sub TextBox1_Change()
[A3] = UserForm1.TextBox1
End Sub
-----------------------------------------------
Private Sub UserForm_Click()

End Sub

- La formule fesant référence à A3 est la suivante:

=SI(ET($A$3>='Saisie enquête'!$B4;$A$3<='Saisie enquête'!$C4);"Oui";"Non")





--
Cordialement,

Michel Gaboly
www.gaboly.com





--
Cordialement,

Michel Gaboly
www.gaboly.com



Avatar
Nangoustine
Salut Michel et encore merci, ça marche impecable effectivement.
J'avais fait une erreur : j'avais rentrer "Range("A3") = CDate(TextBox1)"
dans le code du Textbox1 et du bouton de validation "CommandButton1_Click()".
Il ne le fallait que dans le code du bouton de validation.

Merci aussi anonymousA pour ta contribution, mais dans mon cas, même avec
des formules relativement simples ça ne marchait pas sans passer par CDate,
Excel n'était pas trés coopératif :-(

Bonne journée, @+
Nangoustine

------------------------------------------------------------------------------------------------



Merci Michel, c'est vrai que ça marche avec -Range("A2") = CDate(Textbox1)-,
les formules fonctionnent maintenant.
Mais il reste un soucis: dans mon textbox où je rentre mes dates, je suis
maintenant obligé de noter le jour par rapport au 1er janvier 1900: 38500
pour le 28 Mai 2005. J'aurai voulu que les dates puissent y être rentrées
jjmmaaaa.
Auriez vous un complément de solution?

Nangoustine


Bonjour,

Même problème que pour Arnaud (fil Inversion des chiffres dans une date,
ce matin à 11h36, heure de Paris)

Un Textbox, comme son nom l'indique contient du texte, reporté comme tel
dans les cellules, si tu écris Range(xxx) = Textbox1.

Le contenu de la cellule n'est alors pas forcément reconnu correctement
par les formules qui s'y réfèrent; typiquement,dans une cellule non
formatée, un nombre alimenté par un Texbox sera aligné sur la gauche au
lieu de l'être sur la droite.

Quand tu cliques dans la cellule, puis valide, Excel reconnaît enfin
qu'il s'agit d'un nombre ou d'une date et tout rentre dans l'ordre.

C'est pourquoi, il vaut mieux bien souvent utiliser les fonctions de
conversion :

CDate pour une date
CInt pour un entier (jusqu'à 32768)
CLng pour un entier susceptible de dépasser 32768
....

Ici :

Range("A2") = CDate(Textbox1)

devrait faire l'affaire.


PS - Dans le code d'un UserForm, n'emploie jamais le nom du UserForm,
remplace-le par "Me" :

Unload Me

plutôt que

Unload UserForm1.

Outre le fait que c'est + court, le code continuera à fonctionner si
dans le projet contenant plusieurs UserForms, tu décides de leur donner
des noms plus parlant pour facliter la lecture du code.


Bonjour à tous, j'ai un petit soucis dont je ne trouve pas la cause:

A l'ouverture de ma feuille excel, j'ai un useform qui se déclenche
contenant un Textbox et un CommandButton (pour valider le useform).
Lorsque l'utilisateur clique sur le CommandButton pour valider le useform,
le contenu de la Textbox est reporté en cellule A3. Tout ça marche impeccable.

Le problème est que j'ai des formules qui font références à cette cellule
A3, seulement ces formules ne prennent pas en compte les valeurs affichées en
A3 tant que je ne double clique pas sur la cellule. On dirait que les
formules liées ne sont pas actualisées tant que l'on ne clique pas dans la
cellule.

Avez vous une idée pour éviter de devoir rentrer dans les cellules pour que
les formules marchent?

Nangoustine
----------------------------------------------------------
Pour infos:
- Le code du Useform :
Private Sub CommandButton1_Click()
If Controls("Textbox1") = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer LA DATE !", vbExclamation, _
"ERREUR ... indiquer la date SVP !"
Controls("Textbox1").SetFocus
Exit Sub
End If
[A2] = UserForm1.TextBox1
Unload UserForm1
End Sub
---------------------------------------------------
Private Sub TextBox1_Change()
[A3] = UserForm1.TextBox1
End Sub
-----------------------------------------------
Private Sub UserForm_Click()

End Sub

- La formule fesant référence à A3 est la suivante:

=SI(ET($A$3>='Saisie enquête'!$B4;$A$3<='Saisie enquête'!$C4);"Oui";"Non")





--
Cordialement,

Michel Gaboly
www.gaboly.com






Avatar
Michel Gaboly
De rien bis ;-))

Salut Michel et encore merci, ça marche impecable effectivement.
J'avais fait une erreur : j'avais rentrer "Range("A3") = CDate(TextBox1)"
dans le code du Textbox1 et du bouton de validation "CommandButton1_Click()".
Il ne le fallait que dans le code du bouton de validation.

Merci aussi anonymousA pour ta contribution, mais dans mon cas, même avec
des formules relativement simples ça ne marchait pas sans passer par CDate,
Excel n'était pas trés coopératif :-(

Bonne journée, @+
Nangoustine

------------------------------------------------------------------------------------------------




Merci Michel, c'est vrai que ça marche avec -Range("A2") = CDate(Textbox1)-,
les formules fonctionnent maintenant.
Mais il reste un soucis: dans mon textbox où je rentre mes dates, je suis
maintenant obligé de noter le jour par rapport au 1er janvier 1900: 38500
pour le 28 Mai 2005. J'aurai voulu que les dates puissent y être rentrées
jjmmaaaa.
Auriez vous un complément de solution?

Nangoustine



Bonjour,

Même problème que pour Arnaud (fil Inversion des chiffres dans une date,
ce matin à 11h36, heure de Paris)

Un Textbox, comme son nom l'indique contient du texte, reporté comme tel
dans les cellules, si tu écris Range(xxx) = Textbox1.

Le contenu de la cellule n'est alors pas forcément reconnu correctement
par les formules qui s'y réfèrent; typiquement,dans une cellule non
formatée, un nombre alimenté par un Texbox sera aligné sur la gauche au
lieu de l'être sur la droite.

Quand tu cliques dans la cellule, puis valide, Excel reconnaît enfin
qu'il s'agit d'un nombre ou d'une date et tout rentre dans l'ordre.

C'est pourquoi, il vaut mieux bien souvent utiliser les fonctions de
conversion :

CDate pour une date
CInt pour un entier (jusqu'à 32768)
CLng pour un entier susceptible de dépasser 32768
....

Ici :

Range("A2") = CDate(Textbox1)

devrait faire l'affaire.


PS - Dans le code d'un UserForm, n'emploie jamais le nom du UserForm,
remplace-le par "Me" :

Unload Me

plutôt que

Unload UserForm1.

Outre le fait que c'est + court, le code continuera à fonctionner si
dans le projet contenant plusieurs UserForms, tu décides de leur donner
des noms plus parlant pour facliter la lecture du code.



Bonjour à tous, j'ai un petit soucis dont je ne trouve pas la cause:

A l'ouverture de ma feuille excel, j'ai un useform qui se déclenche
contenant un Textbox et un CommandButton (pour valider le useform).
Lorsque l'utilisateur clique sur le CommandButton pour valider le useform,
le contenu de la Textbox est reporté en cellule A3. Tout ça marche impeccable.

Le problème est que j'ai des formules qui font références à cette cellule
A3, seulement ces formules ne prennent pas en compte les valeurs affichées en
A3 tant que je ne double clique pas sur la cellule. On dirait que les
formules liées ne sont pas actualisées tant que l'on ne clique pas dans la
cellule.

Avez vous une idée pour éviter de devoir rentrer dans les cellules pour que
les formules marchent?

Nangoustine
----------------------------------------------------------
Pour infos:
- Le code du Useform :
Private Sub CommandButton1_Click()
If Controls("Textbox1") = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer LA DATE !", vbExclamation, _
"ERREUR ... indiquer la date SVP !"
Controls("Textbox1").SetFocus
Exit Sub
End If
[A2] = UserForm1.TextBox1
Unload UserForm1
End Sub
---------------------------------------------------
Private Sub TextBox1_Change()
[A3] = UserForm1.TextBox1
End Sub
-----------------------------------------------
Private Sub UserForm_Click()

End Sub

- La formule fesant référence à A3 est la suivante:

=SI(ET($A$3>='Saisie enquête'!$B4;$A$3<='Saisie enquête'!$C4);"Oui";"Non")





--
Cordialement,

Michel Gaboly
www.gaboly.com






--
Cordialement,

Michel Gaboly
www.gaboly.com