Supprimer caractères - quadrature du cercle ?

CatCat

XLDnaute Nouveau
Bonjour,
Après avoir cherché en vain une réponse (sous forme "formule" car je nage complètement en VBA), je me résouds à déranger les experts que vous êtes en espérant que vous ne sourirez (grimacerez) pas. J'apprécie tout particulièrement le site Formation Excel VBA JB car c'est assez dans mon niveau de compréhension. Mais je n'ai rien trouvé, ou alors j'ai pas réussi à faire de lien.

Je tiens un équivalent de "carnet du lait" des dépenses, au fil des jours, à la main.
Le genre d'infos écrites sur papier (simulées, évidemment) :
Train Paris 13-18 mars 200,45 + avion Barcelone 25 mars 317.- + location voiture Hertz 25 j.x 20.- = 500.

En fin de mois, je me paluche la calculette et retranscris cela dans mon fichier Excel qui tient le budget du ménage. Pour éviter ce boulot stupide que je fais à reculons au détriment des gouzi-gouzi avec mes petits enfants, je souhaite tenir ce "carnet du lait" sur Excel directement. Jusque-là, no souci.
Ce que je cherche, c'est à avoir, dans une cellule séparée, une formule qui traite la cellule d'origine, en lui supprimant tous les caractères indésirables, puis affiche le résultat :

Si A1 contient (en vrac) :
=Train Paris 13-18 mars 200,45 + avion Barcelone 25 mars 317.- + (location voiture Hertz 25 j.x 20.35 = 508.75)
B1 devrait contenir après la formule miracle :
=200.45+317+508.75 ,et afficher le résultat, soit 1'026.20.

Ainsi, tout en générant une cellule "propre", je ne perd pas l'information de base (de type "brouillon", mais qui suffit amplement à mes besoins).

