Fonction par code

Le
bruno
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Mousnynao
Le #5382211
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



bruno
Le #5382191
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 -



bruno
Le #5382141
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
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 -




Trirème
Le #5382031
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
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 -








Mousnynao
Le #5381501
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 -







bruno
Le #5381481
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
Mousnynao
Le #5381401
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



Publicité
Poster une réponse
Anonyme