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

Argument non approprié sur une fonction personnelle VBA EXCEL

8 réponses
Avatar
magiczorro
Bonjour,

Je fais une fonction personnelle sur EXCEL.

Si sur une feuille Excel j'utilise ma fonction dans une cellule, par exemple B6, comme ceci :
=FPERSO(A6) elle fonctionne.

je voudrais qu'elle fonctionne aussi si je rentre, toujours en B6
=FPERSO(A:A)

merci de m'indiquer les modifs à apporter en VBA au niveau de l'argument.

8 réponses

Avatar
michdenis
Bonjour,

Afin d'obtenir des commentaires appropriés, tu devrais publier ici
ta fonction personnalisée en expliquant sommairement le rôle
que tu voudrais que ta fonction remplisse.



MichD
--------------------------------------------
"magiczorro" a écrit dans le message de groupe de discussion :

Bonjour,

Je fais une fonction personnelle sur EXCEL.

Si sur une feuille Excel j'utilise ma fonction dans une cellule, par exemple
B6, comme ceci :
=FPERSO(A6) elle fonctionne.

je voudrais qu'elle fonctionne aussi si je rentre, toujours en B6
=FPERSO(A:A)

merci de m'indiquer les modifs à apporter en VBA au niveau de l'argument.
Avatar
magiczorro
michdenis a écrit le 16/01/2011 à 13h45 :
Bonjour,

Afin d'obtenir des commentaires appropriés, tu devrais publier ici
ta fonction personnalisée en expliquant sommairement le rôle
que tu voudrais que ta fonction remplisse.



MichD
--------------------------------------------
"magiczorro" a écrit dans le message de groupe de discussion
:

Bonjour,

Je fais une fonction personnelle sur EXCEL.

Si sur une feuille Excel j'utilise ma fonction dans une cellule, par exemple
B6, comme ceci :
=FPERSO(A6) elle fonctionne.

je voudrais qu'elle fonctionne aussi si je rentre, toujours en B6
=FPERSO(A:A)

merci de m'indiquer les modifs à apporter en VBA au niveau de
l'argument.


Le rôle de la fonction par exemple :

Public Function FPERSO(chf)

FPERSO = (chf+2)

End Function

pour que l'on se comprenne bien :
Si on utilise par exemple la fonction native Excel

en B1 =recherchev(A1;plage;2;faux)
en B2 =recherchev(A2;plage;2;faux)

ça marche aussi si on écrit :
en B1 =recherchev(A:A;plage;2;faux)
en B2 =recherchev(A:A;plage;2;faux)

ou exemple plus simple
en B1 = A:A équivaut à ¡

Voilà
Avatar
michdenis
| Public Function FPERSO(chf)
| FPERSO = (chf + 2)
| End Function

Chf représente quoi ? Un nombre ?

Dans ta feuille, tu utilises cette fonction à quelles fins ?

Que voudrais-tu que ta fonction fasse qu'elle ne réussit pas
à faire à l'heure actuelle?

Moi, je ne suis pas devin !

MichD
--------------------------------------------
"magiczorro" a écrit dans le message de groupe de discussion :

michdenis a écrit le 16/01/2011 à 13h45 :
Bonjour,

Afin d'obtenir des commentaires appropriés, tu devrais publier ici
ta fonction personnalisée en expliquant sommairement le rôle
que tu voudrais que ta fonction remplisse.



MichD
--------------------------------------------
"magiczorro" a écrit dans le message de groupe de discussion
:

Bonjour,

Je fais une fonction personnelle sur EXCEL.

Si sur une feuille Excel j'utilise ma fonction dans une cellule, par exemple
B6, comme ceci :
=FPERSO(A6) elle fonctionne.

je voudrais qu'elle fonctionne aussi si je rentre, toujours en B6
=FPERSO(A:A)

merci de m'indiquer les modifs à apporter en VBA au niveau de
l'argument.


Le rôle de la fonction par exemple :

Public Function FPERSO(chf)

FPERSO = (chf+2)

End Function

pour que l'on se comprenne bien :
Si on utilise par exemple la fonction native Excel

en B1 =recherchev(A1;plage;2;faux)
en B2 =recherchev(A2;plage;2;faux)

ça marche aussi si on écrit :
en B1 =recherchev(A:A;plage;2;faux)
en B2 =recherchev(A:A;plage;2;faux)

ou exemple plus simple
en B1 = A:A équivaut à ¡

