Utilisation de Function propre avec un cell(x,y).formula

cs_P19 Messages postés 17 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 23 janvier 2013 - 23 janv. 2013 à 11:00
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 23 janv. 2013 à 18:36
Bonjour

Connaisse vous la manière d'insérer une fonction utilisateur dans une cellule ?

Je sais faire avec une fonction Excel de type "$A$4 +$A$10" que j'écris Cells(1,1).Formula = "=$A$4+$A$10"

En revanche, j'ai une fonction qui s'appelle ColorCountIf1. Lorsque je tente de faire la même chose :

Cells(Large, Longue).Formula = "=ColorCountIf1(A1:A60;WE)" , j'ai une erreur de type : "Erreur 104" "Erreur définir*e par l'application

Si vous avez une idée.

D'avance merci.
A voir également:

8 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 janv. 2013 à 11:03
Bonjour,
sous VBA, la notation des formules est la notation anglaise (des virgules et non des point-virgules)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_P19 Messages postés 17 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 23 janvier 2013
23 janv. 2013 à 11:54
Bonjour,

Ma fonction fonctionne normalement avec une écriture de type : =(ColorCountIf(A$1:A$62;
BL)/2)
Si c'est à ce point virgule que vous faites référence, peut être qu'elle n'est pas écrite dans les règles de l'art mais j'insiste, elle fonctionne. Voici d'ailleurs sont détail :

Public Function ColorCountIf1(SearchArea As Object, BgColor As Range) As Integer

Application.Volatile True
ColorCountIf1 = 0
MaCoul = BgColor.Interior.ColorIndex
For Each cell In SearchArea
If cell.Interior.ColorIndex MaCoul Then ColorCountIf1 ColorCountIf1 + 1
Next cell

End Function


Merci de m'indiquer où vous trouveriez un soucis.

Par ailleurs et pour avancer, j'ai remplacé mon Formula par un "FormulaLocal" qui semble mieux convenir puisque je n'ai plus l'erreur du départ dans l'exécution de ma macro. Mais le résultat n'est pas probant puisqu'il m'affiche une erreur sur la cellule sur laquelle j'ai insérée ma fonction et ne me retourne surtout pas le nombre de cellule colorisé.

Si quelqu'un à une idée.

Cordiales salutations.

Philippe
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 janv. 2013 à 13:12
1) formulalocal n'est pas formula et c'est la raison pour laquelle est acceptée alors la notation avec le pont-virgule !
2)
Public Function ColorCountIf1(SearchArea As Object, BgColor As Range) As Integer

Impossible de te répondre sans connaître les paramètres passés avec précision !
Je note que tu passes SerarchAreas "as object" et BgColor "as Range"
et que tu écrits plus haut :
=ColorCountIf1(A1:A60;WE)

--- A1:A60 est une plage (un Range)
-- j'ignore ce qu'est WE !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_P19 Messages postés 17 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 23 janvier 2013
23 janv. 2013 à 13:31
WE est le nom d'une plage nommée sur une feuille de mon classeur.

Le mieux, serait que je puisse te joindre mon fichier mais je n'ai pas trouvé comment faire sur le forum ... Je débute

Peux tu me l'indiquer stp ?

A +
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 janv. 2013 à 14:26
Le mieux, serait que je puisse te joindre mon fichier mais je n'ai pas trouvé comment faire sur le forum ... Je débute

Peux tu me l'indiquer stp ?


En aucun cas ! Je n'ouvrirai JAMAIS, comme la plupart d'entre nous, un classeur dont j'ignore tout !
Ici : on expose avec précision :
- les tenants
- les aboutissants
- le code tenté
- la difficulté spécifique et parfaitement isolée rencontrée.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_P19 Messages postés 17 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 23 janvier 2013
23 janv. 2013 à 16:04
Je comprends tout à fait.

En fait, en reprenant mon "colorcontif", j'ai pu y arrivé.

Je pense que cela viens de l'untilisation que je fais des fonctions.

Aurais tu un lien à me conseiller où serait parfaitement expliqué la création et le maniement des fonctions ?

D'avance merci.

Philippe
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 janv. 2013 à 18:33
de quelles fonctions parles-ru ?
- Si celles de Excel, elles sont toutes exposées dans ton aide Excel. Tu disposes même d'une aide à l'occasion de l'écriture d'une formule. Je n'ai jamais utilisé quoi que ce soit d'autre.
- si de fonctions personnalisées :
Leur écriture répond rigoureusement aux mêmes règles que toute autre fonction : - passage de paramètre(s) (qui doit/doivent être du même type que celui/ceux utilisé(s) dans l'appel de la fonction)
- typage de la valeur retournée par la fonction (en fonction de ce qu'elle doit retourner)
- seule obligation : cette fonction est à déclarer en Public dans un module

Elle est dès lors utilisable dans toute formule, exactement comme le sont les fonctions de Excel

RAPPEL : la valeur retournée par une fonction personnalisée ne peut qu'affecter la cellule attributaire de la formule. On ne peut par ailleurs, dans le code d'une fonction personnalisée, affecter d'autres objets/cellules. Ceci tient au fait que les fonctions personnalisées, comme d'ailleurs celles de Excel, sont exécutées dans un fil distinct.
Je ne vois rien d'autre à ajouter à ceci, qui me parait suffisamment clair et complet.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 janv. 2013 à 18:36
En application de ce que je viens de t'exposer, cette partie de ton code :
For Each cell In SearchArea
If cell.Interior.ColorIndex MaCoul Then ColorCountIf1 ColorCountIf1 + 1
Next cell

n'est pas valable, puisque chercherait à affecter d'autres cellules


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous