Rechercher et supprimer des caractères

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

G

Goulven35

Guest
Bonjour,

Voici mon problème :

A l'issue d'une lecture code barre, j'ai dans une cellule les caractères correspondants à 2 codes qui se trouvent cote à cote sur le support lu. Hors, je ne souhaite conserver que les caractères correspondant à l'un des 2 codes. Heureusement, les bits d'entrée/sortie sont différents. Mais comme les 2 codes ne sont pas toujours bien alignés, il ne sont pas toujours lus dans le même ordre. Je ne peut donc pas utiliser la fonction STXT. Existe-t-il une solution ?

Exemple : Après lecture, j'obtiens les cellules suivantes :
a025658ab070011b
a652536ab281156b
b021134ba285426b
a542687ab072777b
b071702ba984723a

Je souhaite ne concerver que les 6 caractères contenus entre les caractères "b".

Par avance merci.
 
Re : Rechercher et supprimer des caractères

Bonjour à tous

Une solution utilisant les expressions régulières
Code:
Function code6(txt$)
With CreateObject("VBScript.RegExp")
    .Pattern = "[b]\d{6}"
    code6 = Mid(.Execute(txt)(0), 2, 6)
End With
End Function
Utilisation:
(copier le code de la fonction dans un module)
Ex : si les données en colonne A alors
en B1 , saisir la formule suivante : =code6(A1), puis recopie vers le bas

EDITION 1 : une variante sans le Mid
Code:
Function code6(txt$)
With CreateObject("VBScript.RegExp")
.Pattern = "[b]\d{6}": code6 = Replace(.Execute(txt)(0), "b", "")
End With
End Function
EDITION 2 : version pour traiter la colonne A d'un seul coup
Code:
Sub extraction_en_masse()
Dim c As Range
For Each c In Range([A1], [A65536].End(xlUp))
    With CreateObject("VBScript.RegExp")
        .Pattern = "[b]\d{6}"
        c.Offset(, 1).NumberFormat = "@"
        c.Offset(, 1) = Replace(.Execute(c.Text)(0), "b", "")
    End With
Next c
End Sub
 
Dernière édition:
- 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

D
Réponses
3
Affichages
1 K
Darkjoh
D
L
Réponses
7
Affichages
1 K
LEWISBEGIN
L
A
Réponses
17
Affichages
3 K
Ananas94
A
M
  • Question Question
Réponses
0
Affichages
1 K
Mirguy23
M
Retour