Calcul masse molaire à partir d'une formule brute

cauvin77

XLDnaute Nouveau
Bonjour à toutes et à tous,

Merci par avance du temps que vous prenez à lire ma question.

Depuis quelques temps déjà et je ne démord pas depuis une ou deux semaines, je cherche à résoudre mon soucis et c'est pourquoi j'ai besoin de votre avis/aide.

J'ai une base de donnée sous excel avec pour chaque atome (texte) correspond un numero atomique (chiffre). exemple : H correspond à 1, C correspond à 12 et Cl correspond à 35.

Dans une cellule, je rentre la formule de la molécule et j'aimerais qu'il calcul la masse. exemple : Je renseigne C2H5ClCH3 (C2H5ClCH3), j'aimerais pouvoir calculer le nombre total de C (soit 3 ici), de H (8) et de Cl (1) pour ensuite calculer la masse soit 3 x 12 + 8 x 1 + 1 x 35.

Bien évidemment, je ne connais pas le langage vba et aimerais savoir si une solution par formule existe.
Je commence sérieusement à en douter mais j'aimerais avoir l'avis d'expert.

En vous remerciant par avance,
Et bonne journée, soirée à vous,
Vincent
 

Victor21

XLDnaute Barbatruc
Bonjour, cauvin77.

Hors Excel, cet outil en ligne devrait vous intéresser : vous avez le choix entre 3 précisions (collège, lycée, pharmaceutique).
La précision pharmaceutique donne pour C2H5ClCH3 :
- 2 atomes de Carbone de masse molaire 12.0107 g.mol-1, soit 0.302%
- 5 atomes de Hydrogène de masse molaire 1.00794 g.mol-1, soit 0.063%
- 1 atome de Chlore de masse molaire 35.4527 g.mol-1, soit 0.446%
- 1 atome de Carbone de masse molaire 12.0107 g.mol-1, soit 0.151%
- 3 atomes de Hydrogène de masse molaire 1.00794 g.mol-1, soit 0.038%
M(C2H5ClCH3) = M(C2H5Cl1C1H3) = 12.0107×2 + 1.00794×5 + 35.4527×1 + 12.0107×1 + 1.00794×3 = 79.54832 g.mol-1 ou g/mol.

La précision collège :
- 2 atomes de Carbone de masse molaire 12 g.mol-1, soit 0.304%
- 5 atomes de Hydrogène de masse molaire 1 g.mol-1, soit 0.063%
- 1 atome de Chlore de masse molaire 35 g.mol-1, soit 0.443%
- 1 atome de Carbone de masse molaire 12 g.mol-1, soit 0.152%
- 3 atomes de Hydrogène de masse molaire 1 g.mol-1, soit 0.038%
M(C2H5ClCH3) = M(C2H5Cl1C1H3) = 12×2 + 1×5 + 35×1 + 12×1 + 1×3 = 79 g.mol-1 ou g/mol.
 

cauvin77

XLDnaute Nouveau
Bonjour Victor21,

Merci de ta réponse, en effet c'est exactement le calcul que je cherche à réaliser sur excel.
Je ne connaissais pas ce site mais très intéressant.
Je cherche en effet à réaliser le calcul en précision pharmaceutique et bien que le site puisse le faire, j'aimerais pouvoir l'automatiser à plusieurs formules d'où mon objectif de le faire sur excel.

Merci encore,

Bien cordialement,
Vincent
 

cauvin77

XLDnaute Nouveau
Re,

Encore merci de ton attention Victor21.

En effet, j'ai songé à cette possibilité, mais j'ai plus d'une centaine d'atome (texte) donc cela pourrait être délicat. De plus, j'aimerais rentrer plusieurs formules de type C2H5ClCH3 et calculer la masse correspondante automatiquement.

Mais merci encore
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @cauvin77, @Victor21 :),

Par formule, selon moi, c'est sans espoir (si quelqu'un en trouve une, je mange mon chapeau o_O)

