Bonjour,
Je vous souhaite une belle année 2017
Je souhaite conserver les chaines de 8 chiffres d'une cellule qui contient des chiffres et des lettres.
Ex de donnée que j'ai au départ :
"abbb 12345678 15 hjsdbwfw 9 23456789"
J'aimerais appliquer un masque pour avoir uniquement "12345678 23456789".
Avez vous une idée ?
Je suis parti sur un truc du genre, mais je m'embourbe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 Sub Filtre_chiffre() Dim Cel As Range Dim x As Long Dim myString As String, myChar As String Dim myNumber As Integer fin = Selection.Range("A65500").End(xlUp).Row Range("AT6:AT" & fin & "").Select Application.ScreenUpdating = False For Each Cel In Selection a = 0 For x = 1 To Len(Cel) myChar = Mid(Cel, x, 1) myNumber = Asc(Mid(Cel, x, 1)) 'renvoie le numero ascii de la lettre If x - 1 > 0 Then 'connaitre si le caractère -1 est entre 0 et 9 myNumber_Before = Asc(Mid(Cel, x - 1, 1)) Else myNumber_Before = 48 End If If x + 1 <= Len(Cel) Then 'connaitre si le caractère +1 est un espace myNumber_after = Asc(Mid(Cel, x + 1, 1)) Else myNumber_after = 32 End If If x + 2 <= Len(Cel) Then 'connaitre si le caractère +2 est un espace myNumber_after2 = Asc(Mid(Cel, x + 2, 1)) Else myNumber_after2 = 32 End If 'If myNumber >= 48 And myNumber <= 57 Or myNumber = 32 Then myString = myString & myChar '48=1 57=9 32=espace If myNumber_Before = 32 And myNumber_after = 32 Then ' si _x_ on n'enregistre pas ElseIf myNumber_Before = 32 And myNumber_after >= 48 And myNumber_after <= 57 And myNumber_after2 = 32 Then ' si _xx_ on n'enregistre pas x = x + 1 ElseIf myNumber >= 48 And myNumber <= 57 Or myNumber = 32 Then a = a + 1 myString = myString & myChar '48=1 57=9 32=espace End If Next x Range(Cel.Address) = myString myString = "" Next Cel End Sub
Partager