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
A voir également:

2 réponses

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
swissmarcolino Messages postés 12 Statut Membre
 
Merci beaucoup !

C'est parfait !

Salutations

Marcolino
0
pilas31 Messages postés 1878 Statut Contributeur 647
 
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