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

Fonction par code

7 réponses
Avatar
bruno
Bonjour

Dans un code VBA, je cr=E9=E9 une fonction par code en effectuant des
op=E9rations du style :

LeResultat =3D "=3D" & "NomDeLaFonction(" & "divers parametres" .......
par l'interm=E9diaire d'un assistant de saisie.

Lorsque je clique sur le bouton "Ins=E9rer" de mon assistant, la formule
est ins=E9r=E9e dans la cellule active de ma feuille. Par contre, le
calcul ne s'effectue pas quoique je fasse.

Si je me replace dans la cellule, je fait F2 pour l'=E9diter et ENTREE
imm=E9diatement, le calcul est lanc=E9e et ma formule donne le r=E9sultat
attendu.

Je ne comprends pas pourquoi je dois =E9diter pour obtenir un r=E9sultat.

Merci d'avance pour toute aide

Bruno

7 réponses

Avatar
Mousnynao
Bonjour,

en début de fonction placer la ligne suivante :

Application.Volatile

mousnynao


Bonjour

Dans un code VBA, je créé une fonction par code en effectuant des
opérations du style :

LeResultat = "=" & "NomDeLaFonction(" & "divers parametres" .......
par l'intermédiaire d'un assistant de saisie.

Lorsque je clique sur le bouton "Insérer" de mon assistant, la formule
est insérée dans la cellule active de ma feuille. Par contre, le
calcul ne s'effectue pas quoique je fasse.

Si je me replace dans la cellule, je fait F2 pour l'éditer et ENTREE
immédiatement, le calcul est lancée et ma formule donne le résultat
attendu.

Je ne comprends pas pourquoi je dois éditer pour obtenir un résultat.

Merci d'avance pour toute aide

Bruno



Avatar
bruno
J'ai essayé mais ça ne fonctionne pas.

Public Function PGICumulAct(sChamp, sTiersDeb, sTiersFin As String,
ParamArray Params()) As Double
Dim strArgCode, strArgValMin, strArgValMax, strRetour As String

Application.Volatile True
......

On 11 déc, 16:33, Mousnynao
wrote:
Bonjour,

en début de fonction placer la ligne suivante :

Application.Volatile

mousnynao




Bonjour

Dans un code VBA, je créé une fonction par code en effectuant des
opérations du style :

LeResultat = "=" & "NomDeLaFonction(" & "divers parametres" .......
par l'intermédiaire d'un assistant de saisie.

Lorsque je clique sur le bouton "Insérer" de mon assistant, la formule
est insérée dans la cellule active de ma feuille. Par contre, le
calcul ne s'effectue pas quoique je fasse.

Si je me replace dans la cellule, je fait F2 pour l'éditer et ENTREE
immédiatement, le calcul est lancée et ma formule donne le résulta t
attendu.

Je ne comprends pas pourquoi je dois éditer pour obtenir un résultat .

Merci d'avance pour toute aide

Bruno- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
bruno
Par contre si je saisie manuellement la totalité de ma formule, le
calcul se fait dès l'appui sur la touche ENTREE

On 11 déc, 16:41, bruno wrote:
J'ai essayé mais ça ne fonctionne pas.

Public Function PGICumulAct(sChamp, sTiersDeb, sTiersFin As String,
ParamArray Params()) As Double
Dim strArgCode, strArgValMin, strArgValMax, strRetour As String

Application.Volatile True
......

On 11 déc, 16:33, Mousnynao
wrote:



Bonjour,

en début de fonction placer la ligne suivante :

Application.Volatile

mousnynao



Bonjour

Dans un code VBA, je créé une fonction par code en effectuant des
opérations du style :

LeResultat = "=" & "NomDeLaFonction(" & "divers parametres" ...... .
par l'intermédiaire d'un assistant de saisie.

Lorsque je clique sur le bouton "Insérer" de mon assistant, la formu le
est insérée dans la cellule active de ma feuille. Par contre, le
calcul ne s'effectue pas quoique je fasse.

Si je me replace dans la cellule, je fait F2 pour l'éditer et ENTREE
immédiatement, le calcul est lancée et ma formule donne le résul tat
attendu.

Je ne comprends pas pourquoi je dois éditer pour obtenir un résult at.

Merci d'avance pour toute aide

Bruno- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




