Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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

  • Eric 1.xlsx
    11 KB · Affichages: 15

soan

XLDnaute Barbatruc
Inactif
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

  • Eric 1.xlsm
    17.3 KB · Affichages: 6

Staple1600

XLDnaute Barbatruc
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
 

mapomme

XLDnaute Barbatruc
Supporter XLD
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
 

Staple1600

XLDnaute Barbatruc
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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…