VBA excel TEST SI formule ou valeur

Résolu
swissmarcolino Messages postés 12 Statut Membre -  
swissmarcolino Messages postés 12 Statut Membre -
Bonjour !

J'ai (encore) un soucis ! dans un petite programme qui cherche certains prix (selon leur références) dans une grosse liste de prix, je doit seulement prendre ceux qui sont calculé. Qui ont donc une formule !

Je parcoure donc mon fichier (tout cela fonctionne) et quand j'arrive sur le prix, je doit vérifier qu'il soit bien constitué d'une formule par exemple "=E245+D452+D4524" et si oui, je doit copier la valeur.

comment faire ? qqn a une iddée ? (donc seulement voir si valeur ou formule, le reste c'est ok).

dans le même contexte, j'ai des valeur qui viennent d'autre feuilles. Donc pas exemple "='mafeuille'!$F$163" et ceux-ci ne doivent pas être copié ! j'ai peur que si je teste si c'est une formule, qu'il prenne ceux-ci aussi.

merci beaucoup pour l'aide.

salutations

marcolino
Configuration: Windows XP
Firefox 3.0.6

2 réponses

  1. santiago69 Messages postés 485 Statut Membre 209
     
    Salut Marcolino,
    Je ne pense pas que ce soit possible avec de simple formules.
    En VBA, fait simplement appel a la propriete Formula.
    Voila 3 exemple de ce qu'elle peut renvoyer :

    Debug.Print ActiveCell.Formula  'La cellule active contient une valeur
    345
    Debug.Print ActiveCell.Formula  'La cellule active contient une formule
    =A13
    Debug.Print ActiveCell.Formula  'La cellule active contient une formule faisant reference a une feuille externe
    =[CLASSEUR.XLS]Feuil1!A1


    Il te suffit donc d'utilise ce script :
    If Left$(MaCellule.Formula, 1) = "=" And Mid$(MaCellule.Formula, 2, 1) <> "[" Then
        'Dans ce cas je copie
    End If


    Bon courage
    Santiago

    3
    1. swissmarcolino Messages postés 12 Statut Membre
       
      Merci beaucoup !

      C'est parfait !

      Salutations

      Marcolino
      0
  2. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    C'est effectivement une solution en VBA mais on peut y arriver en utilisant la macro complémentaire MOREFUNC que l'on peut télécharger ici :
    http://www.commentcamarche.net/telecharger/telecharger 34056283 morefunc macro complementaire excel

    cela donne une fonction TEXTEFORMULE qui donne le texte d'une formule de calcul.
    On peut ensuite tester qu'il y a bien "=" en 1° caractére et qu'il n'y a pas "!"
    voila un exemple peut-être à améliorer
    =SI(GAUCHE(TEXTEFORMULE(A1;1);1)="=";SI(ESTERREUR(CHERCHE("!";TEXTEFORMULE(A1;1);1));"OUI";"NON");"NON")
    


    A+
    1