Voilà
Avatar
magiczorro
michdenis a écrit le 16/01/2011 à 15h39 :
| Public Function FPERSO(chf)
| FPERSO = (chf + 2)
| End Function

Chf représente quoi ? Un nombre ?

Dans ta feuille, tu utilises cette fonction à quelles fins ?

Que voudrais-tu que ta fonction fasse qu'elle ne réussit pas
à faire à l'heure actuelle?

Moi, je ne suis pas devin !

MichD
--------------------------------------------
"magiczorro" a écrit dans le message de groupe de discussion
:

michdenis a écrit le 16/01/2011 à 13h45 :
Bonjour,

Afin d'obtenir des commentaires appropriés, tu devrais publier ici
ta fonction personnalisée en expliquant sommairement le rôle
que tu voudrais que ta fonction remplisse.



MichD
--------------------------------------------
"magiczorro" a écrit dans le message de groupe de discussion
:

Bonjour,

Je fais une fonction personnelle sur EXCEL.

Si sur une feuille Excel j'utilise ma fonction dans une cellule, par exemple
B6, comme ceci :
=FPERSO(A6) elle fonctionne.

je voudrais qu'elle fonctionne aussi si je rentre, toujours en B6
=FPERSO(A:A)

merci de m'indiquer les modifs à apporter en VBA au niveau de
l'argument.



Le rôle de la fonction par exemple :

Public Function FPERSO(chf)

FPERSO = (chf+2)

End Function

pour que l'on se comprenne bien :
Si on utilise par exemple la fonction native Excel

en B1 =recherchev(A1;plage;2;faux)
en B2 =recherchev(A2;plage;2;faux)

ça marche aussi si on écrit :
en B1 =recherchev(A:A;plage;2;faux)
en B2 =recherchev(A:A;plage;2;faux)

ou exemple plus simple
en B1 = A:A équivaut à ¡

Voilà


merci pour ta réponse.
dans cet exemple de fonction "chf" est un nombre.

Ma fonction va très bien marcher mais ce que je voudrais c'est que l'utilisateur puisse rentrer dans l'argument aussi bien A:A (colonne entière) que A1, A2, A3 ; ceci est possible avec les fonctions natives comme RECHERCHV ou autres... mais pas avec une fonction personnelle telle que je l'ai écrite, en effet dans cette fonction, l'argument ne peut-être qu'une référence à une cellule (A1, A2...) mais pas à une plage de cellule (A:A) sinon erreur #VALEUR!.
Pour avoir la même souplesse qu'avec une fonction native pour le choix de l'argument, il me manque quelques lignes de code.
Avatar
michel ou sam
Bonjour,
aidé de ma boule de cristal, j'arrive à ceci

Function Persocell(Cellule)
Total = Cellule.Value + 2
Persocell = Total
End Function

Function Persochamp(Champ As Range)
Dim A As Range, B As Range, Commun As Range
Set B = Selection.EntireRow
Set A = Champ
Set Commun = Application.Intersect(A, B)
Total = Commun.Value + 2
Persochamp = Total
End Function

Michel

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

Bonjour,

Je fais une fonction personnelle sur EXCEL.

Si sur une feuille Excel j'utilise ma fonction dans une cellule, par
exemple
B6, comme ceci :
=FPERSO(A6) elle fonctionne.

je voudrais qu'elle fonctionne aussi si je rentre, toujours en B6
=FPERSO(A:A)

merci de m'indiquer les modifs à apporter en VBA au niveau de l'argument.
Avatar
michdenis
| Public Function FPERSO(chf)
| FPERSO = (chf + 2)
| End Function

Tu parles de colonne complète A:A...

Ta fonction n'a rien à voir avec une plage de cellule,
elle fait qu'additionner la valeur 2 à un nombre passé
en paramètre.

Je ne comprends rien à ta demande...

Je t'ai demandé un exemple : à quoi ta fonction
Public Function FPERSO(chf) sert dans ta feuille de calcul ?
Donne un exemple...

Sinon il y a peut-être d'autres répondants illuminés qui savent
lire ce qui n'est pas écrit.

MichD
--------------------------------------------
"magiczorro" a écrit dans le message de groupe de discussion :

michdenis a écrit le 16/01/2011 à 15h39 :
| Public Function FPERSO(chf)
| FPERSO = (chf + 2)
| End Function

Chf représente quoi ? Un nombre ?

Dans ta feuille, tu utilises cette fonction à quelles fins ?

