Macro excel Extraire prix dans texte

Résolu/Fermé
Morbonnat Messages postés 18 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 21 janvier 2009 - 22 mai 2008 à 10:09
Morbonnat Messages postés 18 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 21 janvier 2009 - 25 mai 2008 à 13:03
Bonjour,

Je voudrai faire une macro excel qui me permette d'extraire un prix dans un phrase pour pourvoir ensuite le comparer a la valeur d'une autre cellule.

- Est-il possible d'extraire selement les caractères numériques d'une chaine de caratère grace a VBA? (si oui, quels sont les commandes)
- Sinon, j'avais pensé chercher dans le texte le signe "€" et prendre les 3 caractères de gauche mais j'arrive pas a le programmer.

Probleme supplémetaire, il n'y a pas une cellule a verifier par ligne mais 2!

La macro doit chercher avoir un résonnement du genre:

- Chercher prix dans B, si il n'y a pas de prix, chercher dans C
- Comparer la valeur trouvée à celle de la cellule Z
- SI valeur trouvée = Z passer a la ligne suivante SINON me prevenir (genre mettre "Pareil" dans la colone D)(A terme je voudrais qu'elle puisse remplacer le prix tout seule mais c'est une autre histroire!!!)
- Faire pareil pour la ligne suivante

Merci Enormement a tout ce qui m'aideront, vous sauvez mon poste!
A voir également:

2 réponses

Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
22 mai 2008 à 11:48
Salut Morbonnat,
dans le cas où tes prix n'ont pas de décimale, voici une fonction qui extrait les chiffres de ta phrase.
c'est vraiment de la bidouille, mais ça semble marcher.
Une fois collée dans un module, tu peux l'utiliser dans Excel avec = Extraitnum(A1)
C'est déjà un début...


Function ExtraitNum(Plage As Range)
Dim Contenu As String, i As Integer, j As Integer, Car As String, Test

Contenu = Plage.Value
j = 1

For i = 1 To Len(Contenu)
Car = Mid(Contenu, j, 1)
On Error GoTo REMPLACE
Test = CInt(Car): GoTo SUITE
REMPLACE: Contenu = Replace(Contenu, Car, ""): j = j - 1: Resume Next
SUITE: j = j + 1
Next i
ExtraitNum = CInt(Contenu)
End Function

A suivre...
0
Morbonnat Messages postés 18 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 21 janvier 2009 1
22 mai 2008 à 19:16
Merci Ivan-hoe

Malheuresemetn je ne comprend pas ou intégre cette fonctiom :s

Sous VBA, rien ne ce passem même si je mais es tag "sub" & "end Sud" avant et apres...
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
23 mai 2008 à 08:30
Salut,
Tout d'abord, cette fonction doit être stockée dans un module.
Ensuite, plusieurs possibilité :
1- tu peux simplement t'inspirer des instructions de cette fonction pour récrire un code plus complet qui fasse ce que tu veux ;
2- tu peux utiliser cette fonction telle quelle dans une procédure VBA.
Par exemple, ta phrase est en A1 et tu as une variable Prix, tu peux écrire :
Prix = ExtraitNum(Range("A1"))

A noter que tu peux ausi modifier comme suit :
Function ExtraitNum(Phrase As String)

Dans ce cas, si ta phrase est contenue dans la variable Phrase, tu peux écrire :
Prix = ExtraitNum(Phrase)

3- tu peux utiliser cette fonction dans Excel (tu la retrouves dans les fonctions personnalisées).
Si ta phrase est en A1, tu peux écrire en B1 = ExtraitNum(A1)
J'ai l'impression qu'une fois que le prix est extrait de ta phrase, tout le reste pourrait se faire avec des formules Excel.

Si ce n'est toujours pas clair, n'hésite pas à re-solliciter.
A suivre...
0
Morbonnat Messages postés 18 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 21 janvier 2009 1
25 mai 2008 à 13:03
Salut Ivan-hoe

Merci pour ta formule, elle marche nikel !! :D

Par contre je vais devoir passer access pour faire la suite. Je me suis rendu compte que ce sera plus facile avec une base de donnée qu'avec excel.

Je vais donc utiliser ta formule pour extraire le prix et envoyé tout sa dans une table, ensuite avec plusieurs requête sa marche nikel

Merci pour ton aide!!!
0