OVH Cloud OVH Cloud

Supprimer les chiffres dans une cellule

2 réponses
Avatar
Emmanuel Sanchez
Bonjour,
je dispose d'un tableau ou certaines cellules contiennent texte+chiffre ,
par exemple : exemple2 , exemple023 , etc.
Comment faire pour éliminer ces chiffres par une macro ?

Merci d'avance

Emmanuel

2 réponses

Avatar
michdenis
Bonjour Emmanuel,

Adapte le nom de la feuille et la plage de cellules.

'---------------------------------
Sub Chiffre()

Dim Rg As Range, S As String
Dim R As String, A As Long

With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Range("a65536").End(xlUp).Row)
End With
Application.ScreenUpdating = False
For Each c In Rg
For A = 1 To Len(c)
S = Mid(c, A, 1)
If IsNumeric(S) Then
R = R & S
End If
Next
'Si tu veux conserver le 0 si premier digit du nombre
c.NumberFormat = "@" 'si non donne format "General"
c.Value = R
R = ""
Next
Set Rg = Nothing
End Sub
'---------------------------------


Salutations!




"Emmanuel Sanchez" a écrit dans le message de news:
Bonjour,
je dispose d'un tableau ou certaines cellules contiennent texte+chiffre ,
par exemple : exemple2 , exemple023 , etc.
Comment faire pour éliminer ces chiffres par une macro ?

Merci d'avance

Emmanuel
Avatar
Rai
Bonjour,
je dispose d'un tableau ou certaines cellules contiennent texte+chiffre ,
par exemple : exemple2 , exemple023 , etc.
Comment faire pour éliminer ces chiffres par une macro ?

Merci d'avance

Emmanuel



Bonjour,


Je propose une solution avec une approche légèrement différente de
MichDenis :

Sub lettre()
For Each c In Selection
MaChaine = c
For i = 1 To Len(A)
If Not IsNumeric(Right(MaChaine, i)) Then
c.Value = Left(MaChaine, Len(MaChaine) - i + 1)
Exit For
End If
Next i
Next c
End Sub


1. j'utilise Selection, ce qui te permet de sélectionner les cellules
concernées avan d'exécuter la macro.
Tu peux aussi utiliser ActiveSheet.UsedRange.
Ainsi tu gagnes du temps puisque le travail se fait sur des zones réduites
2. je traite la chaine en partant de la fin, ce qui accélère légèrement
le tout puisqu'on passe à la cellule suivante dès que la première lettre
a été trouvée.

Il y a certainnement d'autres solutions...

Cordialement

Rai