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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26381000
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.
Jacquouille
Le #26381008
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
MichD
Le #26381010
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
Jacquouille
Le #26381015
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
GL
Le #26381586
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.
Publicité
Poster une réponse
Anonyme