Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Formule pour séparer deux noms

Sylvie64

XLDnaute Occasionnel
Bonsoir,

J'ai une phrase avec deux noms de familles, j'aimerai séparer le deuxième nom.
Comme l'exemple ci-joint, ce qui se trouve en rouge doit être dans une autre colonne.

Merci pour votre aide.

Sylvie
 

bika

XLDnaute Nouveau
Re : Formule pour séparer deux noms

Bonjour

Une solution (à coller en E2 et à valider de façon matricielle ctrl+shift+entrée):
Code:
=SUPPRESPACE(STXT(D2;MIN(SI(EXACT(MAJUSCULE(STXT(D2;LIGNE($A$15:$A$260);6));STXT(D2;LIGNE($A$15:$A$260);6))*LIGNE($A$15:$A$260)>0;EXACT(MAJUSCULE(STXT(D2;LIGNE($A$15:$A$260);6));STXT(D2;LIGNE($A$15:$A$260);6))*LIGNE($A$15:$A$260);99));99))

Cette solution repère la première séquence de 6 caractères consécutifs que le passage en majuscule ne modifie pas (cad soit des espaces, °,& soit des caractères en majuscules (c'est eux que je cherche)) au delà du 15° caractère.

Contraintes:le nom de famille doit faire au moins deux caractères et doit être au delà du quinzième caractère, il ne faut pas qu'il y ait de trop longues séquences de caractères spéciaux dans la première partie (sinon il faudrait augmenter le paramètre qui est à 6 dans les fonctions stxt).
 

david84

XLDnaute Barbatruc
Re : Formule pour séparer deux noms

Bonjour,
ci-joint une fonction personnalisée à tester et probablement à développer selon d'autres exemples non présents dans le fichier test :
Code:
Function SepNom(c As String) As String
Dim oRegExp As Object, occ As Object
Set oRegExp = CreateObject("vbscript.regexp")
With oRegExp
.Global = True
    .Pattern = "([A-Z]{2,}.+°.+[^A-Z]{2,})([A-Z]{2,}.+)"
    If .test(c) Then
        Set occ = .Execute(c)
        SepNom = .Replace(c, occ.Item(0).submatches(1)): Exit Function
    End If
    
    .Pattern = "([^A-Z]+)([A-Z]{2,}.+)"
    If .test(c) Then
        Set occ = .Execute(c)
        SepNom = .Replace(c, occ.Item(0).submatches(1)): Exit Function
    End If
End With
End Function
A+
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…