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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <emmsanchez@free.fr> a écrit dans le message de news: eEGcBsHSGHA.792@TK2MSFTNGP10.phx.gbl...
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 ?
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
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
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.
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.