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

XL 2013 Décomposition 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 par avance pour votre aide.

Voici ma problématique que je souhaiterai resoudre en VBA :
IL faudrait que je puisse decomposé ma formule chique d'un composé en ions.
Actuellement j'ai une fonction qui me permets de décomposé ma formule en composé chimique : voir fichier joint. exemple : (NH4)2HPO4 ==> N2H8H1P1O4

Or je souhaiterai maintenant pouvoir extraire et lister les ions polyatomiques de cette formule :
(NH4)2HPO4
NH4 = ion ammonium = 2
PO4 = ion phpophate = 1

Le but etant de lister l'ensemble des ions de chaque composé et obtenir le tableau en jaune du fichier joint.

Merci pôur votre aide!!!
 

Pièces jointes

Bonjour,

Oui l'ensemble des ions sont dans une liste sur une autre feuille (voir piece jointe)
merci pour votre aide. j'ai un peu avancé sur le sujet mais lorsque je mets la liste sur une autre feuille ca ne marche pas.. alors que si je mets la liste sur la meme feuille cela fonctionne???
 

Pièces jointes

En fait le fichier" liste" constitue un deuxième onglet du premier fichier. Je n'ai envoyé que la liste désolé..
Il y a les ions et aussi certaine molécule qui ne sont pas des ions mais qu'il faut que je puisse repérer aussi.
merci.
 
Bonjour.
Pouvez vous joindre le classeur où vous avez avancé sur le sujet ?
En attendant un petit bout de code pouvant servir dans une boucle s'il n'y a pas d'imbrications :
VB:
Function Ion(ByVal Texte As String, IonRef As String) As Long
Dim Ts() As String, Qt As Long
Ts = Split(Texte, IonRef)
For P = 1 To UBound(Ts)
   If Ts(P - 1) Like "*(" And Ts(P) Like ")#*" Then Qt = Val(Mid$(Ts(P), 2)) Else Qt = 1
   Ion = Ion + Qt: Next P
End Function
Sub TestIon()
MsgBox Ion("(NH4)2HPO4", "NH4")
End Sub
 
Dernière édition:
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…