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

reconnaitre une valeur numérique dans une cellule alphanumérique

bastin alexandre

XLDnaute Nouveau
bonjour,

je suis actuellement en train de faire un tableau excel pour calculer des concentrations lors de titrage direct en chimie et quand je rentre les différentes formules dans les cellules il se peut, selon les réactif de l'équation chimique utilisée qu'il y aie un coefficient stœchiométrique (ce n'est pas toujours le cas).
exemple
2 NaOH + H2SO4 => Na2SO4 + 2 H2O
j'aimerai une formule qui détecte le 2 devant NaOH mais si par exemple celui ci n'est pas présent (comme devant H2SO4 )alors la formule prend 1 comme valeur sous entendue.

la valeur que la formule donnera sera entrée elle même dans une autre formule.

n'hésitez pas a me poser des question sur ma question j'ai du mal a exprimer ma question, merci de votre compréhension et de vos réponses.
 

job75

XLDnaute Barbatruc
Bonsoir bastin alexandre, bienvenue sur XLD, bonsoir Hieu,

Pas besoin de fichier c'est très facile à comprendre.

Voyez le fichier joint et cette fonction VBA :
Code:
Function AjouteCoef$(t$)
Dim s1, i As Byte, s2, j%
s1 = Split(t, " => ")
If UBound(s1) <> 1 Then Exit Function
For i = 0 To 1
  s2 = Split(s1(i), " + ")
  For j = 0 To UBound(s2)
    If Val(s2(j)) = 0 Then s2(j) = "1 " & s2(j)
  Next
  s1(i) = Join(s2, " + ")
Next
AjouteCoef = Join(s1, " => ")
End Function
A placer dans un module standard.

Ici les signes + et => doivent toujours être précédés et suivis d'un espace.

Bonne nuit.
 

Pièces jointes

  • Ajout d'un coefficient(1).xls
    69.5 KB · Affichages: 28
  • Ajout d'un coefficient(1).xlsm
    19.7 KB · Affichages: 33

job75

XLDnaute Barbatruc
Bonjour à tous,

Pour récupérer les coefficients voyez cette fonction dans le fichier joint :
Code:
Function Coef(t$, ordre%)
Dim s1, i As Byte, s2, j%, x%, n%
Coef = ""
s1 = Split(t, " => ")
If UBound(s1) <> 1 Then Exit Function
For i = 0 To 1
  s2 = Split(s1(i), " + ")
  For j = 0 To UBound(s2)
    x = Val(s2(j))
    If x = 0 Then x = 1
    n = n + 1
    If n = ordre Then Coef = IIf(i, x, -x): Exit Function
Next j, i
End Function
Pour les distinguer, les coefficients à gauche du signe => sont rendus négatifs.

Format personnalisé (facultatif) sur les colonnes B:H 0" d";0" g"


Bonne journée.
 

Pièces jointes

  • Coefficient(1).xls
    70.5 KB · Affichages: 33
  • Coefficient(1).xlsm
    20.5 KB · Affichages: 33
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…