Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA: Valider automatiquement une formule

10 réponses
Avatar
Stach
Bonjour,

Par automation VBA, je crée une formule par concaténation. Je colle cette
formule dans une cellule que j'ai préalablement mise au format "texte".

Pour que le calcul s'effectue, je remets (toujours par vba) la cellule au
format "0.00".

Seulement, pour que le calcul s'effectue dans la cellule, je dois avec ma
souris sélectionner la cellule, clicquer dans la formule dans la barre de
formule puis faire "enter". Comment réaliser ces dernières opérations par VBA?

Merci bien.

Stach ;-)

10 réponses

Avatar
michdenis
Bonjour Stach,


Tu formates ta cellules au format standard et tu ajoutes ta formule.

Range("A1").NumberFormat = "General"
Range("A1").FormulaLocal = "±"
Ou comme ceci selon ta préférence ...
Range("A1").Formula = "±"



Salutations!



"Stach" a écrit dans le message de news:
Bonjour,

Par automation VBA, je crée une formule par concaténation. Je colle cette
formule dans une cellule que j'ai préalablement mise au format "texte".

Pour que le calcul s'effectue, je remets (toujours par vba) la cellule au
format "0.00".

Seulement, pour que le calcul s'effectue dans la cellule, je dois avec ma
souris sélectionner la cellule, clicquer dans la formule dans la barre de
formule puis faire "enter". Comment réaliser ces dernières opérations par VBA?

Merci bien.

Stach ;-)
Avatar
PMO
Bonjour,

Si j'ai bien compris

Hypothèse: La colonne A est renseignée par des
nombres et on veut calculer la somme de la plage
A1 à A3 (par exemple) avec le résultat qui s'affiche
en C1.

1) Simulation de ce que vous décrivez
'**********
Sub votreFormule()
Dim Adresse1 As String
Dim Adresse2 As String
Adresse1 = "a1"
Adresse2 = "a3"
[c1].NumberFormat = "@"
[c1].Formula = "=somme(" & Adresse1 & ":" & Adresse2 & ")"
[c1].NumberFormat = "0.00"
End Sub
'**********
Effectivement dans ce cas, on est obligé de cliquer
dans la barre de formule et d'entériner

2) Procédez plutôt comme suit
'**********
Sub FormuleModifiee()
Dim Adresse1 As String
Dim Adresse2 As String
Adresse1 = "a1"
Adresse2 = "a3"
[c1].Formula = "=sum(" & Adresse1 & ":" & Adresse2 & ")"
End Sub
'**********
On a entré la formule en langage VBA (sum) et non
pas en language de l'utilisateur (somme).
Pour trouver les fonctions en langage VBA allez dans
l'explorateur d'objets (raccourci F2) et consultez la
liste de l'objet WorksheetFunction.

Cordialement.

--
PMO
Patrick Morange



Bonjour,

Par automation VBA, je crée une formule par concaténation. Je colle cette
formule dans une cellule que j'ai préalablement mise au format "texte".

Pour que le calcul s'effectue, je remets (toujours par vba) la cellule au
format "0.00".

Seulement, pour que le calcul s'effectue dans la cellule, je dois avec ma
souris sélectionner la cellule, clicquer dans la formule dans la barre de
formule puis faire "enter". Comment réaliser ces dernières opérations par VBA?

Merci bien.

Stach ;-)




Avatar
Stach
Salut,

J'ai essayer ta solution ainsi que l'autre proposée, mais au lieu de me
donnée la valeur calculée dans la cellule, il de donne ma formule:

U,24-(((55,24-54,74)/(1,58-0,41))*(1,58-0,41))

si je veux obtenir la valeur dans la cellule je dois clicquer dans la barre
de formule puis faire "enter" ou alors, faire "F2" puis "F9" et ensuite
"enter".

Ce que je voudrai c'est avoir automatiquement le résultat du calcul et pas
sa formule.

Merci encore

Stach ;-)


Bonjour Stach,


Tu formates ta cellules au format standard et tu ajoutes ta formule.

Range("A1").NumberFormat = "General"
Range("A1").FormulaLocal = "±"
Ou comme ceci selon ta préférence ...
Range("A1").Formula = "±"



Salutations!



"Stach" a écrit dans le message de news:
Bonjour,

