Extraction de données et opération sur celle-ci

Bonjour,

Voilà je ne suis pas mauvais sur excel avec les formule. je m'en sort bien mais j'aimerais réalisé un truc assez complexe et donc je m'adresse à vous.

J'aimerai extraire des caractère défini d'une cellule, les dispose dans leur ordre d’apparition et en faire le calcul dans une autre cellule.

Si possible en formule svp (mais ça m’étonnerai que cela soit possible)

Sinon VBA.

Comme je ne connais pas VBA je n'ai rien fait

Sinon pour le côter formule j'ai surtout plancher sur STXT mais je ne crois pas que cela suffise.

Cela me simplifiera les choses dans mon travail. Sinon je continuerai à faire le report manuellement.

Merci d'avance pour votre temps.

21aideformule.xlsx (9.34 Ko)

Bonjour,

Une proposition avec une fonction personnelle

A+

14aideformule.xlsm (15.47 Ko)

Bonjour,

Une proposition avec VBA et fonction personnelle

Oups!!! pas vu la proposition de Tangy désolé


Re,

En plus j'ai oublié le bouton, je l'ai ajouté

Explications en feuil2

21aideformule.xlsm (22.84 Ko)

merci pour pour vos proposition je vais voir ça !!

... Je viens de les tester et les deux correspondent je vais les intergrer à mon tableau

Merci Beacoup!!

Frangy merci pour ton tableau il correspond exactement à ce que je veu en faire mais il ne prend pas en compte les chiffre décimaux. cela est-il possible?

Renvoi du tableau avec exemple

14aideformule.xlsm (16.04 Ko)

Essaie comme cela

A+

20aideformule.xlsm (15.64 Ko)

MERCI pour la rapidité de ta réponse

Ca fonctionne parfaitement

ca me me faire gagner ps mal de temps

encore merci.

Re,

Suite à votre remarque j'ai modifié ma function pour remplacer la , par un . car evaluate ne prend pas la virgule en considération pour calculer.

Function Extract_F(x As String)

Dim chaine As String, caract As String, Expression As Variant, Signes As String

Dim i As Integer, Longueur As Integer, cel As Range

'Liste des signes

Signes = "(),.*-+/"

'La chaine complète et lenombre de caractères qu'elle contient

chaine = Range("C4")

Longueur = Len(chaine)

'Analyse de la chaine caractère par caractère pour constituer l'expression à calculer

For i = 1 To Longueur

caract = Mid(chaine, i, 1)

'Si une , est détectée elle doit être remplacée par un point car Evaluate ne calcule qu'avec un point

'comme séparateur décimal

If caract = "," Then caract = "."

If InStr(1, Signes, caract) Or IsNumeric(caract) Then

Expression = Expression + caract

End If

Next i

Extract_F = Evaluate(Expression)

End Function

Donc en D4 mettre =Extract_F(C4)

Et plus besoin du bouton alors

oui c'est ce que j'ai compris merci à toi pour les explications

Robjam j'ai un souci avec t'as formule

En fait je voudrai que lorsque j'écris dans la cellule Extract_F(cellule) il me calcul la cellule à laquelle je fait référence.

mais ton code ne calcul que la formule en C4.

Comment changer cela?

Function Extract_F(x As String)

Dim chaine As String, caract As String, Expression As Variant, Signes As String

Dim i As Integer, Longueur As Integer, cel As Range

'Liste des signes

Signes = "(),.*-+/"

'La chaine complète et lenombre de caractères qu'elle contient

chaine = Range("c4")

Longueur = Len(chaine)

'Analyse de la chaine caractère par caractère pour constituer l'expression à calculer

For i = 1 To Longueur

caract = Mid(chaine, i, 1)

'Si une , est détectée elle doit être remplacée par un point car Evaluate ne calcule qu'avec un point

'comme séparateur décimal

If caract = "," Then caract = "."

If InStr(1, Signes, caract) Or IsNumeric(caract) Then

Expression = Expression + caract

End If

Next i

Extract_F = Evaluate(Expression)

End Function

Bonjour le fil

Pas bien suivi, mais normalement

Si tu appelles ta fonction par:

=Extract_F(C4)

Voici le code qui va bien

Function Extract_F(Rng As Range)
  Dim chaine As String, caract As String, Expression As Variant, Signes As String
  Dim i As Integer, Longueur As Integer, cel As Range
  'Liste des signes
  Signes = "(),.*-+/"
  'La chaine complète et lenombre de caractères qu'elle contient
  chaine = Rng.Value
  Longueur = Len(chaine)
  'Analyse de la chaine caractère par caractère pour constituer l'expression à calculer
  For i = 1 To Longueur
    caract = Mid(chaine, i, 1)
    'Si une , est détectée elle doit être remplacée par un point car Evaluate ne calcule qu'avec un point
    'comme séparateur décimal
    If caract = "," Then caract = "."
    If InStr(1, Signes, caract) Or IsNumeric(caract) Then
      Expression = Expression + caract
    End If
  Next i
  Extract_F = Evaluate(Expression)
End Function

A+

ah j'oubliai, j'ai fait une gestion des erreurs avec la formule ESTERR mais je me demandais si ça ne serai pas mieux de l'incure dans la fonction VBA.


DSL vient de voir la réponse merci ca marche

Rechercher des sujets similaires à "extraction donnees operation celle"