XL 2019 Supprimer uniquement les chiffres dans les cellules d'une colonne

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

eduraiss

XLDnaute Accro
Bonjour le forum

Ci-joint un fichier
En colonne A des cellules avec des noms a l'intérieur certains ont des chiffres et d'autres pas

Il me faudrait si possible une automatisation VBA pour supprimer les chiffres uniquement

Merci de votre aide

Cordialement,
 

Pièces jointes

Bonjour Eric, djidji,

ton fichier en retour ; fais Ctrl e ➯ travail effectué. 😊

VB:
Option Explicit

Sub Essai()
  Dim n&: n = Cells(Rows.Count, 1).End(3).Row: If n = 1 Then Exit Sub
  Dim T, chn$, lng As Byte, p As Byte, c As Byte, i&
  n = n - 1: T = [A2].Resize(n)
  For i = 1 To n
    chn = T(i, 1): lng = Len(chn)
    If lng > 0 Then
      p = lng
      Do
        c = Asc(Mid$(chn, p, 1))
        If c = 32 Or (c >= 48 And c <= 57) Then p = p - 1 Else Exit Do
      Loop Until p < 2
      T(i, 1) = Left$(chn, p)
    End If
  Next i
  Application.ScreenUpdating = 0: [A2].Resize(n) = T
End Sub

soan
 

Pièces jointes

Bonsoir le fil, eduraiss, djidji, soan

Une autre syntaxe VBA possible
VB:
Sub Pas_de_chiffres()
Dim cr&, c&, colA
With Application
    .ScreenUpdating = False
    colA = Range("A1", Cells(.Rows.Count, "A").End(xlUp)).Value2
    For c = 1 To UBound(colA)
        For cr = 1 To Len(colA(c, 1))
        If Mid(colA(c, 1), cr, 1) Like "[0-9]" Then Mid(colA(c, 1), cr) = Chr(1)
        Next
        colA(c, 1) = .Trim(Replace(colA(c, 1), Chr(1), vbNullString))
    Next
End With
Cells(2).Resize(UBound(colA)) = colA
End Sub

Et une autre pour le fun
VB:
Dim X&
Sub Pour_le_Fun(Optional CodeVBA_post_CouvreFeu)
X = Cells(Rows.Count, 1).End(3).Row
Cells(2)(2).Resize(X).Formula = "=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,0,""""),1,""""),2,""""),3,""""),4,""""),5,""""),6,""""),7,""""),8,""""),9,"""")"
Cells(2)(2).Resize(X) = Cells(2)(2).Resize(X).Value
End Sub

NB: On peut aussi le faire avec la formule qu'on peut voir dans la seconde macro
 
Bonsoir à tous,

Une autre :
Code:
Sub SansChiffre()
Dim i&
   Application.ScreenUpdating = False
   With Intersect(Sheets("Feuil1").Columns(1), Sheets("Feuil1").UsedRange)
      For i = 0 To 9: .Replace What:=i, Replacement:="", LookAt:=xlPart: Next i
   End With
End Sub
 
Re

La voici
(heureusement que mon armoire à RegExp est à portée de main 😉)
VB:
Sub version_RegExp()
Dim colA, c&
colA = Range("A1", Cells(Rows.Count, "A").End(xlUp)).Value2
With CreateObject("VBScript.RegExp")
    .Pattern = "\d"
    For c = 1 To UBound(colA)
    colA(c, 1) = .Replace(colA(c, 1), vbNullString)
    Next
End With
Range("A1", Cells(Rows.Count, "A").End(xlUp)) = colA
End Sub
NB: Ne fonctionne pas sur Excel Mac
 
- 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
14
Affichages
481
  • Question Question
Microsoft 365 Power Query
Réponses
8
Affichages
231
Réponses
5
Affichages
119
Réponses
7
Affichages
258
Retour