Argument non approprié sur une fonction personnelle VBA EXCEL

Le
magiczorro Hors ligne
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.
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
michdenis
Le #23026671
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.
magiczorro Hors ligne
Le #23026751
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à
michdenis
Le #23026911
| 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à
magiczorro Hors ligne
Le #23027221
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.
michel ou sam
Le #23027381
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"
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.
michdenis
Le #23027441
| 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.
michdenis
Le #23027431
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"
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.
magiczorro Hors ligne
Le #23027451
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
Publicité
Poster une réponse
Anonyme