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 :

Suppression de texte entre parenthèses [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut Suppression de texte entre parenthèses



    Dans une colonne d'une feuille, j'ai des données mais certaines finissent par du texte entre parenthèse
    ex : DUPONT (Truc)

    Je voudrais savoir si il y moyen de supprimer "(Truc)"

    Sachant que se n'est pas forcement le mot "Truc"

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Regarde du côté de la fonction VBA "INSTR"

  3. #3
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Re

    Un bout de code qui fonctionne sur la cellule B2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim intDeb As Integer
    Dim IntFin As Integer
     
    intDeb = InStr(1, Range("B2").Value, "(")
    IntFin = InStr(1, Range("B2").Value, ")")
     
    Range("B2").Value = Trim(Replace(Range("B2").Value, Mid(Range("B2").Value, intDeb, IntFin - intDeb + 1), ""))
    Jérôme

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    En reprenant l'exemple de JF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If instr(Range("B2").Value ,"(")<> 0 then _
        Range("B2").Value = trim(Split(Range("B2").Value, "(")(0))
    En mettant ça, tu testes la cellule pour vérifier qu'une parenthèse est bien présente. Si oui, tu crées un tableau ou la parenthèse est le séparateur et tu prends le premier indice (0) du tableau.
    Trim retire l'éventuel espace placé à droite (et à gauche) du texte restant.
    Bonne soirée

    EditTu peux aussi utiliser Find (---> F1) pour ne rechercher que les cellules contenant une parenthèse. Le meilleur exemple est dans l'aide en ligne

  5. #5
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Un code plus simple qui supprime tout ce qui se trouve a droite du premier caractère "(" trouvé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim StrA As String
     
    StrA = Range("B2").Value
     
    Range("B2").Value = Trim(Left(StrA, InStr(1, StrA, "(") - 1))
    NB : le précédent code supprime tout ce qui se trouve entre parenthèses (parenthèses incluses)
    Ex : Bidulle (truc) machin => Bidulle machin
    Jérôme

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par jfontaine
    NB : le précédent code supprime tout ce qui se trouve entre parenthèses (parenthèses incluses)
    Ex : Bidulle (truc) machin => Bidulle machin
    Citation Envoyé par FCL31
    certaines finissent par du texte entre parenthèse
    plus simple

  7. #7
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Je sais ouskel'n'or mais des fois je suis compliqué dans ma tête
    Jérôme

  8. #8
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour tous, un autre exemple avec left boucle simple a adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub es()
    Dim c As Range
    Application.ScreenUpdating = False
    For Each c In Range("a2", Range("a65536").End(xlUp))
    If Not IsNumeric(c) And c <> "" Then
    c = Left(c, InStr(c, "(") - 1)
    End If: Next c
     End Sub
    SALUTATIONS

  9. #9
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour,
    ça suppose Laetita que le "(" existe, alors que c'est parfois.
    Ouesklnor ne copie pas s'il n'y a pas "(" mais je suppose que tu as omis volontairement le Else
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  10. #10
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    a tous


    Le code de ouskel'n'or a l'air de marche nikel

    J'ai pas testé les autre (désolé ) mais je les garde sous le coude


  11. #11
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    ça suppose Laetita que le "(" existe, alors que c'est parfois.
    On peut faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub esII()
    Dim c As Range
    Application.ScreenUpdating = False
    For Each c In Range("a2", Range("a65536").End(xlUp))
    If Not IsNumeric(c) And c <> "" Then
        pos = InStr(c, "(")
        If pos > 0 Then
            c = Left(c, pos - 1)
        End If
     
    End If: Next c
    End Sub

  12. #12
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re,
    ça suppose Laetita que le "(" existe, alors que c'est parfois.
    si pas présent on considére expression numerique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsNumeric(c)  Then
    non ???? a moins que j' ai loupe quelque chose!!!! a+

    ps autant pour moi effectivement si pas numerique erreur le code de l'ami alex corrige le pb...
    SALUTATIONS

  13. #13
    Débutant   Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 885
    Points : 267
    Points
    267
    Par défaut
    Vos codes ont l'air de bien marché

    Toutefois, à l'avantage de supprimer les espaces restant à la fin de la cellules (même si j'ai déjà une macro qui le fait, c'est pas plus mal)


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copier/coller texte entre parenthèses à la fin du document
    Par emulamateur dans le forum VBA Word
    Réponses: 1
    Dernier message: 01/04/2013, 22h55
  2. [REGEX] Texte entre parenthèse
    Par Amuny dans le forum VB.NET
    Réponses: 3
    Dernier message: 18/04/2011, 14h45
  3. Réponses: 2
    Dernier message: 25/06/2008, 23h19
  4. Réponses: 1
    Dernier message: 27/10/2007, 22h18
  5. Réponses: 9
    Dernier message: 10/03/2007, 10h02

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