Par automation VBA, je crée une formule par concaténation. Je colle cette
formule dans une cellule que j'ai préalablement mise au format "texte".

Pour que le calcul s'effectue, je remets (toujours par vba) la cellule au
format "0.00".

Seulement, pour que le calcul s'effectue dans la cellule, je dois avec ma
souris sélectionner la cellule, clicquer dans la formule dans la barre de
formule puis faire "enter". Comment réaliser ces dernières opérations par VBA?

Merci bien.

Stach ;-)






Avatar
michdenis
Bonjour Stach,

Est-ce possible que ta cellule de destination soit au format texte ?

Je n'arrive pas à reproduire ce que tu énonces ...!


Salutations!




"Stach" a écrit dans le message de news:
Salut,

J'ai essayer ta solution ainsi que l'autre proposée, mais au lieu de me
donnée la valeur calculée dans la cellule, il de donne ma formule:

U,24-(((55,24-54,74)/(1,58-0,41))*(1,58-0,41))

si je veux obtenir la valeur dans la cellule je dois clicquer dans la barre
de formule puis faire "enter" ou alors, faire "F2" puis "F9" et ensuite
"enter".

Ce que je voudrai c'est avoir automatiquement le résultat du calcul et pas
sa formule.

Merci encore

Stach ;-)


Bonjour Stach,


Tu formates ta cellules au format standard et tu ajoutes ta formule.

Range("A1").NumberFormat = "General"
Range("A1").FormulaLocal = "±"
Ou comme ceci selon ta préférence ...
Range("A1").Formula = "±"



Salutations!



"Stach" a écrit dans le message de news:
Bonjour,

Par automation VBA, je crée une formule par concaténation. Je colle cette
formule dans une cellule que j'ai préalablement mise au format "texte".

Pour que le calcul s'effectue, je remets (toujours par vba) la cellule au
format "0.00".

Seulement, pour que le calcul s'effectue dans la cellule, je dois avec ma
souris sélectionner la cellule, clicquer dans la formule dans la barre de
formule puis faire "enter". Comment réaliser ces dernières opérations par VBA?

Merci bien.

Stach ;-)






Avatar
Ange Ounis
Juste une remarque en passant :

[c1].Formula = "=somme(" & Adresse1 & ":" & Adresse2 & ")"

devrait plutôt être remplacé par

[c1].FormulaLocal = "=somme(" & Adresse1 & ":" & Adresse2 & ")"

ce qui donnerait le même résultat que la 2ème proposition (nom de fonction en
anglais).

----------
Ange Ounis
----------

Bonjour,

Si j'ai bien compris

Hypothèse: La colonne A est renseignée par des
nombres et on veut calculer la somme de la plage
A1 à A3 (par exemple) avec le résultat qui s'affiche
en C1.

1) Simulation de ce que vous décrivez
'**********
Sub votreFormule()
Dim Adresse1 As String
Dim Adresse2 As String
Adresse1 = "a1"
Adresse2 = "a3"
[c1].NumberFormat = "@"
[c1].Formula = "=somme(" & Adresse1 & ":" & Adresse2 & ")"
[c1].NumberFormat = "0.00"
End Sub
'**********
Effectivement dans ce cas, on est obligé de cliquer
dans la barre de formule et d'entériner

2) Procédez plutôt comme suit
'**********
Sub FormuleModifiee()
Dim Adresse1 As String
Dim Adresse2 As String
Adresse1 = "a1"
Adresse2 = "a3"
[c1].Formula = "=sum(" & Adresse1 & ":" & Adresse2 & ")"
End Sub
'**********
On a entré la formule en langage VBA (sum) et non
pas en language de l'utilisateur (somme).
Pour trouver les fonctions en langage VBA allez dans
l'explorateur d'objets (raccourci F2) et consultez la
liste de l'objet WorksheetFunction.

Cordialement.



