VBA excel TEST SI formule ou valeur

Résolu/Fermé
swissmarcolino Messages postés 12 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 2 mars 2009 - 11 févr. 2009 à 09:53
swissmarcolino Messages postés 12 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 2 mars 2009 - 12 févr. 2009 à 06:39
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 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
11 févr. 2009 à 10:08
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 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 2 mars 2009
12 févr. 2009 à 06:39
Merci beaucoup !

C'est parfait !

Salutations

Marcolino
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
11 févr. 2009 à 10:29
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