Microsoft 365 Rechercher NOM et Prenom Inversé

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour,
savez vous comment rechercher la cellule contenant par exemple "JEAN DUPONT" dans la colonne "B" mais qui est écrit "DUPONT Jean" ?
Bonne journée
Carlos
 

job75

XLDnaute Barbatruc
Bonjour carlos, djidji59430, dysorthographie,

Voyez le fichier joint et cette macro affectée au bouton :
VB:
Sub Recherche()
Dim s, d As Object, i&, a, ub%, tablo, x$, flag As Boolean, j%, n&
'---liste recherchée sans doublon---
s = Split([E2]) 'cellule à adapter
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
For i = 0 To UBound(s)
    If s(i) <> "" Then d(s(i)) = " " & LCase(s(i)) & " "
Next
'---analyse---
If d.Count Then
    a = d.items: ub = UBound(a)
    tablo = [B1].CurrentRegion.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
    For i = 2 To UBound(tablo)
        x = " " & LCase(Application.Trim(tablo(i, 1))) & " "
        flag = True
        For j = 0 To ub
            If InStr(x, a(j)) = 0 Then flag = False: Exit For
        Next j
        If flag Then n = n + 1: tablo(n, 1) = tablo(i, 1): tablo(n, 2) = i
    Next i
End If
'---restitution---
With Feuil1 'CodeName
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[E5] 'cellule de restitution, à adapter
        If n Then
            .Resize(n, 2) = tablo
            .Resize(n, 2).Interior.Color = [E2].Interior.Color
            .Resize(n, 2).Borders.Weight = xlHairline 'bordures
        End If
        .Offset(n).Resize(.Parent.Rows.Count - n - .Row + 1, 2).Delete xlUp 'RAZ en dessous
    End With
    With .UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
A+
 

Pièces jointes

  • Recherche(1).xlsm
    20.2 KB · Affichages: 19

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour,
Merci à tous pour votre interet à mon problème.
J'ai essayé d'adapter la proposition de Job75 à mon fichier mais le niveau est trop haut pour moi . Je suis désolé Job75.
Je vous propose donc de reformuler ma demande pour pouvoir mieux l'adapter (CF PJ)
Bonne journée
 

Pièces jointes

  • Recherche(1).xlsm
    23.5 KB · Affichages: 13

carlos

XLDnaute Impliqué
Supporter XLD
Bonsoir Job75,
En faite, je recupere la liste des noms d'un questionnaire Microsoft Forms que j'ai mis en ligne avec identifiant. Ces noms qui sont mis d'office n'ont pas le meme format que ma base de donnée
Je cherche juste à boucler sur une liste de personne pour pouvoir les retrouver un a un.
Vous avez ete pedagogue dans la proposition de votre code mais quand je dis "trop haut" c'est juste que je n'ai pas le niveau pour reussir à boucler sur les noms les uns après les autres.
C'est vrai que mon exemple est tordu mais je cherche à adapter une solution.

C'est cela que je ne comprends pas :
If n Then
.Resize(n, 2) = tablo
End If
.Offset(n).Resize(.Parent.Rows.Count - n - .Row + 1, 2).Delete xlUp 'RAZ en dessous
Bonne soirée
 

job75

XLDnaute Barbatruc
Ma macro fait uniquement une chose très simple : elle recherche toutes les cellules en colonne B qui contiennent tous les mots situés en E2, dans un ordre quelconque.

Ce que vous demandez maintenant n'est pas clair :

- que recherche-t-on, des mots ou des textes quelconques ?

- que fait-on si le texte recherché existe sur plusieurs lignes ?

- que doit-on faire avec les caractères parasites : voyelle avec ou sans accent, apostrophe etc... ?
 

carlos

XLDnaute Impliqué
Supporter XLD
Bonsoir Job75,
votre macro fonctionne très très bien et elle a répondu parfaitement à ma première demande.
Je pensais juste pouvoir boucler la colonne des "noms à trouver" dans la "colonne recherche" mais je n'y arrive pas. J'ai essayé avec "For each Cell in range ..." mais ca ne marche pas dans l'exemple que je vous ai envoyé
Il suffirait seulement que vous puissiez mettre en face de chaque nom de la "colonne trouvé" le numéro de ligne comme vous l'avez fait dans votre fichier en cellule F5.
Merci et bonne soirée
 

carlos

XLDnaute Impliqué
Supporter XLD
Bonsoir Job75, , djidji59430, dysorthographie,

Oui , djidji59430, il peut y avoir des "Pierre Henry LEVY" et des "Valery Giscard d'Estaing".
Oui, dysorthographie, il n'y a pas de norme seulement un Forms qui met les noms et prénoms en MAJUSCULE et SUPPRIME tous les accents. Et il faut les retrouver avec des accents. Je ne sais pas si cela sera possible finalement .
Job75, ce ne sera que des noms et des prenoms en majuscule recherchant des Noms et prénoms avec des minuscules , des accents , des apostrophes et parfois composés mais ils ne seront jamais sur plusieurs lignes (Pas de doublon).
C'est vrai qu'a détailler tout cela je me dis que cela n'est certainement pas possible et trop tordu.
Bonne soirée.
 

carlos

XLDnaute Impliqué
Supporter XLD
Bonjour le forum,
J'ai enfin réussi.
c'est un peu du bidouillage car je ne suis pas un expert
On pourrait certainement l'améliorer ou le simplifier mais ca marche.
Merci à Job75 pour son travail et encore désolé de ne pas avoir été assez clair dans ma demande
 

Pièces jointes

  • Recherche(1) (3).xlsm
    24.4 KB · Affichages: 4

Discussions similaires

  • Question
Microsoft 365 Nom et prénom
Réponses
3
Affichages
278

Statistiques des forums

Discussions
312 103
Messages
2 085 322
Membres
102 862
dernier inscrit
Emma35400