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"
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"
Regarde du côté de la fonction VBA "INSTR"
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
En reprenant l'exemple de JF
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.
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))
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
Un code plus simple qui supprime tout ce qui se trouve a droite du premier caractère "(" trouvé
NB : le précédent code supprime tout ce qui se trouve entre parenthèses (parenthèses incluses)
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))
Ex : Bidulle (truc) machin => Bidulle machin
Jérôme
Envoyé par jfontaineEnvoyé par FCL31plus simple
Je sais ouskel'n'or mais des fois je suis compliqué dans ma tête
Jérôme
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
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.
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
On peut faire comme ça :ça suppose Laetita que le "(" existe, alors que c'est parfois.
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
re,
si pas présent on considére expression numeriqueça suppose Laetita que le "(" existe, alors que c'est parfois.
non ???? a moins que j' ai loupe quelque chose!!!! a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Not IsNumeric(c) Then
ps autant pour moi effectivement si pas numerique erreur le code de l'ami alex corrige le pb...
SALUTATIONS
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)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager