Extraire un mot entre deux caractères @ et .

Grojok

XLDnaute Nouveau
Bonjour,

Je cherche désespérément à extraire dans une cellule le nom de famille contenu dans une adresse mail de type :

jean.luc@capgeminini.com

Je veux extraire dans une cellule à côté le nom de famille "luc".

Est-ce que quelqu'un de très gentil serait capable de me trouver la formule qui convient?

En vous remerciant par avance et vous souhaitant bonne continuation,

Thibaut.
 

hoerwind

XLDnaute Barbatruc
Re : Extraire un mot entre deux caractères @ et .

Salut pierrejean,

Moi j'ai mal lu !
J'avais compris qu'il fallait chercher capgeminini, alors qu'il faut extraire luc

Ta formule trouve luc, mais à condition qu'il y ait un . (point) avant le @
Si c'est toujours le cas, pas de problème, si ce n'est pas la cas la formule renvoie un message d'erreur.
 

JNP

XLDnaute Barbatruc
Re : Extraire un mot entre deux caractères @ et .

Bonjour le fil :),
Pour le plaisir de RegExp (salut JM ;))
VB:
Function RechercheNom(AChercher As String) As String
Application.Volatile
Dim Matches
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "\b[a-z]+(?=\d*@)"
Set Matches = .Execute(AChercher)
RechercheNom = Matches(0)
End With
End Function
Avantage : ne renvoie que pierre dans jean.luc.pierre3@capgeminini.com
Bonne journée :cool:
 

JNP

XLDnaute Barbatruc
Re : Extraire un mot entre deux caractères @ et .

Re :),
Si par EPURAGE, tu entends remplacer les adresses par le résultat :
VB:
Sub Epurage()
Dim Matches, Cellule As Range
For Each Cellule In Selection
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "\b[a-z]+(?=\d*@)"
Set Matches = .Execute(Cellule)
Cellule = Matches(0)
End With
Next
End Sub
Il suffit de sélectionner tes adresses et de lancer la macro.
Attention, il n'y a pas de retour en arrière possible, donc travaille sur une sauvegarde ;).
Bonne journée :cool:
 

Grojok

XLDnaute Nouveau
Re : Extraire un mot entre deux caractères @ et .

Non désolé je me suis mal exprimé,

Dans un autre tableau il y a des caractères inconnus qui sont symbolisés par un point d'interrogation dans un losange par excel.

La fonction EPURAGE() permet de supprimer ces caractères inconnus.

J'aimerais donc appliquer cette formule à tout mon tableau,

Est-ce possible?

En vous remerciant (encore et encore) par avance !
 

JNP

XLDnaute Barbatruc
Re : Extraire un mot entre deux caractères @ et .

Re :),
Je ne connaissais pas cette fonction :eek:.
Code:
Sub Epurage()
Dim Cellule As Range
For Each Cellule In Selection
Cellule = Application.WorksheetFunction.Clean(Cellule)
Next
End Sub
devrait fonctionner ;).
Bonne soirée :cool:
 

Staple1600

XLDnaute Barbatruc
Re : Extraire un mot entre deux caractères @ et .

Messieurs les Extracteurs de Strings, Bonsoir

Désolé pour ce qui suit ci dessous :eek:
(Mais les affres du désœuvrement me font faire de ces choses parfois ;) )

VB:
Sub LaMacroQueTuPondsQuandTasDuTempsAperdre() ';-)
Dim s$, fH$, fPJi$, fPJii$, fRxJ$, vSSe$, fSe$, fTbo$, t

s = "saint.luc@priezpourlui.com": t = _
[{"Hoerwind","Pierrejean_1","Pierrejean_2","JNP","Staple_1","Staple_2","Tibo"}]

fH = "=GAUCHE(STXT(A1;CHERCHE(""@"";A1)+1;100);CHERCHE(""."";STXT(A1;CHERCHE(""@"";A1)+1;100))-1)"
fPJi = "=STXT(A1;TROUVE(""."";A1)+1;TROUVE(""@"";A1)-TROUVE(""."";A1)-1)"
fPJii = "=SI(TROUVE(""."";A1)<TROUVE(""@"";A1);STXT(A1;TROUVE(""."";A1)+1;TROUVE(""@"";A1)-TROUVE(""."";A1)-1);STXT(A1;1;TROUVE(""@"";A1)-1))"
fRxJ = RechercheNom(s)
vSSe = Split(Split(s, "@")(0), ".")(1)
fSe = "=STXT(STXT(A1;1;CHERCHE(""@"";A1)-1);CHERCHE(""."";STXT(A1;1;CHERCHE(""@"";A1)-1))+1;9^9)"
fTbo = "=STXT(GAUCHE(A1;TROUVE(""@"";A1)-1);(TROUVE(""."";A1)<TROUVE(""@"";A1))*TROUVE(""."";A1)+1;99)"

With Cells(1, 1)
    .Value = s: .Offset(, 1).FormulaLocal = fH
        .Offset(, 2).FormulaLocal = fPJi: .Offset(, 3).FormulaLocal = fPJi
        .Offset(, 4) = fRxJ: .Offset(, 5) = vSSe
        .Offset(, 6).FormulaLocal = fSe: .Offset(, 7).FormulaLocal = fTbo
    With .Offset(1, 1).Resize(, UBound(t))
        .Value = t: .Font.Bold = True: .Borders.LineStyle = 1
    End With
     With .CurrentRegion
        .Columns.AutoFit
        .HorizontalAlignment = -4108
     End With
End With
End Sub
VB:
Function RechercheNom(AChercher As String) As String
Application.Volatile
Dim Matches
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "\b[a-z]+(?=\d*@)"
Set Matches = .Execute(AChercher)
RechercheNom = Matches(0)
End With
End Function

PS: Grojok : j'espère que l'émail dans ton message est fictif.
(Je dis cela à cause du risque de spam)

EDITION: Bonsoir Tibo
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
214
Réponses
3
Affichages
323

Statistiques des forums

Discussions
312 556
Messages
2 089 573
Membres
104 215
dernier inscrit
Jean Michl