Avatar
Ange Ounis
Pourtant la solution proposée par Denis (changer le format de la cellule du
format "texte" au format "standard" puis y entrer ta formule) doit fonctionner !
Attention cependant au séparateur décimal (point obligatoire en VBA).
Pour faire bonne mesure tu peux ajouter une instruction Calculate ou
CalculateFull (à partir d'Excel 2000) mais ça ne devrait pas être nécessaire..

Sub essai()
Range("A1").NumberFormat = "General"
Range("A1").Formula = "U.24-(((55.24-54.74)/(1.58-0.41))*(1.58-0.41))"
Application.Calculate
End Sub

----------
Ange Ounis
----------

Salut,

J'ai essayer ta solution ainsi que l'autre proposée, mais au lieu de me
donnée la valeur calculée dans la cellule, il de donne ma formule:

U,24-(((55,24-54,74)/(1,58-0,41))*(1,58-0,41))

si je veux obtenir la valeur dans la cellule je dois clicquer dans la barre
de formule puis faire "enter" ou alors, faire "F2" puis "F9" et ensuite
"enter".

Ce que je voudrai c'est avoir automatiquement le résultat du calcul et pas
sa formule.

Merci encore

Stach ;-)



Bonjour Stach,


Tu formates ta cellules au format standard et tu ajoutes ta formule.

Range("A1").NumberFormat = "General"
Range("A1").FormulaLocal = "±"
Ou comme ceci selon ta préférence ...
Range("A1").Formula = "±"



Salutations!



"Stach" a écrit dans le message de news:
Bonjour,

Par automation VBA, je crée une formule par concaténation. Je colle cette
formule dans une cellule que j'ai préalablement mise au format "texte".

Pour que le calcul s'effectue, je remets (toujours par vba) la cellule au
format "0.00".

Seulement, pour que le calcul s'effectue dans la cellule, je dois avec ma
souris sélectionner la cellule, clicquer dans la formule dans la barre de
formule puis faire "enter". Comment réaliser ces dernières opérations par VBA?

Merci bien.

Stach ;-)








Avatar
Stach
Bonjour,

Ma cellule est bien au départ en format nombre "0.00". Ma formule donnée
dans l'exemple est récupérée par concaténation, mais le problème, c'est que
c'est le résultat du calcul que je désire voir apparaitre pas la formule.

Si qq voit comment...

merci.

Stach ;-)

--
Stach ;-)



Pourtant la solution proposée par Denis (changer le format de la cellule du
format "texte" au format "standard" puis y entrer ta formule) doit fonctionner !
Attention cependant au séparateur décimal (point obligatoire en VBA).
Pour faire bonne mesure tu peux ajouter une instruction Calculate ou
CalculateFull (à partir d'Excel 2000) mais ça ne devrait pas être nécessaire..

Sub essai()
Range("A1").NumberFormat = "General"
Range("A1").Formula = "U.24-(((55.24-54.74)/(1.58-0.41))*(1.58-0.41))"
Application.Calculate
End Sub

----------
Ange Ounis
----------

Salut,

J'ai essayer ta solution ainsi que l'autre proposée, mais au lieu de me
donnée la valeur calculée dans la cellule, il de donne ma formule:

U,24-(((55,24-54,74)/(1,58-0,41))*(1,58-0,41))

si je veux obtenir la valeur dans la cellule je dois clicquer dans la barre
de formule puis faire "enter" ou alors, faire "F2" puis "F9" et ensuite
"enter".

Ce que je voudrai c'est avoir automatiquement le résultat du calcul et pas
sa formule.

Merci encore

Stach ;-)



Bonjour Stach,


Tu formates ta cellules au format standard et tu ajoutes ta formule.

Range("A1").NumberFormat = "General"
Range("A1").FormulaLocal = "±"
Ou comme ceci selon ta préférence ...
Range("A1").Formula = "±"



Salutations!



"Stach" a écrit dans le message de news:
Bonjour,

Par automation VBA, je crée une formule par concaténation. Je colle cette
formule dans une cellule que j'ai préalablement mise au format "texte".

Pour que le calcul s'effectue, je remets (toujours par vba) la cellule au
format "0.00".

Seulement, pour que le calcul s'effectue dans la cellule, je dois avec ma
souris sélectionner la cellule, clicquer dans la formule dans la barre de
formule puis faire "enter". Comment réaliser ces dernières opérations par VBA?

Merci bien.

Stach ;-)











Avatar
michdenis
Bonjour Stach,

Si tu n'as pas encore trouvé, tu peux m'envoyer la partie de ton fichier où tu éprouves le problème sans oublier quelques
explications de ta part.


Salutations!



"Stach" a écrit dans le message de news:
Bonjour,