Que voudrais-tu que ta fonction fasse qu'elle ne réussit pas
à faire à l'heure actuelle?

Moi, je ne suis pas devin !

MichD
--------------------------------------------
"magiczorro" a écrit dans le message de groupe de discussion
:

michdenis a écrit le 16/01/2011 à 13h45 :
Bonjour,

Afin d'obtenir des commentaires appropriés, tu devrais publier ici
ta fonction personnalisée en expliquant sommairement le rôle
que tu voudrais que ta fonction remplisse.



MichD
--------------------------------------------
"magiczorro" a écrit dans le message de groupe de discussion
:

Bonjour,

Je fais une fonction personnelle sur EXCEL.

Si sur une feuille Excel j'utilise ma fonction dans une cellule, par




exemple
B6, comme ceci :
=FPERSO(A6) elle fonctionne.

je voudrais qu'elle fonctionne aussi si je rentre, toujours en B6
=FPERSO(A:A)

merci de m'indiquer les modifs à apporter en VBA au niveau de
l'argument.



Le rôle de la fonction par exemple :

Public Function FPERSO(chf)

FPERSO = (chf+2)

End Function

pour que l'on se comprenne bien :
Si on utilise par exemple la fonction native Excel

en B1 =recherchev(A1;plage;2;faux)
en B2 =recherchev(A2;plage;2;faux)

ça marche aussi si on écrit :
en B1 =recherchev(A:A;plage;2;faux)
en B2 =recherchev(A:A;plage;2;faux)

ou exemple plus simple
en B1 = A:A équivaut à ¡

Voilà


merci pour ta réponse.
dans cet exemple de fonction "chf" est un nombre.

Ma fonction va très bien marcher mais ce que je voudrais c'est que
l'utilisateur puisse rentrer dans l'argument aussi bien A:A (colonne entière)
que A1, A2, A3 ; ceci est possible avec les fonctions natives comme RECHERCHV ou
autres... mais pas avec une fonction personnelle telle que je l'ai écrite, en
effet dans cette fonction, l'argument ne peut-être qu'une référence à une
cellule (A1, A2...) mais pas à une plage de cellule (A:A) sinon erreur
#VALEUR!.
Pour avoir la même souplesse qu'avec une fonction native pour le choix de
l'argument, il me manque quelques lignes de code.
Avatar
michdenis
Tu en as fumé du bon !!!!!

;-)))



MichD
--------------------------------------------
"michel ou sam" a écrit dans le message de groupe de discussion : 4d332c92$0$5390$

Bonjour,
aidé de ma boule de cristal, j'arrive à ceci

Function Persocell(Cellule)
Total = Cellule.Value + 2
Persocell = Total
End Function

Function Persochamp(Champ As Range)
Dim A As Range, B As Range, Commun As Range
Set B = Selection.EntireRow
Set A = Champ
Set Commun = Application.Intersect(A, B)
Total = Commun.Value + 2
Persochamp = Total
End Function

Michel

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

Bonjour,

Je fais une fonction personnelle sur EXCEL.

Si sur une feuille Excel j'utilise ma fonction dans une cellule, par
exemple
B6, comme ceci :
=FPERSO(A6) elle fonctionne.

je voudrais qu'elle fonctionne aussi si je rentre, toujours en B6
=FPERSO(A:A)

merci de m'indiquer les modifs à apporter en VBA au niveau de l'argument.
Avatar
magiczorro
michel ou sam a écrit le 16/01/2011 à 18h36 :
Bonjour,
aidé de ma boule de cristal, j'arrive à ceci

Function Persocell(Cellule)
Total = Cellule.Value + 2
Persocell = Total
End Function

Function Persochamp(Champ As Range)
Dim A As Range, B As Range, Commun As Range
Set B = Selection.EntireRow
Set A = Champ
Set Commun = Application.Intersect(A, B)
Total = Commun.Value + 2
Persochamp = Total
End Function

Michel

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

Bonjour,

Je fais une fonction personnelle sur EXCEL.

Si sur une feuille Excel j'utilise ma fonction dans une cellule, par
exemple
B6, comme ceci :
=FPERSO(A6) elle fonctionne.

je voudrais qu'elle fonctionne aussi si je rentre, toujours en B6
=FPERSO(A:A)

merci de m'indiquer les modifs à apporter en VBA au niveau de
l'argument.




Je vais tester et te tiendrais au courant

Merci