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
Configuration: Windows XP
Firefox 2.0.0.20

7 réponses

  1. wilfried_42 Messages postés 912 Statut Contributeur 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
    1. 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
    2. 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
  2. wilfried_42 Messages postés 912 Statut Contributeur 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
  3. wilfried_42 Messages postés 912 Statut Contributeur 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
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. wilfried_42 Messages postés 912 Statut Contributeur 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
  7. 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