separer lettre et chiffres
Le
jip

Bonjour
Dans une colonne excel j'ai un grand nombre de données de ce type
230Q7
230Q8
230Q9
QEC20
QEC21
1600W14
1600W15
1600W16
etc
Je souhaiterais avoir automatiquement une séparation (espace) dans une ce=
llule adjacente (ou plusieurs cellules) selon :
230 Q 7
230 Q 8
230 Q 9
QEC 20
QEC 21
1600 W 14
1600 W 15
1600 W 16
soit lettre/chiffre séparés.
merci si vous avez une astuce.
Dans une colonne excel j'ai un grand nombre de données de ce type
230Q7
230Q8
230Q9
QEC20
QEC21
1600W14
1600W15
1600W16
etc
Je souhaiterais avoir automatiquement une séparation (espace) dans une ce=
llule adjacente (ou plusieurs cellules) selon :
230 Q 7
230 Q 8
230 Q 9
QEC 20
QEC 21
1600 W 14
1600 W 15
1600 W 16
soit lettre/chiffre séparés.
merci si vous avez une astuce.
Essaie ceci :
'-----------------------------------------------------------------------------
Sub test()
Dim A As Long, D As Long
Dim T As String, Nb As Long
Dim C As Range, X As Long
Application.ScreenUpdating = False
'Nom de la feuille et la plage de cellules à adapter <<<<=== For Each C In Worksheets("Feuil1").Range("A1:A10")
Nb = Len(C)
D = 0
For A = 1 To Nb
X = Asc(Mid(UCase(C), A, 1))
Select Case X
Case 48 To 57
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) < 48 Or _
Asc(Mid(UCase(C), A + 1, 1)) > 58 Then
D = D + 1
C.Offset(, D) = T
T = ""
End If
Else
D = D + 1
C.Offset(, D) = T
T = ""
Exit For
End If
Case 65 To 90
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) > 47 And _
Asc(Mid(UCase(C), A + 1, 1)) < 58 Then
D = D + 1
C.Offset(, D) = T
T = ""
End If
Else
D = D + 1
C.Offset(, D) = T
T = ""
Exit For
End If
End Select
Next
Next
Application.ScreenUpdating = True
End Sub
'-----------------------------------------------------------------------------
MichD
---------------------------------------------------------------
"jip" a écrit dans le message de groupe de discussion :
Bonjour
Dans une colonne excel j'ai un grand nombre de données de ce type
230Q7
230Q8
230Q9
QEC20
QEC21
1600W14
1600W15
1600W16
etc...
Je souhaiterais avoir automatiquement une séparation (espace) dans une
cellule adjacente (ou plusieurs cellules) selon :
230 Q 7
230 Q 8
230 Q 9
QEC 20
QEC 21
1600 W 14
1600 W 15
1600 W 16
soit lettre/chiffre séparés.
merci si vous avez une astuce.
Faut dire que l'on peut interpréter cette phrase de plusieurs manières:
Perso, au vu des exemples donnés, je croyais qu'il fallait laisser tout dans
une cel, mais avec des espaces:
d'où ma lenteur à répondre ... -))))
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
n4ci8p$2dh$
Bonjour,
Essaie ceci :
'-----------------------------------------------------------------------------
Sub test()
Dim A As Long, D As Long
Dim T As String, Nb As Long
Dim C As Range, X As Long
Application.ScreenUpdating = False
'Nom de la feuille et la plage de cellules à adapter <<<<=== For Each C In Worksheets("Feuil1").Range("A1:A10")
Nb = Len(C)
D = 0
For A = 1 To Nb
X = Asc(Mid(UCase(C), A, 1))
Select Case X
Case 48 To 57
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) < 48 Or _
Asc(Mid(UCase(C), A + 1, 1)) > 58 Then
D = D + 1
C.Offset(, D) = T
T = ""
End If
Else
D = D + 1
C.Offset(, D) = T
T = ""
Exit For
End If
Case 65 To 90
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) > 47 And _
Asc(Mid(UCase(C), A + 1, 1)) < 58 Then
D = D + 1
C.Offset(, D) = T
T = ""
End If
Else
D = D + 1
C.Offset(, D) = T
T = ""
Exit For
End If
End Select
Next
Next
Application.ScreenUpdating = True
End Sub
'-----------------------------------------------------------------------------
MichD
---------------------------------------------------------------
"jip" a écrit dans le message de groupe de discussion :
Bonjour
Dans une colonne excel j'ai un grand nombre de données de ce type
230Q7
230Q8
230Q9
QEC20
QEC21
1600W14
1600W15
1600W16
etc...
Je souhaiterais avoir automatiquement une séparation (espace) dans une
cellule adjacente (ou plusieurs cellules) selon :
230 Q 7
230 Q 8
230 Q 9
QEC 20
QEC 21
1600 W 14
1600 W 15
1600 W 16
soit lettre/chiffre séparés.
merci si vous avez une astuce.
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
dans la cellule de droite.
'--------------------------------------------------------------------
Sub test()
Dim A As Long
Dim T As String, Nb As Long
Dim C As Range, X As Long
Application.ScreenUpdating = False
'Nom de la feuille et la plage de cellules à adapter <<<<=== For Each C In Worksheets("Feuil1").Range("A1:A10")
Nb = Len(C)
For A = 1 To Nb
X = Asc(Mid(UCase(C), A, 1))
Select Case X
Case 48 To 57
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) < 48 Or _
Asc(Mid(UCase(C), A + 1, 1)) > 58 Then
T = T & " "
End If
Else
T = T & " "
Exit For
End If
Case 65 To 90
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) > 47 And _
Asc(Mid(UCase(C), A + 1, 1)) < 58 Then
T = T & " "
End If
Else
T = T & " "
Exit For
End If
End Select
Next
C.Offset(, 1) = T
T = ""
Next
Application.ScreenUpdating = True
End Sub
'--------------------------------------------------------------------
MichD
---------------------------------------------------------------
"Jacquouille" a écrit dans le message de groupe de discussion :
n4cn0n$dar$
Salut Denis
Faut dire que l'on peut interpréter cette phrase de plusieurs manières:
Perso, au vu des exemples donnés, je croyais qu'il fallait laisser tout dans
une cel, mais avec des espaces:
d'où ma lenteur à répondre ... -))))
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
n4ci8p$2dh$
Bonjour,
Essaie ceci :
'-----------------------------------------------------------------------------
Sub test()
Dim A As Long, D As Long
Dim T As String, Nb As Long
Dim C As Range, X As Long
Application.ScreenUpdating = False
'Nom de la feuille et la plage de cellules à adapter <<<<=== For Each C In Worksheets("Feuil1").Range("A1:A10")
Nb = Len(C)
D = 0
For A = 1 To Nb
X = Asc(Mid(UCase(C), A, 1))
Select Case X
Case 48 To 57
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) < 48 Or _
Asc(Mid(UCase(C), A + 1, 1)) > 58 Then
D = D + 1
C.Offset(, D) = T
T = ""
End If
Else
D = D + 1
C.Offset(, D) = T
T = ""
Exit For
End If
Case 65 To 90
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) > 47 And _
Asc(Mid(UCase(C), A + 1, 1)) < 58 Then
D = D + 1
C.Offset(, D) = T
T = ""
End If
Else
D = D + 1
C.Offset(, D) = T
T = ""
Exit For
End If
End Select
Next
Next
Application.ScreenUpdating = True
End Sub
'-----------------------------------------------------------------------------
MichD
---------------------------------------------------------------
"jip" a écrit dans le message de groupe de discussion :
Bonjour
Dans une colonne excel j'ai un grand nombre de données de ce type
230Q7
230Q8
230Q9
QEC20
QEC21
1600W14
1600W15
1600W16
etc...
Je souhaiterais avoir automatiquement une séparation (espace) dans une
cellule adjacente (ou plusieurs cellules) selon :
230 Q 7
230 Q 8
230 Q 9
QEC 20
QEC 21
1600 W 14
1600 W 15
1600 W 16
soit lettre/chiffre séparés.
merci si vous avez une astuce.
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com
ça va quand même plus vite quand c'est toi qui réponds.... à ma place -))
Merci pour ce beau geste.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
n4cnk0$en8$
La procédure suivante ne fait qu'insérer des espaces et copie le résultat
dans la cellule de droite.
'--------------------------------------------------------------------
Sub test()
Dim A As Long
Dim T As String, Nb As Long
Dim C As Range, X As Long
Application.ScreenUpdating = False
'Nom de la feuille et la plage de cellules à adapter <<<<=== For Each C In Worksheets("Feuil1").Range("A1:A10")
Nb = Len(C)
For A = 1 To Nb
X = Asc(Mid(UCase(C), A, 1))
Select Case X
Case 48 To 57
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) < 48 Or _
Asc(Mid(UCase(C), A + 1, 1)) > 58 Then
T = T & " "
End If
Else
T = T & " "
Exit For
End If
Case 65 To 90
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) > 47 And _
Asc(Mid(UCase(C), A + 1, 1)) < 58 Then
T = T & " "
End If
Else
T = T & " "
Exit For
End If
End Select
Next
C.Offset(, 1) = T
T = ""
Next
Application.ScreenUpdating = True
End Sub
'--------------------------------------------------------------------
MichD
---------------------------------------------------------------
"Jacquouille" a écrit dans le message de groupe de discussion :
n4cn0n$dar$
Salut Denis
Faut dire que l'on peut interpréter cette phrase de plusieurs manières:
Perso, au vu des exemples donnés, je croyais qu'il fallait laisser tout dans
une cel, mais avec des espaces:
d'où ma lenteur à répondre ... -))))
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
n4ci8p$2dh$
Bonjour,
Essaie ceci :
'-----------------------------------------------------------------------------
Sub test()
Dim A As Long, D As Long
Dim T As String, Nb As Long
Dim C As Range, X As Long
Application.ScreenUpdating = False
'Nom de la feuille et la plage de cellules à adapter <<<<=== For Each C In Worksheets("Feuil1").Range("A1:A10")
Nb = Len(C)
D = 0
For A = 1 To Nb
X = Asc(Mid(UCase(C), A, 1))
Select Case X
Case 48 To 57
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) < 48 Or _
Asc(Mid(UCase(C), A + 1, 1)) > 58 Then
D = D + 1
C.Offset(, D) = T
T = ""
End If
Else
D = D + 1
C.Offset(, D) = T
T = ""
Exit For
End If
Case 65 To 90
T = T & Mid(C, A, 1)
If A < Nb Then
If Asc(Mid(UCase(C), A + 1, 1)) > 47 And _
Asc(Mid(UCase(C), A + 1, 1)) < 58 Then
D = D + 1
C.Offset(, D) = T
T = ""
End If
Else
D = D + 1
C.Offset(, D) = T
T = ""
Exit For
End If
End Select
Next
Next
Application.ScreenUpdating = True
End Sub
'-----------------------------------------------------------------------------
MichD
---------------------------------------------------------------
"jip" a écrit dans le message de groupe de discussion :
Bonjour
Dans une colonne excel j'ai un grand nombre de données de ce type
230Q7
230Q8
230Q9
QEC20
QEC21
1600W14
1600W15
1600W16
etc...
Je souhaiterais avoir automatiquement une séparation (espace) dans une
cellule adjacente (ou plusieurs cellules) selon :
230 Q 7
230 Q 8
230 Q 9
QEC 20
QEC 21
1600 W 14
1600 W 15
1600 W 16
soit lettre/chiffre séparés.
merci si vous avez une astuce.
---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Sinon, vous chargez le complément natif microsoft
regular expressions et ça règle le problème.