IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Remplacer/supprimer caractères en fin de chaine uniquement


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut Remplacer/supprimer caractères en fin de chaine uniquement
    Bonjour,
    J'ai un tableau de plus de 200000 lignes ….
    Dans la colonne C, j'ai des chaines alphanumériques, de différentes longueurs.
    Le but est de supprimer la chaine de caractères "-A" quand elle est présente uniquement en fin de chaine.

    Exemple :

    FR-658497
    EZ-8710236-C
    RFZ-874591
    RFE-A748954125-A
    RT-5874932174-A
    AZ-789451-B


    Seuls les "-A" indiqués en rouge ici doivent être supprimés.

    Merci par avance de l'aide

    Bonne journée

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Bonsoir
    sans VBA et avec la fonction droite "=DROITE(A2;2)" et puis un filtre sur le -A et tu supprime
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    j'ai peut-être oublié de le dire
    désolé
    besoin du code en VBA
    merci

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Désolé ma réponse est fausse
    Mais encore sans VBA et avec avec Ctrl + H et tu cherche -A et tu remplace par vide
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Compare le résultat de InStrRev à la longueur de la chaine et tu sauras sur ta suite est en fin de chaine.
    https://msdn.microsoft.com/en-us/VBA...trrev-function

    Si c'est le cas, il ne te restes plus qu'à la supprimer en utilisant un Left de longueur Len() - 2.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Merci BENNASR... mais non.

    '-------------------

    Merci Menhir

    voici mon code (pas du tout optimisé à la vue de mes occurrences sur les 200000 lignes , car j'ai aussi à supprimer des "-B", "-C".... )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Sub SupCarac()
     
    ' supprime les 2 derniers caracteres "-A" de chaines decaractères de différentes longueurs
     
    Dim Strg As String
    Dim I, x, y, pos As Integer
    Dim maDerLigne As Integer
     
     
        maDerLigne = 0
        maDerLigne = Range("A" & Rows.Count).End(xlUp).Row  'donne le n° de la dernière ligne
     
        For I = 2 To maDerLigne   ' balaie le tableau de la ligne 2 à la dernière ligne
            Strg = Cells(I, 3).Value
            x = InStrRev(Strg, "-A")    ' recherche la chaine de caractère "-A"
            y = Len(Strg)
            pos = y - x
            If pos = 1 Then
                Strg = Left(Strg, Len(Strg) - 2)   '  supprime les 2 derniers caractères
                Cells(I, 3).Value = Strg   'remplace la valeur de la cellule
            End If
        Next I
    End Sub
    voilà, c'est fini

    encore merci

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for........
    if cells(x,y).text like "*-A" then ' remarque l'etoile devant mais pas en fin ce qui indique que l'on cherche que les like a la fin 
    next


    et pour les A B ou C si je me trompe pas c'est "*-[A|B|C]" avec ou sans les "|" je sais plus
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour !

    A partir de la fonctionnalité de recherche d'Excel et telle qu'expliquée dans l'aide VBA interne de Range.Find
    donc d'un niveau débutant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Demo1()
               Dim Rg As Range
            Application.ScreenUpdating = False
        With Cells(1).CurrentRegion.Columns(3)
               Set Rg = .Find("*-A", , xlValues, xlWhole)
            If Not Rg Is Nothing Then
                Do
                     Rg.Value = Left(Rg.Value, Len(Rg.Value) - 2)
                       Set Rg = .FindNext(Rg)
                Loop Until Rg Is Nothing
            End If
        End With
            Application.ScreenUpdating = True
    End Sub

    Une autre voie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Demo2()
        Dim V, R&
            V = Cells(1).CurrentRegion.Columns(3).Value
            Application.ScreenUpdating = False
        For R = 1 To UBound(V)
            If V(R, 1) Like "*-A" Then Cells(R, 3).Value = Left(V(R, 1), Len(V(R, 1)) - 2)
        Next
            Application.ScreenUpdating = True
    End Sub
    ___________________________________________________________________________________________________________

         Merci de cliquer sur en bas à droite de chaque message ayant aidé puis sur pour clore cette discussion …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Citation Envoyé par Stardust31 Voir le message
    j'ai aussi à supprimer des "-B", "-C"...
    Via la fonction de feuille de calculs EQUIV (Match en VBA) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Demo3()
        Dim S$(), V, R&
            S = Split("-A -B -C")
            V = Cells(1).CurrentRegion.Columns(3).Value
            Application.ScreenUpdating = False
        For R = 1 To UBound(V)
            If IsNumeric(Application.Match(Right(V(R, 1), 2), S, 0)) Then Cells(R, 3).Value = Left(V(R, 1), Len(V(R, 1)) - 2)
        Next
            Application.ScreenUpdating = True
    End Sub
    ___________________________________________________________________________________________________________

         Merci de cliquer sur en bas à droite de chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Tu peux t'inspirer de ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test()
      Dim Cell As Range
     
      For Each Cell In Range("a1:a5")
        Cell.Value = IIf(Cell.Value Like "*-[A-C]", Left(Cell.Value, Len(Cell.Value) - 2), Cell.Value)
      Next
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    salut MarcL Ok allons y pour les raccourcis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
        With ActiveSheet.Range("$A$1:$A$6")
            .AutoFilter Field:=1, Criteria1:="=*-A"
            r = .Cells.Replace(what:="-A", Replacement:="")
        .AutoFilter
        End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Salut Pierre !

    Oui c'est plus léger, j'aurais dû consulter l'aide de Like pour me rafraîchir les neurones !  


    Salut Patrick !

    Dommage !   Tu remplaces aussi le -A au milieu de la cellule se terminant par -A de son exemple …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    wouah !!! tout ça !
    mes neurones fument !!
    je vais analyser tout cela

    merci à tous

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    a bon
    chez moi ce qui l'on au milieu ne partent pas d'ailleurs si je ne me trompe pas le criterial indique bien que c'est que pour la fin avec l'etoile manquante a la fin non?

    edit: a OK autant pour moi ,il y a les deux possibilités dans une meme cellule
    il doit bien y avoir un moyen de changer le replace textuel par un replace contextuel
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Le mieux pour plusieurs critères c'est via Like ou encore For Each + Find

    Stardust31, compares déjà sur tes 200 000 lignes mes deux premières démos pour voir si une est plus rapide que l'autre …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    n'ayant pas trouvé si c'est possible et si oui la formule d'un replace contextuel

    je me suis rabattu sur un replace left -len(x)-2 apres les filtres A B ou C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test2()
        Dim BadFin, i,cel as range 
        BadFin = Array("-A", "-B", "-C")
        With ActiveSheet.Range("A1:A10")
            For i = 0 To UBound(BadFin)
                .AutoFilter Field:=1, Criteria1:="=*" & BadFin(i)
                For Each cel In .SpecialCells(xlVisible).Cells
                    cel.Value = Left(cel.Text, Len(cel.Text) - 2)
                Next
                .AutoFilter
            Next
        End With
    End Sub
    je sais pas si c'est plus rapide faut verifier sur une plage importante en terme de lignes
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  17. #17
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    SpecialCells étant une méthode des plus vicieuses car limitée en taille, donc à éviter avec une grande plage de données …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  18. #18
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Salut Pierre !

    Oui c'est plus léger[...]
    Salut Marc,

    Bah, j'ai fait des regex aujourd'hui, alors ça a tilté... Cela dit, ma première solution n'est pas correcte pour les cellules qui contiendraient le pattern au milieu de la chaîne...

    J'adapte ci-dessous ma réponse pour ne travailler qu'avec les fins de chaîne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Test()
      Dim cell As Range
      Dim regEx As Object
     
      Set regEx = CreateObject("VBscript.RegExp")
      regEx.Pattern = "(-[A-C])$"
      For Each cell In Range("a1:a3")
        cell.Value = regEx.Replace(cell.Value, "")
      Next cell
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  19. #19
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour à tous et mille excuses à chacun (je suis fatigué et vais au plus court avant d'aller à un dodo indispensable)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    toto = "RFE-A748954125-A"
     toto = StrReverse(toto)
     If Left(toto, 2) = "A-" Then toto = Mid(toto, 3)
     MsgBox StrReverse(toto)
    Pardonnez-moi

    EDIT suis-je bête ! La fatigue n'excuse pas tout...
    Un déclic en me couchant -->> ultra-simple --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto = "RFE-A748954125-A"
     MsgBox Left(toto, Len(toto) - 3) & Replace(toto, "-A", "", Len(toto) - 2)
    encore pardon...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut
    Bonjour à tous,
    j'ai pris cette solution
    merci à Pierre
    merci à tous

    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut Marc,

    Bah, j'ai fait des regex aujourd'hui, alors ça a tilté... Cela dit, ma première solution n'est pas correcte pour les cellules qui contiendraient le pattern au milieu de la chaîne...

    J'adapte ci-dessous ma réponse pour ne travailler qu'avec les fins de chaîne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Test()
      Dim cell As Range
      Dim regEx As Object
     
      Set regEx = CreateObject("VBscript.RegExp")
      regEx.Pattern = "(-[A-C])$"
      For Each cell In Range("a1:a3")
        cell.Value = regEx.Replace(cell.Value, "")
      Next cell
    End Sub

Discussions similaires

  1. Remplacer un caractère ciblé par une chaine en css uniquement
    Par wpast dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 12/05/2016, 08h50
  2. Remplacer les caractères accentués dans une chaine
    Par shaun_the_sheep dans le forum Général Java
    Réponses: 5
    Dernier message: 07/05/2008, 10h41
  3. Supprimer caractères en début de chaine
    Par kimcharlene dans le forum Langage
    Réponses: 4
    Dernier message: 06/05/2008, 02h09
  4. [RegEx] Supprimer les caractères en fin de chaine ?
    Par tintin72 dans le forum Langage
    Réponses: 8
    Dernier message: 05/04/2008, 12h15
  5. Dll C++ - Caractère de fin de chaine
    Par waw_41 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 11/12/2007, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo