VBA - Supprimer chiffres d'une cellule Excel

VBA - Supprimer chiffres d'une cellule Excel

Salut,

Je souhaiterais utiliser la fonction Replace en VBA pour effacer les chiffres de ma cellule, autrement dit remplacer les chiffres par le caractère vide.

Je sais que cela marche:

Dim TestString As String = "Shopping List"

TestString = Replace(TestString, "o", "i") ' Returns "Shipping List"

J'ai dans la cellule A1 : "154 Samsung 12565" et je souhaiterais avoir la même chose sans aucun chiffre soit: "Samsung"

J'ai essayé :

TestString = ActiveWorkbook.Sheets("Sheet1").Cells(1, 1).Value

TestString = Replace(TestString, digit, "") ' ne marche pas

Comment dit on remplacer les chiffres par espace vide ?

Merci d'avance pour votre aide

Salut Grizou,

voici une solution avec SPLIT, essai qui postule que, dans tous les cas, chifres et lettres sont bien séparés par UN espace!

Clique sur les cellules à traiter!

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
Dim tTab
Dim sFlag As String
'
tTab = Split(Target.Value, " ")
For x = 0 To UBound(tTab)
    If Not IsNumeric(tTab(x)) Then sFlag = sFlag & tTab(x)
Next
Target.Value = sFlag
'
End Sub

A+

65oterchiffres.xlsm (14.44 Ko)

Merci beaucoup, ça marche parfaitement

Qu'est ce que je dois changer dans le code si je veux que cela ne s’applique qu'à la colonne D

Merci d'avance

Bonjour Grizou, bonjour le forum,

Si la structure est toujours la même, xxx[espace]ttttt[espace]xxx (ou x est un chiffre et t une lettre), tu peux aussi utiliser la fonction Split qui sépare dans un tableau tous les élément par rapport à un séparateur (ici l'espace).

Split (Range("A1").Value, " ", 1) va renvoyer un tableau contenant trois données ( indexées de 0 à 2) : 154, Samsung et 12565. Tu récupères la données que tu veux avec son index .

Split (Range("A1").Value, " ", 1)(1) va renvoyer Samsung...

Ça donnerait un code du type :

Dim V As String
V = Range("A1").Value
V = Split(V, " ", 1)(1)
Range("A1").Value = V

Bonjour Thauthème,

le code ne marche pas quand je le compile

Bonsoir Grizou, ThauTheme,

voici la macro modifiée pour la colonne D.

Tu cliques en [D1] et la macro traite la colonne à partir de [D2].

A adapter en fonction de ton fichier.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
Dim tTab
Dim sFlag As String
'
If Target.Address = [D1].Address Then
    iRow = Range("D" & Rows.Count).End(xlUp).Row
    '
    For x = 2 To iRow
        sFlag = ""
        tTab = Split(Cells(x, "D"), " ")
        For y = 0 To UBound(tTab)
            If Not IsNumeric(tTab(y)) Then sFlag = sFlag & tTab(y)
        Next
        Cells(x, "D") = sFlag
    Next
End If
    '
End Sub

A+

56oterchiffres.xlsm (15.32 Ko)

Salut curulis57,

quand je copie le code dans un module et que je l'execute (run/F5), il ne se passe rien

ce n'est pas la bonne démarche ?

Merci

Non, la macro doit être copiée dans la feuille concernée, directement!

Bonjour,

D'accord merci curulis 57,

je met le code ci-dessous dans ma feuille pour laquelle je souhaite que le traitement soit fait.

Comment faire pour faire appel à cette fonction? je dois faire Worksheet_SelectionChange(Range("D")) depuis un module ?

Merci d'avance

Sub Worksheet_SelectionChange(ByVal Target As Range)

'

Dim tTab

Dim sFlag As String

'

If Target.Address = [D1].Address Then

iRow = Range("D" & Rows.Count).End(xlUp).Row

'

For x = 2 To iRow

sFlag = ""

tTab = Split(Cells(x, "D"), " ")

For y = 0 To UBound(tTab)

If Not IsNumeric(tTab(y)) Then sFlag = sFlag & tTab(y)

Next

Cells(x, "D") = sFlag

Next

End If

'

End Sub

Je ne comprend pas pourquoi cet appel ne fonctionne pas

Sub v()

Dim D As Range 'je définis D de type range car la fonction Worksheet_SelectionChange prend un range en paramètre

D = ActiveWorkbook.Sheets("Feuil1").Range("D") 'je dis que la variable D est égal à la colonne D

Worksheet_SelectionChange 'appel à la fonction avec la colonne comme paramètre

End Sub

Si quelqu'un pourrait m'aider svp, merci


Worksheet_SelectionChange (d)

Salut Grizou,

il me semble que tu te compliques la vie!

Si tu as installé la macro, telle que je te l'ai envoyée, dans le module de la feuille concernée (pas dans le Module1, hein!), il te suffit de cliquer sur la cellule [D1] pour traiter toute la colonne D.

Regarde le fichier qui accompagnait ma réponse et regarde où le code est installé!

A+

Rechercher des sujets similaires à "vba supprimer chiffres"