Verifier si une cellule contient une formule

Résolu
Atic -  
 atic -
Bonjour à tous,
Voici mon probème: je souhaite savoir si la cellule que je vais chercher via un recherchev contient une formule ou pas.
J'ai deja la Fonction suivante pour savoir si une cellule contient une formule
Function Avec_Formule(cel As Range)
If cel.HasFormula = True Then Avec_Formule = "estimate" Else Avec_Formule = "final"
End Function

Mais quand je fais Avec_Formule(recherchev(bla;bla;2;faux)) j'ai pour réponse #VALUE

est ce que quelqu'un voit comment solutionner mon probleme?

Merci à tous

7 réponses

wilfried_42 Messages postés 907 Date d'inscription   Statut Contributeur Dernière intervention   245
 
Bonjour

voici une fonction qui le permet
Function EstFormule(cel As Range) As Boolean
    EstFormule = False
    Application.Volatile
    If Left(cel.FormulaLocal, 1) = "=" Then EstFormule = True
End Function

renvoi Vrai ou True (en VBA) s'il y a une formule
0
atuc
 
Salut Wilfried
Merci d'avoir répondu si rapidement,
merci pour la fonction, mais puis je lui donner en parametre un recherchev et non directement une cellule
et si oui pourquoi çe netait pas possible dans ma fonction?

merci encore
A bientot
0
atic
 
Wilfried,
Je viens de tester ta fonction mais elle me renvoie egalement #VALEUR si je fais ça
=EstFormule(RECHERCHEV(A1;Feuil1!A:B;2;FAUX))
en revanche si je fais =+EstFormule(B1) là ya pas de probleme
surement que le recherchev ne renvoie pas une cellule
mais dans ce cas que dois je faire?

merci du coup de main
0
wilfried_42 Messages postés 907 Date d'inscription   Statut Contributeur Dernière intervention   245
 
Re:

pour le recherchev c'est plus complexe, il renvoie une valeur et non pas une cellule, il faut utiliser Equiv qui renvoie un index

exemple : Equiv(MaRecherche;Maplage;0) renverra l'index de la recherche
Si ma colonne à renvoyer est la colonne E et ma plge de recherche est la colonne A
= "E" & Equiv(Marecherche;A:A;0) ' me donnera le référence de la cellule à renvoyer
avec indirect, on transforme cette référence Texte en Référence cellule
=INDIRECT("E" & Equiv(Marecherche;A:A;0)
il suffit alors d'utiliser EstFormule
=EstFormule(INDIRECT("E" & Equiv(Marecherche;A:A;0)) ' Revoie Vrai s'il y a une formule, sinon Faux
0
wilfried_42 Messages postés 907 Date d'inscription   Statut Contributeur Dernière intervention   245
 
re:

je vien de te repondre mais ma reponse n'apparait pas ?????????

rechercheV renvoie une valeur, pas une cellule
alors on triche

=EstFormule(Indirect("Feuil1!B" & Equiv(A1;Feuil1!A:A;0)))

cela doit fonctionner
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour tout le monde,

Ta façon de faire n'est pas logique. Rechercherv() te retourne une valeur et il faudrait passer une référence en parametre à la fonction de wilfried.
Recherche ta valeur avec index, tu pourras en déduire le n° de ligne et fabriquer l'adresse.
ex:
=ADRESSE(EQUIV(A1;Feuil1!A:A;0);2)
Il faudra peut-être adapter la fonction de wilfried pour convertir la chaine représentant l'adresse en adresse réelle
eric

EDIT : tes réponses viennent d'apparaitre wilfried, mon post n'a plus lieu d'etre :-)
0

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

Posez votre question
niarfo
 
je ne sais pas
0
wilfried_42 Messages postés 907 Date d'inscription   Statut Contributeur Dernière intervention   245
 
Bonjour

je ne comprends pas, je ne trouve pas le réponses que j'ai données à ce fil. Ca bug sur ce fil....

je redonne donc la formule
=EstFormule(Indirect("Feuil1!B" & equiv(A1;Feuil2!A:A;0)))
0
atic
 
salut Wilfried,
j'ai bien recu toutes tes réponses.
je viens de tester et ça marche nickel.
C'est vrai qu'il fallait que je ramene une cellulu et non sa valeur
en tout cas merci bcp et bonne continuation à tous
0