Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Epurer et splitter une chaine de caractères.

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

D.D.

XLDnaute Impliqué
Bonjour à tous.

je cherche une formule qui me permettrai de ne garder que les premiers caractères situés avec des caractères spécifiques.

Exemple: caractères délimiteurs: (espace), +, -, /, &, !, \, ~, (et d'autres, les assitantes AdV ne sont jamais à cours d'idées...)

et donc quelques exemples.
86521760 - 86520990 → 86521760
ZZKD012466+86520299 → ZZKD012466
86520970 + ZZKD → 86520970
fr → fr
ZZKD012466 → ZZKD012466
86521760 / 86520990 → 86521760
86520296&86520299 → 86520296


Une idée ?
Je pourrai passer avec du VBA, bien entendu, mais "pour la beauté du geste", je voudrai une formule.
 
Solution
Bonjour D.D. bonjour le forum,

Comme certain gestes ne sont pas forcément beaux, je te propose une solution VBA (à adapter) :

VB:
Sub Macro1()
Dim O As Worksheet
Dim TV As Variant
Dim TS() As Variant
Dim I As Integer
Dim J As Byte

Set O = Worksheets("Feuil1")
TV = O.Range("A1").CurrentRegion
TS = Array(" ", "+", "-", "/", "&", "!", "\", "~")
For I = 1 To UBound(TV, 1)
    TV(I, 1) = Trim(TV(I, 1))
    For J = 0 To UBound(TS)
        If UBound(Split(TV(I, 1), TS(J))) > 0 Then
            TV(I, 1) = Trim(Split(TV(I, 1), TS(J))(0))
            Exit For
        End If
    Next J
Next I
O.Range("C1").Resize(UBound(TV, 1), 1).Value = TV
End Sub
Bonjour D.D. bonjour le forum,

Comme certain gestes ne sont pas forcément beaux, je te propose une solution VBA (à adapter) :

VB:
Sub Macro1()
Dim O As Worksheet
Dim TV As Variant
Dim TS() As Variant
Dim I As Integer
Dim J As Byte

Set O = Worksheets("Feuil1")
TV = O.Range("A1").CurrentRegion
TS = Array(" ", "+", "-", "/", "&", "!", "\", "~")
For I = 1 To UBound(TV, 1)
    TV(I, 1) = Trim(TV(I, 1))
    For J = 0 To UBound(TS)
        If UBound(Split(TV(I, 1), TS(J))) > 0 Then
            TV(I, 1) = Trim(Split(TV(I, 1), TS(J))(0))
            Exit For
        End If
    Next J
Next I
O.Range("C1").Resize(UBound(TV, 1), 1).Value = TV
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…