[2003] Traitement de chaîne

Le
Péhemme
Bonjour à Tous,

J'ai (en colonne B) une liste d'adresse électronique du style
Jean Moulin <jean-moulin@hotmail.com>
Laurent Outan <l.outan@babouin.fr>
J. Raffe <Raffej@zoo.us>
L'objectif est de scinder en 2 colonnes
a) le nom
b) l'adresse électronique (sans les "<" et ">")
Pour ce faire, j'ai écrit la macro suivante (qui répond à mon problème) qui
comporte 2 boucles,
1°) retire le ">" final, puis,
2°) sépare le nom de l'adresse en fonction du signe "<"
Y a-t-il une écriture moins "bourrin" ?

Sub Extrait_()
Dim Rg As Range, Cel As Range, Ad As String
Dim R As Long, i As Integer
Dim Tableau() As String
R = Range("B65536").End(xlUp).Row
Set Rg = Range("B5:B" & R)
For Each Cel In Rg
Cel.Value = Replace(Cel.Value, ">", "")
Cel.Offset(0, 1) = Cel.Value
Next Cel
Set Rg = Rg.Offset(0, 1)
For Each Cel In Rg
Ad = Cel.Address
Tableau = Split(Range(Ad).Value, "<")
For i = 0 To UBound(Tableau)
Range(Ad).Offset(0, i + 1).Value = Tableau(i)
Next i
Next Cel
Set Rg = Nothing
Merci d'avance
Michel
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
Jacquouille
Le #23323231
Bonsoir
En son temps, j'avais fait un truc du même genre, mais avec trouve.
D'abord, trouve"@", puis extraire les x caractères de la gauche de
l'adresse,
puis avec stxt, repartir du nombre donné par trouve, pour extraire le nom.
Si cela peut t'aider....
PS Ton point n°2, ce ne serait pas le "@" à prendre en référence?
2°) sépare le nom de l'adresse en fonction du signe "<"

Bonne soirée
Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Péhemme" a écrit dans le message de groupe de discussion :
4dbc606f$0$30782$

Bonjour à Tous,

J'ai (en colonne B) une liste d'adresse électronique du style
Jean Moulin Laurent Outan J. Raffe L'objectif est de scinder en 2 colonnes
a) le nom
b) l'adresse électronique (sans les "<" et ">")
Pour ce faire, j'ai écrit la macro suivante (qui répond à mon problème) qui
comporte 2 boucles,
1°) retire le ">" final, puis,
2°) sépare le nom de l'adresse en fonction du signe "<"
Y a-t-il une écriture moins "bourrin" ?

Sub Extrait_()
Dim Rg As Range, Cel As Range, Ad As String
Dim R As Long, i As Integer
Dim Tableau() As String
R = Range("B65536").End(xlUp).Row
Set Rg = Range("B5:B" & R)
For Each Cel In Rg
Cel.Value = Replace(Cel.Value, ">", "")
Cel.Offset(0, 1) = Cel.Value
Next Cel
Set Rg = Rg.Offset(0, 1)
For Each Cel In Rg
Ad = Cel.Address
Tableau = Split(Range(Ad).Value, "<")
For i = 0 To UBound(Tableau)
Range(Ad).Offset(0, i + 1).Value = Tableau(i)
Next i
Next Cel
Set Rg = Nothing
Merci d'avance
Michel
MichD
Le #23323381
Bonjour,

En supposant que tes adresses électroniques sont dans la colonne A
et que tu veux avoir le résultat en colonne B et C
Tout cela dans l'onglet de la feuille nommé : "Feuil1"
'--------------------------------------
Sub test()
Dim DerLig As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
With Worksheets("Feuil1")
DerLig = .Range("A65536").End(xlUp).Row
With .Range("A1:A" & DerLig)
.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:úlse, Tab:úlse, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:=True, OtherChar _
:="@", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
.Range("B:C").Replace "<", "", xlPart
.Range("B:C").Replace ">", "", xlPart
.Range("B:C").EntireColumn.AutoFit
End With
End With
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub
'--------------------------------------


MichD
--------------------------------------------
Péhemme
Le #23323681
Bonjour Denis,

Merci.
J'ai adapté et cela répond parfaitement à mon souhait.
J'ignorais l'existence de TextToColumns ; l'aide est bien faite, il ne me
reste plus qu'à m'entraîner.
À la lecture rapide des arguments, j'observe que FieldInfo joue, en quelque
sorte, le rôle de split.
Je continue de découvrir Excel 2003... Quand je pense que nombreux sont ceux
qui épuisent les joies de Excel 2010...
Merci également à Jacquouille de s'être penché sur mon triste sort.
;-))
Bien amicalement
Michel

"MichD" news:ipi0g4$514$
Bonjour,

En supposant que tes adresses électroniques sont dans la colonne A
et que tu veux avoir le résultat en colonne B et C
Tout cela dans l'onglet de la feuille nommé : "Feuil1"
'--------------------------------------
Sub test()
Dim DerLig As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
With Worksheets("Feuil1")
DerLig = .Range("A65536").End(xlUp).Row
With .Range("A1:A" & DerLig)
.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:úlse, Tab:úlse, _
Semicolon:úlse, Comma:úlse, Space:úlse, Other:=True,
OtherChar _
:="@", FieldInfo:=Array(Array(1, 1), Array(2, 1)),
TrailingMinusNumbers:=True
.Range("B:C").Replace "<", "", xlPart
.Range("B:C").Replace ">", "", xlPart
.Range("B:C").EntireColumn.AutoFit
End With
End With
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub
'--------------------------------------


MichD
--------------------------------------------

Publicité
Poster une réponse
Anonyme