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

formule avec fonction vba générant erreur sur instruction set

2 réponses
Avatar
Alain N
Je rencontre un problème lorsque la fonction suivante est utilisée comme formule dans une cellule d’une feuille excel.
Je suis en XL2000 FR SP3 sous XP. Un ami l’a essayé sous XL2003 et là elle fonctionne correctement.
J’obtiens comme résultat #VALEUR !
Voici le code VBA :
Function moisfin()
Dim celluletrouvee, pos_fin
Sheets("plan").Select
Set celluletrouvee = ActiveSheet.Range("A12:A500").Find("")
pos_fin = celluletrouvee.Address
pos_fin = Range(celluletrouvee.Address).Offset(-1, 0).Address
Do While Range(pos_fin).Value = ""
pos_fin = Range(pos_fin).Offset(-1, 0).Address
Loop
moisfin = Range(pos_fin).Value
End Function

Autre essai qui doit donner le même résultat mais génère la même erreur :

Function moisfin()
Dim celluletrouvee, pos_fin
Sheets("plan MMS avec retraits annuels").Select
'Set celluletrouvee = ActiveSheet.Range("A12:A500").Find("", LookIn:=xlValues)
pos_fin = celluletrouvee.Address
pos_fin = Range(celluletrouvee.Address).Offset(-1, 0).Address
moisfin = Range(pos_fin).Value
End Function

Lorsque j’exécute le code en pas à pas par F8, tout se passe bien dans les deux cas.
Mais lorsque je place un arrêt sur l’instruction set et demande l’exécution depuis la cellule excel par la formule =moisfin(), il n’y a pas de message d’erreur dans l’exécution du code mais l’instruction set génère la valeur nothing à la variable cellulletrouvee et l’instruction suivante se met en erreur.

Quelqu’un peut-il m’aider ?

2 réponses

Avatar
Pierre Fauconnier
Bonsoir

Peut-être une solution en typant ta variable objet CelluleTrouvee
Dim CelluleTrouvee as Range
de façon à ce que la ligne set CelluleTrouvee = ... renvoie bien une cellule
et non la valeur contenue dans la cellule

Cela convient-il?


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Alain N" <Alain a écrit dans le message de
news:
Je rencontre un problème lorsque la fonction suivante est utilisée comme
formule dans une cellule d'une feuille excel.

Je suis en XL2000 FR SP3 sous XP. Un ami l'a essayé sous XL2003 et là elle
fonctionne correctement.

J'obtiens comme résultat #VALEUR !
Voici le code VBA :
Function moisfin()
Dim celluletrouvee, pos_fin
Sheets("plan").Select
Set celluletrouvee = ActiveSheet.Range("A12:A500").Find("")
pos_fin = celluletrouvee.Address
pos_fin = Range(celluletrouvee.Address).Offset(-1, 0).Address
Do While Range(pos_fin).Value = ""
pos_fin = Range(pos_fin).Offset(-1, 0).Address
Loop
moisfin = Range(pos_fin).Value
End Function

Autre essai qui doit donner le même résultat mais génère la même erreur :

Function moisfin()
Dim celluletrouvee, pos_fin
Sheets("plan MMS avec retraits annuels").Select
'Set celluletrouvee = ActiveSheet.Range("A12:A500").Find("",
LookIn:=xlValues)

pos_fin = celluletrouvee.Address
pos_fin = Range(celluletrouvee.Address).Offset(-1, 0).Address
moisfin = Range(pos_fin).Value
End Function

Lorsque j'exécute le code en pas à pas par F8, tout se passe bien dans les
deux cas.

Mais lorsque je place un arrêt sur l'instruction set et demande l'
exécution depuis la cellule excel par la formule =moisfin(), il n'y a pas de

message d'erreur dans l'exécution du code mais l'instruction set génère la
valeur nothing à la variable cellulletrouvee et l'instruction suivante se
met en erreur.

Quelqu'un peut-il m'aider ?




Avatar
michdenis
Bonjour Alain,

La méthode d'un objet Range ne peut être utilisé dans une fonction appliquée directement dans une cellule d'une feuille
de calcul avec la version Excel 2000. Est-ce un bug ? Je n'en sais rien .. c'est comme ça. Cependant, cela fonctionne
avec excel 2002 et excel 2003.


Salutations!



"Alain N" <Alain a écrit dans le message de
news:
Je rencontre un problème lorsque la fonction suivante est utilisée comme formule dans une cellule d'une feuille excel.
Je suis en XL2000 FR SP3 sous XP. Un ami l'a essayé sous XL2003 et là elle fonctionne correctement.
J'obtiens comme résultat #VALEUR !
Voici le code VBA :
Function moisfin()
Dim celluletrouvee, pos_fin
Sheets("plan").Select
Set celluletrouvee = ActiveSheet.Range("A12:A500").Find("")
pos_fin = celluletrouvee.Address
pos_fin = Range(celluletrouvee.Address).Offset(-1, 0).Address
Do While Range(pos_fin).Value = ""
pos_fin = Range(pos_fin).Offset(-1, 0).Address
Loop
moisfin = Range(pos_fin).Value
End Function

Autre essai qui doit donner le même résultat mais génère la même erreur :

Function moisfin()
Dim celluletrouvee, pos_fin
Sheets("plan MMS avec retraits annuels").Select
'Set celluletrouvee = ActiveSheet.Range("A12:A500").Find("", LookIn:=xlValues)
pos_fin = celluletrouvee.Address
pos_fin = Range(celluletrouvee.Address).Offset(-1, 0).Address
moisfin = Range(pos_fin).Value
End Function

Lorsque j'exécute le code en pas à pas par F8, tout se passe bien dans les deux cas.
Mais lorsque je place un arrêt sur l'instruction set et demande l'exécution depuis la cellule excel par la formule
=moisfin(), il n'y a pas de message d'erreur dans l'exécution du code mais l'instruction set génère la valeur nothing à
la variable cellulletrouvee et l'instruction suivante se met en erreur.

Quelqu'un peut-il m'aider ?