Je me suis donc orienté vers une fonction personnalisée (en fait deux fonctions):
  • la première ("invisible" pour l'utilisateur) consiste à développer la formule chimique en remplaçant les termes entre parenthèses. Elle s'appelle dvpt()
  • la seconde (celle du calcul de la masse molaire et qui intéresse l'utilisateur) s'appelle massmol()
Les argument de la fonction MassMol(X, plageMendev As Range, Optional reinit) :
  • X est la formule de la molécule dont on veut la masse molaire
  • plageMendev est la plage de cellule du tableau de Mendeleïev 'colonne 1-> symbole de l'élément, colonne 2, sa masse molaire)
  • reinit est un élément facultatif qui, s'il est présent, indique à la fonction de relire le tableau de Mendeleïev (utile si on change la table de Mendeleïev). Sinon le plus simple est d'omettre ce paramètre et à chaque changement de la table, refermer et ré-ouvrir le fichier)
les valeurs en retour de la fonction MassMol():
  1. #N/A si un élément est trouvé mais cet élément n'a pas de masse molaire (exemple l'élément Ts)
  2. #REF! si la formule comporte des éléments inconnus ou ne respecte pas la syntaxe d'une formule de molécule
  3. sinon renvoie la masse molaire de la molécule
avertissement:
  • les majuscules et minuscules ont leur importance. Un élément chimique au sein de la formule doit respecter la casse. (ex HO représente un atome d'hydrogène suivi d'un atome d'oxygène qui est différent de Ho qui est un atome de Holmium). C'est d’ailleurs la même chose pour le site mentionné par @Victor21.
  • il ne doit pas y avoir d’imbrication de parenthèses
nota:
  • J'ai peu testé les résultats. A vous de le faire et, le cas échéant, de revenir sur ce fil
  • le code est commenté (tant bien que mal). Le code est dans Module1.
pour le futur:
  • on pourrait, comme sur le site, pour chaque élément de la formule, afficher le détail de la masse molaire et sa fréquence

edit: bonjour @vgendron ;)
 

Pièces jointes

  • cauvin77- Masse molaire- v1.xlsm
    36.9 KB · Affichages: 43
Dernière édition:

cauvin77

XLDnaute Nouveau
Bonjour @mapomme , bonjour @vgendron , et rebonjour @Victor21 ,

Merci pour vos réponse, c'est top. Vraiment un grand merci. J'ai aussi discuté de ce petit cas à un collègue, ce dernier m'a renvoyé vers un un lien avec un module que je vous joins : https://chemistry-in-excel.jimdo.com/links/

C'est aussi très intéressant et on accès à la formule vba.

Je vais utiliser tous ces différents outils, les comparer et je peux maintenant dire que mon problème est résolu.

Néanmoins, vos messages sont très intéressants, notamment le dernier lien sur la mise en forme qui est vraiment génial. Si vous avez d'autres petites astuces sur ces sujets, je suis vraiment intéressé.

Encore un grand merci à vous.

Cordialement,
Vincent
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Salut à tous,

pour le futur:
  • on pourrait, comme sur le site, pour chaque élément de la formule, afficher le détail (atomes et fréquences)

Le futur, c'est maintenant. Une version v2 avec une autre fonction ( Constituants() ) qui retourne les atomes ainsi que leur fréquence.
Voir colonne E.
 

Pièces jointes

  • cauvin77- Masse molaire- v2.xlsm
    41.3 KB · Affichages: 30

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Victor21 :)
Il me reste à régler le cas des parenthèses :)
Mais ça vient, ça vient...

Prends tout ton temps. Vas y calmement, avec mesure. Fais des pauses. Ne me dis pas que je dois commencer à préparer l'assaisonnement de mon couvre-chef
1030131
 

Discussions similaires

Réponses
55
Affichages
3 K

Statistiques des forums

Discussions
312 076
Messages
2 085 084
Membres
102 772
dernier inscrit
bluetesteur