Recherche de données

Bonjour,

à partir du fichier ci joint, je souhaite une alerte ( Msgbox ) pour m'indiquer que dans la Feuille "Test" , colonne A, y figure des prénoms qui n'existent pas dans la feuille 2 , colonne A

merci par avance pour votre aide

cordialement

3fichier.xlsx (9.77 Ko)

Bonjour,

Voici une proposition en pièce jointe.

Cordialement,

8fichier.xlsx (11.52 Ko)

bonjour et merci pour ta réponse

je souhaitais une solution avec un message d'alerte ( Msg Box ) qui reprend les prénoms manquants

merci quand même

Salut Diagonale,

Tu peux aussi passer par formule Excel :

=SIERREUR(RECHERCHEV(A2;Feuil7!A:A;1;FAUX);"Pas dans Feuill 2")

à placer dans ta feuille 1 en cellule B2 !

Sinon par VBA :

Sub Find_Name()
Dim Sh As Worksheet, c, p, r As Range, msg As String
Set Sh = ThisWorkbook.Worksheets("test")
Set p = Sh.Range("A2:A" & Sh.Range("A" & Rows.Count).End(xlUp).Row)
For Each c In p
    Set r = Nothing
    Set r = ThisWorkbook.Worksheets("Feuil7").Columns(1).Find(c.Value)
    If r Is Nothing Then
        msg = c.Value & Chr(10) & msg
    End If
Next c
msg = "Prénom manquant en Feuil7 :" & Chr(10) & msg
MsgBox msg
End Sub

Édit : Salut James !

la MFC est sans doute la meilleur solution : Plus visible qu'une formule et moins contraignante que la VBA.. Bien pensé !

Bonjour,

Dans ton cas, le message n'est pas la bonne méthode ...

Une simple MFC fait le travail ...rien à faire ...

Edit : Salut Juice ...

Bonjour

merci à Juice et à James007 pour vos propositions et désolé pour la réponse tardive due au décalage horaire

Le code VBA ne fonctionne pas malheureusement

même si je rajoute les prénoms manquants le message d'alerte apparait quand même

cordialement

Bonjour,

Dans la mesure où tu tiens vraiment à avoir un MsgBox ...

Ci-joint ton fichier test ... revisité ...

Re,

Lorsque tu auras eu l'occasion de tester la macro ... il ne faudra pas hésiter à faire part de tes commentaires ...

Bonsoir James

Je n ai pas eu l occasion de la tester car j étais en déplacement aujourd hui mais je ne manquerai pas de t informer des que possible

En tous cas merci pour ton aide

Re,

Pas de problème ...

Merci de me tenir au courant ...

Bonjour James

Le code fonctionne très bien ....dans le classeur exemple

Par contre j'ai placé le code dans un autre fichier et cela ne fonctionne pas.

Pourrais tu stp me fournir des explications du code ?

Merci d'avance pour ton aide

cdlt

Bonjour,

Dans l'adaptation à un autre fichier, tu dois définir les deux plages nommées qui servent à faire toutes les recherches ...

En faisant Ctrl F3 dans le fichier test ... tu trouveras précisément les définitions de ' liste ' et ' noms '

En espèrant que cela t'aide

James

je te remercie et j'ai effectivement adapté les plages de recherches dans le gestionnaire de noms

cela fonctionne bien apparemment

Je me permettrai de te solliciter de nouveau si nécessaire

merci encore

Content que tu aies pu adapter la macro à ton fichier réel ...

Merci pour tes remeroiements

Et pour avoir passé le sujet en Résolu

pour le coup je te demanderai une petite précision...

quand aucune anomalie n'est relevé, comment faire pour un message signalant que c'est ok.

Merci

Re,

Pour répondre à ta dernière question :

Sub Check2()
Dim c As Range, rng As Range, Ref As Range
Dim message As String
Set rng = Sheet1.Range("noms")
Set Ref = Sheet2.Range("liste")
    For Each c In rng
        If IsError(Application.Match(c, Ref, 0)) Then message = message & IIf(Len(message) = 0, "", ", ") & c
    Next c
    If Len(message) = 0 Then
        MsgBox " Aucune anomalie "
    Else
        MsgBox message
    End If
End Sub

Excellent et rapide en plus !!!!

que demander de plus....

merci beaucoup pour ton dévouement !

Merci pour tes gentils remerciements

ah j'avais oublié de te signaler qu'il y avait une petite erreur dans tes formules DECALER et j'ai rectifié...

Tu avais écrit :

DECALER(Liste!$A$2;0;0;NBVAL(Liste!$A:$A)-1;1)

J'ai déplacer la dernière parenthèse

DECALER(Liste!$A$2;0;0;NBVAL(Liste!$A:$A;-1;1))

et puisqu'on y est , si je souhaite alerter l'opérateur lors de la saisie des données et faire l'impasse sur le bouton de commande

es ce que je peux mettre le code dans la feuille de saisie :

'Private Sub Worksheet_SelectionChange(ByVal Target As Range)

merci encore

si si on va y arriver !!!

une autre.... Pourrais tu m'aider à déchiffrer et comprendre ce code stp

If IsError(Application.Match(c, Ref, 0)) Then message = message & IIf(Len(message) = 0, "", ", ") & c

Ensuite promis j'aurais plus de questions....

Rechercher des sujets similaires à "recherche donnees"