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

Problème avec une macro

4 réponses
Avatar
Clochard
Bonjour,

J'ai un problème avec cette macro placée dans un module

Function plusgrandeE(plage As Range) As String
Application.Volatile
Dim v As Range
Dim pg As String
For Each v In [equipes]
If v = plage.Value Then pg = pg & "" & Range("B" & v.Row)
Next v
plusgrandeE = pg
End Function

À l'ouverture du fichier ou lorsque que je change de feuille... le résultat
change constamment...

Je dois donc régulièrement faire F9 pour obtenir le bon résultat

D'après vous... Pourquoi ?


--

Clochard
Aimerais bien savoir....
Merci!

4 réponses

Avatar
lSteph
Bonjour,

ceci n'est pas une macro mais une fonction,celle-ci comprend
Application.volatile
il est donc normal que son résultat puisse changer lorsqu'il y a un
recalcul
si elle est utilisée directement dans la feuille.
Si cette fonction n'est pas appelée depuis une cellule de la feuille
mais en fonction d'une autre fonction ou d'une macro , il convient de
connaitre la procédure et l'évènement éventuel qui déclenchent s on
calcul.
Dans tous les cas, s'assurer que la plage de cellules concernée n'est
pas elle-même assujettie à un autre évènement.

Cordialement.
--
lSteph


On 22 oct, 14:32, Clochard wrote:
Bonjour,

J'ai un problème avec cette macro placée dans un module

Function plusgrandeE(plage As Range) As String
Application.Volatile
Dim v As Range
Dim pg As String
For Each v In [equipes]
If v = plage.Value Then pg = pg & "" & Range("B" & v.Row)
Next v
plusgrandeE = pg
End Function

À l'ouverture du fichier ou lorsque que je change de feuille... le ré sultat
change constamment...

Je dois donc régulièrement faire F9 pour obtenir le bon résultat

D'après vous... Pourquoi ?

--

Clochard
Aimerais bien savoir....
Merci!


Avatar
Clochard
Merci lSteph pour ton éclaircissement,

J'aimerais savoir, est-ce qu'il est possible de rendre une fonction... macro
--
Clochard
Aimerais bien savoir....
Merci!



Bonjour,

ceci n'est pas une macro mais une fonction,celle-ci comprend
Application.volatile
il est donc normal que son résultat puisse changer lorsqu'il y a un
recalcul
si elle est utilisée directement dans la feuille.
Si cette fonction n'est pas appelée depuis une cellule de la feuille
mais en fonction d'une autre fonction ou d'une macro , il convient de
connaitre la procédure et l'évènement éventuel qui déclenchent son
calcul.
Dans tous les cas, s'assurer que la plage de cellules concernée n'est
pas elle-même assujettie à un autre évènement.

Cordialement.
--
lSteph


On 22 oct, 14:32, Clochard wrote:
Bonjour,

J'ai un problème avec cette macro placée dans un module

Function plusgrandeE(plage As Range) As String
Application.Volatile
Dim v As Range
Dim pg As String
For Each v In [equipes]
If v = plage.Value Then pg = pg & "" & Range("B" & v.Row)
Next v
plusgrandeE = pg
End Function

À l'ouverture du fichier ou lorsque que je change de feuille... le résultat
change constamment...

Je dois donc régulièrement faire F9 pour obtenir le bon résultat

D'après vous... Pourquoi ?

--

Clochard
Aimerais bien savoir....
Merci!







Avatar
lSteph
comme je le disais, donc autrement, :
si elle est utilisée directement dans la feuille.
Si cette fonction n'est pas appelée depuis une cellule de la feuille
mais en fonction d'une autre fonction ou d'une macro , il convient de
connaitre la procédure et l'évènement éventuel qui déclenche nt son
calcul.
Dans tous les cas, s'assurer que la plage de cellules concernée n'est
pas elle-même assujettie à un autre évènement.



il conviendrait que tu précises ces éléments qui nous permettraient
de te répondre.

--
lSteph

On 22 oct, 15:26, Clochard wrote:
Merci lSteph pour ton éclaircissement,

J'aimerais savoir, est-ce qu'il est possible de rendre une fonction... ma cro
--
Clochard
Aimerais bien savoir....
Merci!


Bonjour,

ceci n'est pas une macro mais une fonction,celle-ci comprend
Application.volatile
il est donc normal que son résultat puisse changer lorsqu'il y a un
recalcul
si elle est utilisée directement dans la feuille.
Si cette fonction n'est pas appelée depuis une cellule de la feuille
mais en fonction d'une autre fonction ou d'une macro , il convient de
connaitre la procédure et l'évènement éventuel qui déclenche nt son
calcul.
Dans tous les cas, s'assurer que la plage de cellules concernée n'est
pas elle-même assujettie à un autre évènement.

Cordialement.
--
lSteph

On 22 oct, 14:32, Clochard wrote:
Bonjour,

J'ai un problème avec cette macro placée dans un module

Function plusgrandeE(plage As Range) As String
Application.Volatile
Dim v As Range
Dim pg As String
For Each v In [equipes]
If v = plage.Value Then pg = pg & "" & Range("B" & v.Row)
Next v
plusgrandeE = pg
End Function

À l'ouverture du fichier ou lorsque que je change de feuille... le résultat
change constamment...

Je dois donc régulièrement faire F9 pour obtenir le bon résultat

D'après vous... Pourquoi ?

--

Clochard
Aimerais bien savoir....
Merci!






Avatar
garnote
Salut Clochard,

Si, par exemple, la cellule G2 contient la valeur v
de ta fonction personnalisée, cette macro entrera
en G3 le pg de ta fonction..

Sub PGE()
Dim v As Range
Dim pg As String
For Each v In [equipes]
If v = [G2] Then pg = pg & "" & Range("B" & v.Row)
Next v
[G3] = pg
End Sub

Serge


"Clochard" a écrit dans le message de news:
Merci lSteph pour ton éclaircissement,

J'aimerais savoir, est-ce qu'il est possible de rendre une fonction... macro
--
Clochard
Aimerais bien savoir....
Merci!



Bonjour,

ceci n'est pas une macro mais une fonction,celle-ci comprend
Application.volatile
il est donc normal que son résultat puisse changer lorsqu'il y a un
recalcul
si elle est utilisée directement dans la feuille.
Si cette fonction n'est pas appelée depuis une cellule de la feuille
mais en fonction d'une autre fonction ou d'une macro , il convient de
connaitre la procédure et l'évènement éventuel qui déclenchent son
calcul.
Dans tous les cas, s'assurer que la plage de cellules concernée n'est
pas elle-même assujettie à un autre évènement.

Cordialement.
--
lSteph


On 22 oct, 14:32, Clochard wrote:
Bonjour,

J'ai un problème avec cette macro placée dans un module

Function plusgrandeE(plage As Range) As String
Application.Volatile
Dim v As Range
Dim pg As String
For Each v In [equipes]
If v = plage.Value Then pg = pg & "" & Range("B" & v.Row)
Next v
plusgrandeE = pg
End Function

À l'ouverture du fichier ou lorsque que je change de feuille... le résultat
change constamment...

Je dois donc régulièrement faire F9 pour obtenir le bon résultat

D'après vous... Pourquoi ?

--

Clochard
Aimerais bien savoir....
Merci!