Ma cellule est bien au départ en format nombre "0.00". Ma formule donnée
dans l'exemple est récupérée par concaténation, mais le problème, c'est que
c'est le résultat du calcul que je désire voir apparaitre pas la formule.

Si qq voit comment...

merci.

Stach ;-)

--
Stach ;-)



Pourtant la solution proposée par Denis (changer le format de la cellule du
format "texte" au format "standard" puis y entrer ta formule) doit fonctionner !
Attention cependant au séparateur décimal (point obligatoire en VBA).
Pour faire bonne mesure tu peux ajouter une instruction Calculate ou
CalculateFull (à partir d'Excel 2000) mais ça ne devrait pas être nécessaire..

Sub essai()
Range("A1").NumberFormat = "General"
Range("A1").Formula = "U.24-(((55.24-54.74)/(1.58-0.41))*(1.58-0.41))"
Application.Calculate
End Sub

----------
Ange Ounis
----------

Salut,

J'ai essayer ta solution ainsi que l'autre proposée, mais au lieu de me
donnée la valeur calculée dans la cellule, il de donne ma formule:

U,24-(((55,24-54,74)/(1,58-0,41))*(1,58-0,41))

si je veux obtenir la valeur dans la cellule je dois clicquer dans la barre
de formule puis faire "enter" ou alors, faire "F2" puis "F9" et ensuite
"enter".

Ce que je voudrai c'est avoir automatiquement le résultat du calcul et pas
sa formule.

Merci encore

Stach ;-)



Bonjour Stach,


Tu formates ta cellules au format standard et tu ajoutes ta formule.

Range("A1").NumberFormat = "General"
Range("A1").FormulaLocal = "±"
Ou comme ceci selon ta préférence ...
Range("A1").Formula = "±"



Salutations!



"Stach" a écrit dans le message de news:
Bonjour,

Par automation VBA, je crée une formule par concaténation. Je colle cette
formule dans une cellule que j'ai préalablement mise au format "texte".

Pour que le calcul s'effectue, je remets (toujours par vba) la cellule au
format "0.00".

Seulement, pour que le calcul s'effectue dans la cellule, je dois avec ma
souris sélectionner la cellule, clicquer dans la formule dans la barre de
formule puis faire "enter". Comment réaliser ces dernières opérations par VBA?

Merci bien.

Stach ;-)











Avatar
Stach
Salut j'ai résolu le problème en simulant des entrées clavier qui me
permettent de selectionner le contenu de la cellule puis de la calculer et de
valider la réponse:

For Line = LineFirst To LineLast
Cells(Line, 15).NumberFormat = "0.00"
SendKeys "{F2}"
SendKeys "{F9}"
SendKeys "{ENTER}"
Next

merci bien pour votre aide.

@+

Stach ;-)



Bonjour Stach,

Si tu n'as pas encore trouvé, tu peux m'envoyer la partie de ton fichier où tu éprouves le problème sans oublier quelques
explications de ta part.


Salutations!



"Stach" a écrit dans le message de news:
Bonjour,

Ma cellule est bien au départ en format nombre "0.00". Ma formule donnée
dans l'exemple est récupérée par concaténation, mais le problème, c'est que
c'est le résultat du calcul que je désire voir apparaitre pas la formule.

Si qq voit comment...

merci.

Stach ;-)

--
Stach ;-)



Pourtant la solution proposée par Denis (changer le format de la cellule du
format "texte" au format "standard" puis y entrer ta formule) doit fonctionner !
Attention cependant au séparateur décimal (point obligatoire en VBA).
Pour faire bonne mesure tu peux ajouter une instruction Calculate ou
CalculateFull (à partir d'Excel 2000) mais ça ne devrait pas être nécessaire..

Sub essai()
Range("A1").NumberFormat = "General"
Range("A1").Formula = "U.24-(((55.24-54.74)/(1.58-0.41))*(1.58-0.41))"
Application.Calculate
End Sub

----------
Ange Ounis
----------

Salut,

J'ai essayer ta solution ainsi que l'autre proposée, mais au lieu de me
donnée la valeur calculée dans la cellule, il de donne ma formule:

U,24-(((55,24-54,74)/(1,58-0,41))*(1,58-0,41))

si je veux obtenir la valeur dans la cellule je dois clicquer dans la barre
de formule puis faire "enter" ou alors, faire "F2" puis "F9" et ensuite
"enter".

Ce que je voudrai c'est avoir automatiquement le résultat du calcul et pas
sa formule.

Merci encore

Stach ;-)



Bonjour Stach,


Tu formates ta cellules au format standard et tu ajoutes ta formule.

Range("A1").NumberFormat = "General"
Range("A1").FormulaLocal = "±"
Ou comme ceci selon ta préférence ...
Range("A1").Formula = "±"



Salutations!



"Stach" a écrit dans le message de news:
Bonjour,

Par automation VBA, je crée une formule par concaténation. Je colle cette
formule dans une cellule que j'ai préalablement mise au format "texte".

Pour que le calcul s'effectue, je remets (toujours par vba) la cellule au
format "0.00".

Seulement, pour que le calcul s'effectue dans la cellule, je dois avec ma
souris sélectionner la cellule, clicquer dans la formule dans la barre de
formule puis faire "enter". Comment réaliser ces dernières opérations par VBA?

Merci bien.

Stach ;-)
















Avatar
michdenis
Bonjour Stach,

C'est une façon singulière de résoudre la difficulté mais si cela te satisfait, à la bonne heure !


Salutations!


"Stach" a écrit dans le message de news:
Salut j'ai résolu le problème en simulant des entrées clavier qui me
permettent de selectionner le contenu de la cellule puis de la calculer et de
valider la réponse:

For Line = LineFirst To LineLast
Cells(Line, 15).NumberFormat = "0.00"
SendKeys "{F2}"
SendKeys "{F9}"
SendKeys "{ENTER}"
Next

merci bien pour votre aide.

@+

Stach ;-)



Bonjour Stach,

Si tu n'as pas encore trouvé, tu peux m'envoyer la partie de ton fichier où tu éprouves le problème sans oublier quelques
explications de ta part.


Salutations!



"Stach" a écrit dans le message de news:
Bonjour,

Ma cellule est bien au départ en format nombre "0.00". Ma formule donnée
dans l'exemple est récupérée par concaténation, mais le problème, c'est que
c'est le résultat du calcul que je désire voir apparaitre pas la formule.

Si qq voit comment...

merci.

Stach ;-)

--
Stach ;-)



Pourtant la solution proposée par Denis (changer le format de la cellule du
format "texte" au format "standard" puis y entrer ta formule) doit fonctionner !
Attention cependant au séparateur décimal (point obligatoire en VBA).
Pour faire bonne mesure tu peux ajouter une instruction Calculate ou
CalculateFull (à partir d'Excel 2000) mais ça ne devrait pas être nécessaire..

Sub essai()
Range("A1").NumberFormat = "General"
Range("A1").Formula = "U.24-(((55.24-54.74)/(1.58-0.41))*(1.58-0.41))"
Application.Calculate
End Sub

----------
Ange Ounis
----------

Salut,

J'ai essayer ta solution ainsi que l'autre proposée, mais au lieu de me
donnée la valeur calculée dans la cellule, il de donne ma formule:

U,24-(((55,24-54,74)/(1,58-0,41))*(1,58-0,41))

si je veux obtenir la valeur dans la cellule je dois clicquer dans la barre
de formule puis faire "enter" ou alors, faire "F2" puis "F9" et ensuite
"enter".

Ce que je voudrai c'est avoir automatiquement le résultat du calcul et pas
sa formule.

Merci encore

Stach ;-)



Bonjour Stach,


Tu formates ta cellules au format standard et tu ajoutes ta formule.

Range("A1").NumberFormat = "General"
Range("A1").FormulaLocal = "±"
Ou comme ceci selon ta préférence ...
Range("A1").Formula = "±"



Salutations!



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

Bonjour,

Par automation VBA, je crée une formule par concaténation. Je colle cette
formule dans une cellule que j'ai préalablement mise au format "texte".

Pour que le calcul s'effectue, je remets (toujours par vba) la cellule au
format "0.00".

Seulement, pour que le calcul s'effectue dans la cellule, je dois avec ma
souris sélectionner la cellule, clicquer dans la formule dans la barre de
formule puis faire "enter". Comment réaliser ces dernières opérations par VBA?

Merci bien.

Stach ;-)