Vu qu'A1 contient en vrac, des caractères numériques, des chiffres, des opérandes et des espaces, j'imagine bien que cela implique quelques efforts de synthaxe. Pour corser le tout, le nombre de caractères est variable (et peut même d'ailleurs être assez important). Il serait par contre souhaitable de pouvoir continuer à saisir une info du type €45*1.3 = 58.50 (sans référence à d'autres cellules, car c'est seulement pour consultation éventuelle à posteriori).

Si la solution sous forme de formule existe, il va de soi que je m'empresserais de la recycler dans un cadre professionnel, car elle me semble particulièrement précieuse.

D'avance merci pour votre aide, si vous avez la patience de vous plonger dans ma problématique.
C
 

blord

XLDnaute Impliqué
Re : Supprimer caractères - quadrature du cercle ?

Bonjour,

Pourquoi ne tout simplement pas utiliser quelques colonnes dans le fichier de saisie ?

-Date
-Description
-Montant

ou encore :

-Date
-Description
-Quantité
-Coût
-Montant



Bonne journée !
 

Gruick

XLDnaute Accro
Re : Supprimer caractères - quadrature du cercle ?

Bonjour CatCat,

Enfin quelqu'un qui s'exprime bien et avec humour ! Ca devient rare.

Maintenant, il nous faudrait un exemple plus touffu, car avec une seule ligne à traiter sans en connaître d'autres, il serait vain d'en déduire quelqu'algoritme universel (poil aux aisselles).

Je crains qu'une seule formule ne puisse tout faire. Il faudrait faire d'abord se servir de la commande "convertir", et voir ce qu'on peut faire après, sachant que le nombre qui nous intéresse est en queue de chaîne de caractères.

Donc, fichier.

Gruick
 

ROGER2327

XLDnaute Barbatruc
Re : Supprimer caractères - quadrature du cercle ?

Bonjour CatCat, blord
Bonjour,

Pourquoi ne tout simplement pas utiliser quelques colonnes dans le fichier de saisie ?

-Date
-Description
-Montant

ou encore :

-Date
-Description
-Quantité
-Coût
-Montant



Bonne journée !
Ça me semble être raisonnable. Encore que les spécialistes de RegExp sont capables de tout ! (ou presque...)
Attendons...​


ROGER2327
#5600


Mercredi 11 Pédale 139 (Testament de Saint P. Ucello, le mal illuminé - fête Suprême Quarte)
15 Ventôse An CCXX, 6,6229h - chèvre
2012-W10-1T15:53:42Z
 
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : Supprimer caractères - quadrature du cercle ?

Bonjour à tous.

Lorsque la résolution d'un problème simple implique des moyens complexes, il convient à mon avis de reposer le problème, et d'envisager des solutions alternatives.
La solution de blord me semble plus raisonnable. La saisie peut d'ailleurs être largement simplifiée à l'aide de listes déroulantes.
Un fichier joint avec une vingtaine de données (fictives) nous permettrait de vous en faire la démonstration.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Supprimer caractères - quadrature du cercle ?

Bonjour,

En plaçant € à la fin des montants

Code:
Function ExtraitN(c)
  Application.Volatile
  Set obj = CreateObject("vbscript.regexp")
  obj.Global = True
  obj.Pattern = "\d+,*\d{0,2}\s*€"
  Set a = obj.Execute(c)
  tmp = ""
  For i = 0 To a.Count - 1
     tmp = tmp & a(i) & "+"
  Next i
  ExtraitN = "=" & Replace(Left(tmp, Len(tmp) - 1), " ", "")
End Function

Function Total(c)
  Application.Volatile
  Set obj = CreateObject("vbscript.regexp")
  obj.Global = True
  obj.Pattern = "\d+,*\d{0,2}\s*€"
  Set a = obj.Execute(c)
  tmp = 0
  For i = 0 To a.Count - 1
     tmp = tmp + Val(Replace(a(i), ",", "."))
  Next i
  Total = tmp
End Function

JB
 

Pièces jointes

  • Classeur2.xls
    28.5 KB · Affichages: 66
  • Classeur2.xls
    28.5 KB · Affichages: 67
  • Classeur2.xls
    28.5 KB · Affichages: 70
Dernière édition:

CatCat

XLDnaute Nouveau
Re : Supprimer caractères - quadrature du cercle ?

Merci tout le monde de votre dilligence !

Je vais déjà essayer la solution de "JB", mais là je suis sur Excel 2007, alors ça ne marche pas (je dois attendre mon laptop au bureau demain). En espérant que c'est pourça que ça ne marche pas :confused:.
En attendant, une précision à "JB" : j'écris en francs suisses et parfois je convertis en Euros, est-ce que ça marcherait avec "CHF" par exmple ?.

Plus de nouvelles demain, et en tout cas merci encore, je suis honorée du temps que vous avez déjà passé pour moi. Bonne soirée.

P.S.: il est vrai que je pourrais envisager de modifier ma pratique comme suggéré, mais beaucoup d'autres documents sont liés à ce que je fais sur Excel, et la mise en page a été soigneusement étudiée. Si je pouvais éviter... Par contre, comme indiqué, un effort de "synthaxe" ne me fait pas peur.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Supprimer caractères - quadrature du cercle ?

Re,

Juste une remarque sur la solution de JB.

Si la fonction ExtraitN(c) existe, on peut écrire la fonction Total(c) :

Code:
Function Total(c)
  Total = Evaluate(Replace(Replace(ExtraitN(c), "€", ""), ",", "."))
End Function
A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Supprimer caractères - quadrature du cercle ?

Bonjour,


Extrait les montants en €, $ , CHF (2003 2007)

-AlT+F11 pour VBA
-Insertion/Module
-Copier/Coller code

Code:
Function ExtraitN(c)
  Application.Volatile
  Set obj = CreateObject("vbscript.regexp")
  obj.Global = True
  obj.Pattern = "\d+(,|\.)*\d{0,2}\s*(€|\$|CHF)"
  Set a = obj.Execute(c)
  tmp = ""
  For i = 0 To a.Count - 1
     tmp = tmp & a(i) & "+"
  Next i
  ExtraitN = "=" & Replace(Left(tmp, Len(tmp) - 1), " ", "")
End Function

Function Total(c)
  Application.Volatile
  Set obj = CreateObject("vbscript.regexp")
  obj.Global = True
  obj.Pattern = "\d+(,|\.)*\d{0,2}\s*(€|\$|CHF)"
  Set a = obj.Execute(c)
  tmp = 0
  For i = 0 To a.Count - 1
     tmp = tmp + Val(Replace(a(i), ",", "."))
  Next i
  Total = tmp
End Function

Dans le tableur: =extraitN(A2)

JB
 

Pièces jointes

  • RegExp8.xls
    32 KB · Affichages: 69
Dernière édition:

CatCat

XLDnaute Nouveau
Re : Supprimer caractères - quadrature du cercle ?

La solution =extraitN(c) et =total(c) fonctionne à merveille sur 2003, tout du moins dans le classeur donné en exemple.
Et cela m'arrange, parce que le code, je comprends pô du tout du tout.
Par contre, dès que je reproduis cela dans un autre classeur, cela ne marche plus ???:mad::mad:

Autres questions :
1) ma monnaie de référence n'est pas l'Euro mais le franc suisse (désolée :rolleyes:, idéalement le sigle euro devrait pouvoir figurer comme d'autres caractères.
2) si c'est pô trop demander, la version pour Excel 2007 m'intéresse aussi, car elle est en train de me cerner et je ne vais pas pouvoir y échapper trop longtemps.

En tout cas, merci TOUS (TOUTES ?), vous êtes trop top !!!
 
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Supprimer caractères - quadrature du cercle ?

>ma monnaie de référence n'est pas l'Euro mais le franc suisse

Les fonctions reconnaissent €,$ et CHF.


>Par contre, dès que je reproduis cela dans un autre classeur, cela ne marche plus ???


-Il faut créer un module : Alt+F11 puis Insertion/Module et y coller le code des fonctions


>la version pour Excel 2007 m'intéresse aussi,


C'est la même

JB
 

MJ13

XLDnaute Barbatruc
Re : Supprimer caractères - quadrature du cercle ?

Bonjour à tous

Bravo Jacques pour cette solution avec RegExp si cher à Jean-Noël :).

Voici un fichier avec la solution de JB et une solution VBA, un peu plus longue :eek:.
 

Pièces jointes

  • Cherche_Prix_JB_MJ.xlsm
    29 KB · Affichages: 74

CatCat

XLDnaute Nouveau
Re : Supprimer caractères - quadrature du cercle ?

Wow, c'est l'opulence !
A l'heure qu'il est, cela ne fonctionne pas sur mon pc domestique. Il doit manquer un plug-in, je chargerai donc ma moitié (du métier)de s'en charger.
En tout cas, merci encore. Moi qui me croyais une bonne utilisatrice d'Excel, ... la révélation fut qu'en fait, la route est longue pour en maîtriser le 10%...
Merci merci merci merci pour tout.
 

Statistiques des forums

Discussions
312 489
Messages
2 088 849
Membres
103 974
dernier inscrit
chmikha