Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Utiliser le texte d'une cellule comme formule dans une macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

helloje

XLDnaute Nouveau
Bonjour,

Je suis débutant en macro excel mais j'aimerais récuppérer des formules dans un fichier (par ex. sous la forme ((AouB)etC)ou!D) (où !=sauf) et les traiter en fonction de la valeur de A, B, C et D.
Ce qui est plus dur pour moi c'est que le nombre des valeurs A, B etc peut être compris entre 1 et 20 et donc que les formules peuvent se compliquer très rapidement.

Je sais que les macros savent "calculer" les And, Or et Not (en mettant =((A Or B) and C) Or Not D).

Je pensais qu'en récupérant la valeur de la cellule (en remplaçant les bons termes) cela fonctionnerait mais pour Excel ce n'est que du texte et donc ne sais pas traiter cette case en fonction... 🙁

Quelqu'un pourrait il m'aider SVP ?

Merci d'avance
 
Re : Utiliser le texte d'une cellule comme formule dans une macro

Voilà un exemple de fichier que j'ai à traiter.

Je n'ai mis que quelques fils et options (ce que j'ai à traiter contient 400 fils et env. 20 options et ces données vairent d'un fichier à un autre).

Regarde la pièce jointe Classeur1.xls

C'est bon pour vous ?

Merci pour votre aide.
 

Pièces jointes

Re : Utiliser le texte d'une cellule comme formule dans une macro

Re:

je dois dire je n'ai pas trop encore compris,
est-ce bien ceci ce que tu as besoin:
si dans la colonne G:G on trouve le texte "M9R761+BVA6", alors affiche le fil 2,

ce que tu as besoin c'est d'une fonction SI, mais s'il y a trop de conditions, mieux est la fonction Sommeprod ou d'avoir un code de variables dans un module,

mais avec un code de variables je ne me connais pas trop,
 
Re : Utiliser le texte d'une cellule comme formule dans une macro

Non, ce n'est pas cela.
En fait, ce que j'aimerai qu'Excel calcul c'est de la logique mathématique (ET OU SAUF) :
M9R761+BVA6 => M9R761 ET BVA6 = ???
- si M9R761 = Vrai et BVA = vrai => M9R761 ET BVA = vrai => fil présent
- si M9R761 = Faux et BVA = faux => M9R761 et BVA = Faux => fil abscent
- si M9R761 = Vrai et BVA = faux => M9R761 et BVA = Faux => fil abscent
- si M9R761 = Faux et BVA = vrai => M9R761 et BVA = Faux => fil abscent

mais cela se complique en fonction des "formules" possibles par ex :
SPREST+(M9R740/M9R760/M9R761) => SPREST Et (M9R740 Ou M9R760 Ou M9R761)
Et encore plus dur (en sachant que le ET dois être prioritaire par rapport au OU (comme le X par rapport au + en math) :
(SPREST+(M9R740/M9R760/M9R761))/(X74/X81+M9R761) => (SPREST et (M9R740 Ou M9R760 Ou M9R761)) Ou (X74 Ou X81 Et M9R761)

Je sais que dans VBA si je lui donne comme variables boolean toutes les Options (X74, X81, M9R740, M9R760, M9R761 etc...) et en leur donnant des valeur True ou False, je peux écrire le 1er exemple comme cela :
If M9R761 And BVA6 = true then
range ("A44") = Range ("F3") 'dit que le fil 3 est présent
Donc, ce que je voudrais (puisque VBA connait cette logique Mathématique) que VBA aille chercher exactement le texte M9R761+BVA6 dans la cellule G3 (et toute les autres fonction pour chaque fil), le transforme en "formule"" VBA M9R761 And BVA6 et que VBA le reconnaise comme formule pour qu'il puisse le calculer (comme il connait toutes les priorités de calculs et les And, Or Not).

Je ne sais pas si cela est plus claire mais pour moi, cela commence à devenir complexe en VBA !!! 😛

Merci encore pour votre aide...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
439
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…