Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

separer lettre et chiffres

5 réponses
Avatar
jip
Bonjour
Dans une colonne excel j'ai un grand nombre de donn=E9es de ce type=20
230Q7
230Q8
230Q9
QEC20
QEC21
1600W14
1600W15
1600W16
etc...
Je souhaiterais avoir automatiquement une s=E9paration (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=E9par=E9s.
merci si vous avez une astuce.

5 réponses

Avatar
MichD
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.
Avatar
Jacquouille
Salut Denis

Faut dire que l'on peut interpréter cette phrase de plusieurs manières:
Je souhaiterais avoir automatiquement une séparation (espace) dans une
cellule adjacente (ou plusieurs cellules) selon






Perso, au vu des exemples donnés, je croyais qu'il fallait laisser tout dans
une cel, mais avec des espaces:
1600 W 14








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
Avatar
MichD
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:
Je souhaiterais avoir automatiquement une séparation (espace) dans une
cellule adjacente (ou plusieurs cellules) selon






Perso, au vu des exemples donnés, je croyais qu'il fallait laisser tout dans
une cel, mais avec des espaces:
1600 W 14








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
Avatar
Jacquouille
hello Denis

ç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:
Je souhaiterais avoir automatiquement une séparation (espace) dans une
cellule adjacente (ou plusieurs cellules) selon






Perso, au vu des exemples donnés, je croyais qu'il fallait laisser tout dans
une cel, mais avec des espaces:
1600 W 14








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
Avatar
GL
Le 10/12/2015 14:03, jip a écrit :
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.




Sinon, vous chargez le complément natif microsoft
regular expressions et ça règle le problème.