Extraire un mot entre deux caractères @ et .

  • Initiateur de la discussion Initiateur de la discussion Grojok
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

Grojok

Guest
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.
 
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.
 
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 😎
 
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 😎
 
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 !
 
Re : Extraire un mot entre deux caractères @ et .

Re 🙂,
Je ne connaissais pas cette fonction 😱.
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 😎
 
Re : Extraire un mot entre deux caractères @ et .

Messieurs les Extracteurs de Strings, Bonsoir

Désolé pour ce qui suit ci dessous 😱
(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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
18
Affichages
584
  • Question Question
Réponses
5
Affichages
619
Retour