XL 2019 Extraire une chaine entre deux positions

undo74

XLDnaute Nouveau
Bonjour,
Je cherche à extraire une chaîne de caractère entre 2 positions après des tests avec les fonctions cherche et STXT le résultat n'est pas concluant
voir l'exemple en PJ colonne E il serait possible d'avoir une aide soit directement par une fonction Excel ou bien en vba.
PI:
les données dans la pj sont de fausse information.
je vous remercie par avance.
 

Pièces jointes

  • Extraire Chaine.xlsx
    9.4 KB · Affichages: 34
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Bonsoir undo74, Staple,

ta demande est impossible à réaliser ! 😁

quand il y a 2 adresses mail comme en A3 et A5, comment veux-tu
que ça devine tout seul s'il faut prendre le 1er nom (comme en F3)
ou le 2ème nom (comme en F5) ? par méditation transcendentale
ou par télépathie ? 😅 😁

à cause du RGPD, fais vite un undo ! 🤣 (appuie sur les touches Ctrl z)


soan
 

soan

XLDnaute Barbatruc
Inactif
@Staple1600

j'avais déjà téléchargé le fichier avant retrait, et vu les adresses mail ;
même par VBA, solution impossible à cause de ce que j'ai écrit dans
mon post #3 : s'il y a 2 emails dans la même cellule, y'a pas moyen
d'savoir s'il faut prendre le nom du 1er email ou le nom du second
email. 😭 (seul l'utilisateur peut décider lequel des deux !)


soan
 

undo74

XLDnaute Nouveau
Bonsoir undo74, Staple,

ta demande est impossible à réaliser ! 😁

quand il y a 2 adresses mail comme en A3 et A5, comment veux-tu
que ça devine tout seul s'il faut prendre le 1er nom (comme en F3)
ou le 2ème nom (comme en F5) ? par méditation transcendentale
ou par télépathie ? 😅 😁

à cause du RGPD, fais vite un undo ! 🤣 (appuie sur les touches Ctrl z)


soan
Hello Soan, j'ai une idée mais que je n'arrive pas le faire via le formule Excel : c'est de cherché le premier "_"+ 3 caractères dans l'exemple en A3 = _DRT et en A5 = _MPO puis extraire la chaine entre @ et "_"+ 3.
merci à toi
 

Staple1600

XLDnaute Barbatruc
Re

=>undo74
Donc une petite macro (que je te laisse tester)
VB:
Sub test()
Dim c As Range, t
For Each c In Range("A2", Cells(Rows.Count, "A").End(xlUp))
t = Split(c.Text, "(@")
With c.Offset(, 1).Resize(, UBound(t))
.Value = t
End With
Erase t
Next
End Sub
Ensuite à toi de jouer pour
après je ferais un traitement pour extraire les noms et prénoms.
;)
 

Staple1600

XLDnaute Barbatruc
Re

=>undo74
En attendant tes commentaires sur ton test du code du message#9
Une petite formule pour le fun
(qui fonctionne pour 2 exemples sur 3)
Code:
=GAUCHE(STXT(A3;CHERCHE("(@";A3)+2;CHERCHE("-";A3)-3);CHERCHE("-";STXT(A3;CHERCHE("(@";A3)+2;CHERCHE("-";A3)-3))-1)
 

undo74

XLDnaute Nouveau
Re

=>undo74
Donc une petite macro (que je te laisse tester)
VB:
Sub test()
Dim c As Range, t
For Each c In Range("A2", Cells(Rows.Count, "A").End(xlUp))
t = Split(c.Text, "(@")
With c.Offset(, 1).Resize(, UBound(t))
.Value = t
End With
Erase t
Next
End Sub
Ensuite à toi de jouer pour

;)
@Staple1600, j'ai fais un test de ton code le résultat n'est pas correct 😥
Merci encore pour ton aide
1610829851722.png
 

soan

XLDnaute Barbatruc
Inactif
@undo74, Staple,

ton fichier en retour (anonymisé) ; pour les résultats, je peux pas faire mieux. :confused:

VB:
Function GetNom(txt$) As String
  Dim chn$, p1%, p2%, p3%
  p3 = InStrRev(txt, "_"): If p3 = 0 Then Exit Function
  p2 = InStrRev(txt, "-", p3): If p2 = 0 Then p2 = p3
  p1 = InStrRev(txt, "@", p2)
  chn = Mid$(txt, p1 + 1, p2 - p1 - 1)
  p3 = InStrRev(txt, "_", p1): If p3 = 0 Then GoTo 1
  p2 = InStrRev(txt, "-", p3): If p2 = 0 Then p2 = p3
  p1 = InStrRev(txt, "@", p2)
  chn = Mid$(txt, p1 + 1, p2 - p1 - 1) & "   " & chn
1 GetNom = chn
End Function

formule en B3 (tirée vers le bas) : =SI(A3="";"";GetNom(A3))

soan
 

Pièces jointes

  • Extraire Chaine.xlsm
    15.2 KB · Affichages: 7
Dernière édition:

undo74

XLDnaute Nouveau
Re

=>undo74
En attendant tes commentaires sur ton test du code du message#9
Une petite formule pour le fun
(qui fonctionne pour 2 exemples sur 3)
Code:
=GAUCHE(STXT(A3;CHERCHE("(@";A3)+2;CHERCHE("-";A3)-3);CHERCHE("-";STXT(A3;CHERCHE("(@";A3)+2;CHERCHE("-";A3)-3))-1)
Re, Effectivement le résultat pour les données A3 et A4 sont correct :) mais la problématique est sur A5

1610830439274.png

merci
 

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 783
Membres
101 817
dernier inscrit
carvajal