Récupérer une donnée entre deux caractères

  • Initiateur de la discussion Initiateur de la discussion ben01
  • 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 !

B

ben01

Guest
Bonjour tout le monde


Voila mon problème:

Dans une cellule j'ai toutes ces données:

11/01/11 OD 1 8298 Régul. TVA pièce 8298 EUR 12,87 BIi
ou
28/02/11 OD 1 81417 Régul. TVA pièce 81417 EUR GIi 7,62

Je veux récupérer 2 données la date (ça c'est facile avec la formule GAUCHE() ) et le montant compris entre EUR et BIi ou après les 3 lettres (cela correspond a un débit ou un crédit). Je compte utiliser deux formules car ces montants je dois les "ranger" dans la colonne débit ou crédit selon les cas.

Pour ça je voulais utiliser cette formule:
=STXT(A12;CHERCHE("EUR";A12;1)+4;CHERCHE("BIi";A12;1)-CHERCHE("EUR";A12;1)-5)
ça fonctionne mais les 3 lettres (BIi ou GIi dans l'exemple) peut être n'importe quel autre caractère mais toujours 3 lettres.
Je ne sais pas comment on peut faire pour lui faire comprendre que ça peut être n'importe quel lettre de l'alphabet?

Merci d'avance
Ben
 
Re : Récupérer une donnée entre deux caractères

Bonjour,

Je remarque dans tes exemples que dans les nombres que doit retourner la fonction, il y a une virgule (et seulement à cet endroit) avec 2 décimales.
Est-ce toujours le cas?
Ex: Si ce nombre est 12,00, comment est-il écrit? (12,00 ou simplement 12).
On pourrait localiser ce nombre à l'aide de cette virgule.

Je pense que le plus simple dans ton cas serait de créer une fonction personnalisée en VBA.

A+
 
Re : Récupérer une donnée entre deux caractères

Bonsoir,
en B12
Code:
=CNUM(STXT(A12;CHERCHE("EUR";A12;1)+4;CHERCHE(" ";A12;CHERCHE("EUR";A12;1)+4)-(CHERCHE("EUR";A12;1)+4)))
ou fonction perso en B12 = EXTR(A12)
Code:
Function EXTR(a$)
x = InStr(1, a, "EUR") + 4
y = InStrRev(a, " ", -1)
EXTR = CDbl(Mid(a, x, y - x))
End Function
A+
kjin
 
Re : Récupérer une donnée entre deux caractères

Bonjour et merci beaucoup tt le monde pour votre aide!

TempusFugit le problème avec données/convertir c'est que ça découpe la cellule quand il y a un espace. Et le nombre d'espace n'est pas fixe. De plus quelque fois le montant est écrie comme ça: 4 050.60

dra72: oui il y a toujours une virgule! Je vais voir si je peux m'aider d'elle! On m'a conseiller d'utiliser VBA mais je t'avoue que je n'y connais rien! C'est peut être le moment de m'y mettre!

JBOBO, ça marche pas.Ce que je comprend pas c'est si je refais exactement la même chose que toi avec les même exemples ça marche pas! est ce que c'est ma version d'excel qui ne vas pas? (excel 2007)

kjin ta formule arrive a me sortir les débits inférieure à 1 000. Car si le débit est de 1 000 il ne met que 1.

Encore merci pour votre aide!
ben
 
Re : Récupérer une donnée entre deux caractères

Pourtant cela semble marcher

Code:
Sub Macro1()
Range("A1") = "11/01/11 OD 1 8298 Régul. TVA pièce 8298 EUR 12,87 BIi"
Range("A1").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 4), Array(2, 9), Array(3, 9), Array(4, 9), Array(5, 9), Array(6, 9), _
        Array(7, 9), Array(8, 9), Array(9, 9), Array(10, 1), Array(11, 9)), _
        TrailingMinusNumbers:=True
End Sub
 
Re : Récupérer une donnée entre deux caractères

Bonjour à tous

Avec 2 fonctions personnalisées
NB: Attention ne donnent que la 1ere date trouvée en commencant par le debut et que le 1er nombre trouvé en commencant par la fin
 

Pièces jointes

Dernière édition:
Re : Récupérer une donnée entre deux caractères

Merci TempusFugit et PierreJean.
Merci pour vos solutions.
Le problème est que si on a, par exemple, 4 557,60. la solution de TempusFugit ne prend que le 4 et la solution de PierreJean 557,60.
Je pensais le faire avec cette logique:
Détecter "EUR" puis Détecter 3lettres
dans une cellule mettre ce qu'il y a entre EUR et les 3lettres et dans une autre cellules mettre ce qu'il y a après les 3lettres
Mais je j'ai pas comment on peut faire pour détecter 3 lettres! (ex: Alm; DSz; qsD...)
Encore Merci
Ben
 
Re : Récupérer une donnée entre deux caractères

Bonjour, salut Pierrejean 🙂,
...De plus quelque fois le montant est écrie comme ça: 4 050.60
kjin ta formule arrive a me sortir les débits inférieure à 1 000...
C'est une précision
Code:
Function EXTR(a$)
x = InStr(1, a, "EUR") + 4
For y = x To Len(a)
    If InStr(1, "0123456789, ", Mid(a, y, 1)) Then n = n & Mid(a, y, 1)
Next
EXTR = CDbl(n)
End Function
A+
kjin
 
Re : Récupérer une donnée entre deux caractères

Bonjour à tous,

Une tentative formule (mais il doit y avoir plus simple) :

Code:
=SI(ESTNUM(DROITE(DROITE(A2;NBCAR(A2)-TROUVE("EUR";A2)-3))*1);STXT(DROITE(A2;NBCAR(A2)-TROUVE("EUR";A2)-3);TROUVE(" ";DROITE(A2;NBCAR(A2)-TROUVE("EUR";A2)-3))+1;99);GAUCHE(DROITE(A2;NBCAR(A2)-TROUVE("EUR";A2)-3);TROUVE(" ";B2)-1))

@+
 
Re : Récupérer une donnée entre deux caractères

Merci pierrejean!
C'est bon!
Je pense que je vais pouvoir différencier les débit ou crédit avec un SI. (si les 3 dernier caractères sont des lettres je le mets dans une colonne "x" si non dans une colonne "y")
Merci pour le temps que vous avez consacré à mon problème!
 
Re : Récupérer une donnée entre deux caractères

Merci tt le monde
j'ai donc utilisé la solution de pierrejean.
J'ai rajouté une condition pour savoir si c'est un crédit ou un débit en regardant les 5 dernier caractères.
Je ne sais pas si m'a macro est très académique mais ça fonctionne grâce a votre aide!
Encore Merci
Ben

Sub control()
Dim i As Long
For i = 1 To 1000
Cells(i, 2) = Right(Cells(i, 1), 5)
If Cells(i, 2).Value Like " [A-Z;a-z][A-Z;a-z][A-Z;a-z] " Then
Cells(i, 3) = nombre(Cells(i, 1))
Else
Cells(i, 4) = nombre(Cells(i, 1))
End If
Next i
End Sub
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

M
Réponses
3
Affichages
2 K
M
N
Réponses
6
Affichages
14 K
Retour