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 !

Michou9

XLDnaute Occasionnel
Bonjour à tous
je souhaite extraire des nombres à l'intérieure de cellules
Ces nombres sont tous suivi d'un symbole par exemple "€"
Mon problème c'est qu'il y plusieurs symboles identiques
Pour ressortir le premier, nombre c'est facile
Pour le 2ème, j'y arrive aussi
Mais pour les suivants, je cale
Si je peux obtenir de l'aide ?
Merci d'avance

exemple d'une cellule :
F:\House\A-85\1\ZZ\4 machin 315€Net 330€ 333€ 344€ 385€ 122m 130m 900m 987m 2588€m @2023 TypeA 597€an
Je souhaite donc ressortir 315€ 330€ 344€ 385€ et ainsi de suite
 
Bonjour Michou, Chris,
Un essai en Pj avec une fonction perso en VBA :
VB:
Function Separe(C$, N%)
Dim T, T2
T = Split(C, "€")
If N > UBound(T) Then Separe = "": Exit Function
T2 = Split(T(N - 1), " ")
Separe = CDbl(T2(UBound(T2)))
End Function
 

Pièces jointes

Bonjour sylvanu
Merci beaucoup !!
C'est bien plus simple que par formule et cela fonctionne parfaitement
Je l'ai également appliqué pour les nombres suivis de la lettre m
Je vais poursuivre les tests
Mais cela semble aussi fonctionner parfaitement
Je n'ai malheureusement pas compris ta fonction
Mais c'est exactement ce que je souhaitais

 
Re,
Le Split découpe une chaîne par rapport à un séparateur, et met le tout dans un tableau.
Le premier découpe avec le symbole euro.
Le second prend une chaîne du premier tableau et découpe avec l'espace.
Il suffit alors de récupérer la dernière valeur qui est celle cherchee.
 
Bonjour Michou, Chris,
Un essai en Pj avec une fonction perso en VBA :
VB:
Function Separe(C$, N%)
Dim T, T2
T = Split(C, "€")
If N > UBound(T) Then Separe = "": Exit Function
T2 = Split(T(N - 1), " ")
Separe = CDbl(T2(UBound(T2)))
End Function
à tester :
VB:
Function Separe(C As String, N As Long) As Double

    Dim T() As String
    Dim T2() As String
    Dim valeur As String
    
    On Error GoTo erreur
    
    'Découpe sur le symbole €
    T = Split(C, "€")
    
    'Vérifie si la position existe
    If N < 1 Or N > UBound(T) Then
        Separe = 0
        Exit Function
    End If
    
    'Découpe par espaces
    T2 = Split(Trim(T(N - 1)), " ")
    
    'Récupère le dernier élément
    valeur = T2(UBound(T2))
    
    'Conversion en nombre
    Separe = CDbl(valeur)
    
    Exit Function

erreur:
    Separe = 0

End Function
 
Je vois qu'il n'y a même pas de message d'erreur si il n'y a pas de 3ème occurrence ou plus
C'est cette ligne qui évite les erreurs; Si le N° demandé est supérieur au nombre de € trouvé, on renvoie vide :
VB:
If N > UBound(T) Then Separe = "": Exit Function

NB: On peut mettre partout la même fonction :
Code:
=Separe($A1;COLONNE(A1))
Le Colonne(A1) s'incrémentera automatiquement.
 
C'est cette ligne qui évite les erreurs; Si le N° demandé est supérieur au nombre de € trouvé, on renvoie vide :
VB:
If N > UBound(T) Then Separe = "": Exit Function

NB: On peut mettre partout la même fonction :
Code:
=Separe($A1;COLONNE(A1))
Le Colonne(A1) s'incrémentera automatiquement.
Il y a quand même une erreur dans le cas ou il y aurait pas de nombre avant le premier €
Mais c'est pas grave avec sierreur c'est bon
 
Il y a quand même une erreur dans le cas ou il y aurait pas de nombre avant le premier €
Il suffit de s'en préserver :
VB:
Function Separe(C$, N%)
Dim T, T2: Separe = ""
T = Split(C, "€")
If N > UBound(T) Then Separe = "": Exit Function
T2 = Split(T(N - 1), " ")
On Error Resume Next
Separe = CDbl(T2(UBound(T2)))
End Function
 

Pièces jointes

Je rencontre quand même un problème
pas avec €, mais avec le "m"
Pour celui-ci j'ai donc adapter ta fonction comme ceci

Function Separem(C$, N%)
Dim T, T2
T = Split(C, "m ")
If N > UBound(T) Then Separem = "": Exit Function
T2 = Split(T(N - 1), " ")
Separem = CDbl(T2(UBound(T2)))
End Function

Cela fonctionne aussi bien qu'avec €
sauf dans le cas avec "2588€m" qui est listé alors qu'il le devrait pas
 
Je rencontre quand même un problème, pas avec €, mais avec le "m"
Expliquez ce que vous voulez faire avec le "m" ? Récuperer les valeurs avant le "m" ? Si oui, testez :
VB:
Function Separem(C$, N%)
Dim T, T2
T = Split(C, "m ")
If N > UBound(T) Then Separem = "": Exit Function
T2 = Split(T(N - 1), " ")
Separem = CDbl(T2(UBound(T2)))
If Right(T2(UBound(T2)), 1) = "€" Then Separem = ""
End Function

NB: Utilisez la balise </> pour le code c'est plus lisible.
 

Pièces jointes

- 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
Retour