Supprimer des caractères après dernière virgule

Bonjour le forum

je viens vers vous pour un petit problème et je ne sais pas comment m'y prendre pour le résoudre

Je cherche à supprimer tous les caractères qui sont après la dernière virgule, ainsi que le crochet du début.

C'est à dire à partir de ça :

{11203/785,CHA-11203-3159}

{11267/40,CHA-11267-3001}

{11203/311,CHA-11203-3002}

{11203/98,11203/1,11098/36,11098/35}

{11203/98,11203/1,11098/36,11098/35}

Je cherche à obtenir ce résultat :

11203/785

11267/40

11203/311

11203/98,11203/1,11098/36

11203/98,11203/1,11098/36

J'ai déjà développé une macro qui supprime un certain nombres de caractères , voir pièce jointe.

Or je ne peux pas utiliser cette macro puisque le nombre de caractères changent. Je cherche donc un code vba qui dirait par exemple : "supprimer tous les caractères après la dernière virgule"

Dans l'attente de vous lire, je vous remercie par avance de votre disponibilité et pour votre aide

27test.xlsm (10.26 Ko)

Bonjour,

Formule suivante en B2 à copier vers le bas :

=SUBSTITUE(GAUCHE(A2;NBCAR(A2)-TROUVE(",";A2;TROUVE(",";A2)));"{";"")

Bonjour,

La fonction InStrRev() permet d'effectuer une recherche depuis la fin de la chaîne donc, de droite à gauche :

Sub Test()

    Dim plage As Range
    Dim Cel As Range
    Dim Pos As Integer

    'défini la plage sur la colonne A de la feuille active et à partir de A2
    With ActiveSheet: Set plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With

    For Each Cel In plage

        'recherche la première virgule en partant de la fin de la chaîne
        Pos = InStrRev(Cel.Value, ",")

        'résultat dans la colonne de droite (B). Le -1 supprime la virgule
        Cel.Offset(, 1).Value = Left(Cel.Value, Pos - 1)

    Next Cel

End Sub

Bonjour Eole, bonjour le forum,

Essaie comme ça (à adapter) :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim COL As Integer 'déclare la variable COL (COLonne)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DV As Byte 'déclare la variable DV (Dernière Virgule)
Dim T As String 'déclare la variable T (Texte)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
COL = 1 'définit la colonne COL (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, COL).End(xlUp).Row 'définit la dernière cellule éditée DL de la colonne COL de l'onglet O
For I = 1 To DL 'boucle sur toutes les lignes de 1 à DL
    'définit la position DV de la dernière virgule de la cellule de la boucle
    DV = InStrRev(O.Cells(I, COL), ",", Len(O.Cells(I, COL)), vbTextCompare)
    If DV = 0 Then GoTo suite 'si pas de virgule va à l'élément suivant via l'étiquette "suite"
    T = Mid(O.Cells(I, COL).Value, 2, DV - 2) 'définit le texte T
    O.Cells(I, COL).Value = T 'renvoie le texte T dans la cellule de la boucle
suite: 'étiquette
Next I 'prochaine ligne de la boucle
End Sub

[Édition]

Bonjour Theze, nos posts se sont croisés

Bonjour eole-33, le forum,

je te retourne ton fichier modifié :

65test.xlsm (14.91 Ko)

Ctrl e ➯ travail effectué !


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Bonjour eole-33, le forum,

voici une 2ème version :

99test-v2.xlsm (15.27 Ko)

* résultats et utilisation : identiques

* si dans ton vrai fichier tu as plusieurs milliers de lignes,

tu verras que c'est beaucoup plus rapide !

dhany

Bonjour le forum ,

Merci Raja, Theze , ThauThème , Dhany pour votre aide.

Ces exemples de codes m'aident énormément.

Je reviens vers vous si je rencontre un quelconque problème.

Dans l’immédiat, vos réponses me conviennent parfaitement.

Merci pour votre disponibilité , je clos le sujet.

merci pour ton retour ! bonne continuation !

dhany

Rechercher des sujets similaires à "supprimer caracteres derniere virgule"