decomposition formule chimique

  • Initiateur de la discussion Initiateur de la discussion nicroq
  • Date de début Date de début

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 !

nicroq

XLDnaute Occasionnel
Bonjour a tous et merci d avance pour votre aide

Je souhaiterai par VBA (ou par formule excel mais je ne pense pas que se soit possible) obtenir le tableau en rouge du fichier joint. Il s'agit en fait de pouvoir decomposer les formules pour obtenir un bilan.
Les formules sont toujours ecrites de la même facon et nomenclatures (les 4 exemples de formules dans le fichier sont representatives de les cas possible : soit des virgules pour le H2O soit des parenthèses pour multiplier par le nombre de composés).

Merci d'avance

Cdlt
 

Pièces jointes

Salut,
S'il s'agit simplement d'obtenir le tableau rouge, voir ici.
En exemple en cellule D12 = SOMMEPROD(($B$3:$H$3=A12)*($B$4:$H$7)) puis tirer vers le bas
Par contre, s'il s'agit de faire la tableau noir en fonction de la formule chimique, c'est autre chose.
@+ Lolote83
 
Je pense que la stratégie a utiliser en VBA est que chaque composé commmence par une majuscule et qu'ensuite si il y a un chiffre il faut multiplier, si il y a une minuscule c est le nom qui continue et si il ya une autre majuscule il s agit du composé suivant.
exemple :
CuCl2 : majuscule C puis minuscule u puis majuscule C : donc le composé est : Cu nombre : 1
puis majuscule C puis minuscule l puis chiffre 2 : donc le composé est Cl nombre 2

cela est il realisable en VBA?
 
Cela marche plutot pas mal !! merci bcp lolote83,
cependant le probleme se pose lorsque j'ai des composé avec des parenthèses :
Zn(CH3COO)2
Pourriez vous m'aider a résoudre ce soucis?
dans la formule ci dessus :
il faudrait avoir
Zn : 1
C : 4 (car 2 * 2)
H :6
O : 4 (car 2 * 2)

merci.
 
Merci lolote83 !!!
est il possible de se servir de la meme stratégie avec les parenthèses en utilisant les Asc 40 et Asc41 en faisant un autre boucle dans le IF : l idée serait la suivantes mais je n 'y arrive pas ...
If Asc(caractere) = 40 Then
molecule2= nombre de caractère jusqu'à Asc 41
for j=caratère+2 to molecule2
Mid(molecule2, j, 1) .....

merci pour votre aide encore!!!
 
J'ai remarqué aussi une petite erreur lorsqu' un composé ne match pas il passe directement au Xcell suivcant alors qu'il faudrait passer au caractere suivant.. cela est il possible?

par exmple
H3ZnC8
il me mets H3 et passe au composé suivant au lieu de mettre
H3 et C8
 
Salut Lolote et nicroq,

Ci-joint, un fichier totalement de mon cru, qui permet d'obtenir ce que tu souhaites.
Il est largement perfectible, mais ce sera une bonne base.
J'ai fait pas mal de tests, mais j'ai pu passer à côté de certains cas de figure.

Deux remarques:
  • Pour vérifier les résultats au fur et à mesure, j'ai mis les résultats de la table intermédiaire sur la feuille XL, il serait mieux, à terme de passer par un tableau VBA
  • Tel qu'il est construit, le code permet uniquement d'avoir des éléments entre parenthèses du types (CH3COO)x où x n'a qu'un seul digit
 

Pièces jointes

- 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
1
Affichages
473
  • Question Question
Microsoft 365 Règle de 3
Réponses
11
Affichages
900
Réponses
1
Affichages
686
Réponses
8
Affichages
942
Réponses
7
Affichages
950
Retour