supprimer que les lettres

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

Olyxier

XLDnaute Occasionnel
Bonjour

j'ai un super code que l'on ma donnée ici en 2008.

comme je suis toujours aussi mauvais qu'à l'époque j'ai encore besoin d'aide.

ce code supprime les lettres ainsi que les points et autres guillemet

Dim C As Range
Dim i As Byte
Dim nombre As String

For Each C In Range("CY15:CY34")
If Not IsEmpty(C) Then
For i = 1 To Len(C)
If IsNumeric(Mid(C, i, 1)) Then
nombre = nombre & Mid(C, i, 1)
End If
Next i
If nombre <> "" Then C = CDbl(nombre)
nombre = "0"
End If
Next C

maintenant la modification que je voudrais est que dans cette ligne le code laisse les guillemets ainsi que les chiffres et les D.

exemple 5as 0ar Dat 4as 4as Das (09) 2as 1as 8rt...

ce qui doit rester: 50D44D(09)218

cela est il possible, merci a vous pour votre aide et bonne soirée😱
 
Re : supprimer que les lettres

Bonjour Olyxier,

à tester :

Code:
Dim C As Range
Dim i As Byte
Dim texte As String

For Each C In Range("CY15:CY34")
If Not IsEmpty(C) Then
texte = ""
For i = 1 To Len(C)
If IsNumeric(Mid(C, i, 1)) or Mid(C, i, 1)="(" or Mid(C, i, 1)=")" or Mid(C, i, 1)="D" Then
texte = texte & Mid(C, i, 1)
End If
Next i
If texte <> "" Then C = texte 
End If
Next C
 
Re : supprimer que les lettres

Bonjour,

Essayes ceci :

Code:
  Dim C As Range
  Dim i As Byte
  Dim nombre As String
  Dim l As String
  
  For Each C In Selection 'Range("CY15:CY34")
    If Not IsEmpty(C) Then
      For i = 1 To Len(C)
        l = Mid(C, i, 1)
        If IsNumeric(l) Or l = "D" Or l = "(" Or l = ")" Then
          nombre = nombre & Mid(C, i, 1)
        End If
      Next i
      If nombre <> "" Then C = nombre
      nombre = ""
    End If
  Next C

Caillou
 
Re : supprimer que les lettres

Bonjour le fil,

C'est comme tototiti, que je salue 🙂 et un peu pour le fun :

Code:
Dim C As Range, i As Byte, x$, txt$
For Each C In Range("CY15:CY34")
  If Not IsEmpty(C) Then
    For i = 1 To Len(C)
      x = Mid(C, i, 1)
      If IsNumeric(x) Or InStr("D()", x) Then txt = txt & x
    Next i
    C = txt
    txt = ""
  End If
Next C

Edit : salut aussi Caillou

A+
 
Dernière édition:
Re : supprimer que les lettres

Bonsoir le fil 🙂,
Pour le fun et pour faire plaisir à Jean-Marie 😛
Code:
Dim m, mm, tmp$
Dim C As Range
For Each C In Range("CY15:CY34")
With CreateObject("vbscript.regexp")
    .Global = True: .IgnoreCase = True: .Pattern = "[\d()D]*"
    Set mm = .Execute(C.Text)
    For Each m In mm
        tmp = tmp & m.Value
    Next m
End With
C = tmp
tmp = ""
Next
Bonne soirée 😎
 
Re : supprimer que les lettres

Re 🙂,
je n'avais pas vu la demande de blanc 😱
Code:
Dim m, mm, tmp$
Dim C As Range
For Each C In Range("CY15:CY34")
With CreateObject("vbscript.regexp")
    .Global = True: .IgnoreCase = True: .Pattern = "[\d()D]*"
    Set mm = .Execute(C.Text)
    For Each m In mm
        If m <> "" Then
        tmp = tmp & m.Value & " "
        End If
    Next m
End With
C = Replace(Replace(tmp, "( ", "("), " )", ")")
tmp = ""
Next
Bonne soirée 😎
 
Re : supprimer que les lettres

Salut Jean-Noël 🙂

Il me semble qu'Olyxier veut des espaces partout sauf pour un nombre entre parenthèses...

Alors à la fin il faut faire un traitement sur tout le texte pour enlever ces espaces. Un peu lourd 😱

A+
 
Re : supprimer que les lettres

Bonjour JNP,
Re,

je reprends le code de job parce que je ne comprends rien à regExp...

Code:
Dim C As Range, i As Byte, x$, txt$, OuvrPar As Boolean
For Each C In Range("CY15:CY34")
  If Not IsEmpty(C) Then
OuvrPar = False
    For i = 1 To Len(C)
      x = Mid(C, i, 1)
      If IsNumeric(x) Or InStr("D()", x) Then txt = txt & x & " "
    If x = ")" Then OuvrPar = False
    If x = "(" Or OuvrPar Then
    txt = Left(txt, Len(txt) - 1)
    OuvrPar = True
    End If
    Next i
    C = txt
    txt = ""
  End If
Next C
 
Dernière édition:
Re : supprimer que les lettres

Re 🙂,
je reprends le code de job parce que je ne comprends rien à regExp...
C'est Jean-Marie qui m'a poussé 😀...
Mais c'est vrai qu'il y a une notion de masque très puissante, et assez simple à utiliser 😉.
C'est le Pattern qui fait tout : "[\d()D]*"
[] est tout ce qu'on accepte comme caractère
\d est équivalent à 0-9, donc tout ce qui est numérique
* sert à dire qu'on accepte autant de fois ce qui est entre crochets
L'avantage, c'est qu'il est aisément modifiable.
Par contre, à partir du moment où on mets des blancs partout, pourquoi ne pas utiliser
Code:
Replace(Replace(txt, "( ", "("), " )", ")")
A + 😎
 
Re : supprimer que les lettres

Re,

Par contre, à partir du moment où on mets des blancs partout, pourquoi ne pas utiliser
Code:
Replace(Replace(txt, "( ", "("), " )", ")")

dis moi si je me trompe, s'il y a 5 chiffres ou D entre les parenthèses ça n'enlèvera pas les espace entre chiffres ou D, seulement ceux collés aux parenthèses ?

Pour RegExp je te remercie d'essayer de me convertir mais la littérature sur le sujet m'a semblé si indigeste, et comme je n'en ai jamais eu un besoin vital...
 
Re : supprimer que les lettres

Encore moi 😛...
D'ailleurs, si la structure est bien celle donnée au départ, et en tenant compte du titre "supprimer que les lettres, l'ajout d'un espace dans le Pattern donne aussi le bon résultat
Code:
Dim m, mm, tmp$
Dim C As Range
For Each C In Range("CY15:CY34")
With CreateObject("vbscript.regexp")
    .Global = True: .IgnoreCase = True: .Pattern = "[\d()D ]*"
    Set mm = .Execute(C.Text)
    For Each m In mm
        If m <> "" Then
        tmp = tmp & m.Value
        End If
    Next m
End With
C = tmp
tmp = ""
Next
Bonne soirée 😎
 
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

Discussions similaires

Réponses
4
Affichages
113
Réponses
8
Affichages
408
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
354
Retour