Avatar
Trirème
Bonjour Bruno,
Il me semble que tu dois mettre
MaCellule.FormulaLocal = LeResultat ou
MaCellule.Formula = LeResultat

MaCellule étant un objet range.
C'est une manière de préciser qu'il s'agit bien d'une formule et non pas
d'un texte. Quand tu édites le texte (entré par le VBA), c'est comme si tu le
saisissais pour la première fois, Excel l'interprète comme une formule.

Cordialement,
Trirème


Par contre si je saisie manuellement la totalité de ma formule, le
calcul se fait dès l'appui sur la touche ENTREE

On 11 déc, 16:41, bruno wrote:
J'ai essayé mais ça ne fonctionne pas.

Public Function PGICumulAct(sChamp, sTiersDeb, sTiersFin As String,
ParamArray Params()) As Double
Dim strArgCode, strArgValMin, strArgValMax, strRetour As String

Application.Volatile True
......

On 11 déc, 16:33, Mousnynao
wrote:



Bonjour,

en début de fonction placer la ligne suivante :

Application.Volatile

mousnynao



Bonjour

Dans un code VBA, je créé une fonction par code en effectuant des
opérations du style :

LeResultat = "=" & "NomDeLaFonction(" & "divers parametres" ........
par l'intermédiaire d'un assistant de saisie.

Lorsque je clique sur le bouton "Insérer" de mon assistant, la formule
est insérée dans la cellule active de ma feuille. Par contre, le
calcul ne s'effectue pas quoique je fasse.

Si je me replace dans la cellule, je fait F2 pour l'éditer et ENTREE
immédiatement, le calcul est lancée et ma formule donne le résultat
attendu.

Je ne comprends pas pourquoi je dois éditer pour obtenir un résultat.

Merci d'avance pour toute aide

Bruno- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -








Avatar
Mousnynao
Bonjour,

Chez moi, ça fonctionne nickel !!!

et juste avec : Application.Volatile

Public Function PGICumulAct(Cible As Range) As Double

Dim strArgCode, strArgValMin, strArgValMax, strRetour As String

Application.Volatile

PGICumulAct = Cible.Value * 5

End Function
'

La sécurité des macros ne serait-elle pas au niveau haut ?

mousnynao


J'ai essayé mais ça ne fonctionne pas.

Public Function PGICumulAct(sChamp, sTiersDeb, sTiersFin As String,
ParamArray Params()) As Double
Dim strArgCode, strArgValMin, strArgValMax, strRetour As String

Application.Volatile True
......

On 11 déc, 16:33, Mousnynao
wrote:
Bonjour,

en début de fonction placer la ligne suivante :

Application.Volatile

mousnynao




Bonjour

Dans un code VBA, je créé une fonction par code en effectuant des
opérations du style :

LeResultat = "=" & "NomDeLaFonction(" & "divers parametres" .......
par l'intermédiaire d'un assistant de saisie.

Lorsque je clique sur le bouton "Insérer" de mon assistant, la formule
est insérée dans la cellule active de ma feuille. Par contre, le
calcul ne s'effectue pas quoique je fasse.

Si je me replace dans la cellule, je fait F2 pour l'éditer et ENTREE
immédiatement, le calcul est lancée et ma formule donne le résultat
attendu.

Je ne comprends pas pourquoi je dois éditer pour obtenir un résultat..

Merci d'avance pour toute aide

Bruno- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -







Avatar
bruno
Bon j'ai trouvé une solution.

Avant à la fin de mon assistant je faisais :

......Formula = LaChaineQuiContientMaFormule

Maintenant je fais :

Dim LaVariableTemp as String

......LaVariableTemp = LaChaineQuiContientMaFormule
......FormulaLocal = LaVariableTemp

Pourquoi, je ne sais pas mais maintenant le calcul est effectué dès la
validation de l'assistant et cela me convient parfaitement.

Merci pour votre aide
Avatar
Mousnynao
re:

Perso, pour écrire une formule, je travaiille toujours avec [ .Value ],
je n'utilise [ .Formula ] que pour lire une formule !


Dim LaVariableTemp as String

......LaVariableTemp = LaChaineQuiContientMaFormule
......Value = LaVariableTemp

mousnynao

Pourquoi, je ne sais pas mais maintenant le calcul est effectué dès la
validation de l'assistant et cela me convient parfaitement.

Merci pour votre aide