affichage message si contenu cellule appartient à

Olivier_HTP

XLDnaute Occasionnel
Bonjour le Forum,

je cherche, sans succès naturellement, une macro qui permettrait d'ouvrir une fenêtre affichant un message, en testant le contenu de la cellule active avec une liste se trouvant sur une autre feuille dans un fichier Excel donné.

Concrètement :
J'ai un fichier excel avec 2 onglets : feuil1 et feuil2 pour reprendre la terminologie excelienne si pleine de poésie...
Dans la 'feuil1' je saisis des noms dans la colonne B.
La 'feuil2' il y a une liste de noms dans la colonne A.

Comment faire pour que, lors de la validation d'un nom dans une cellule de la colonne B feuil 1, une fenêtre avec 'mon message' apparaisse à l'écran si le nom de la cellule que je viens de valider se trouve dans la liste de noms qui est dans la colonne A de la 'feuil2' ?

Cette fenêtre d'avertissement devant pouvoir se fermer en cliquant sur un bouton 'OK'.

Merci d'avance à ceus et celles qui voudront bien se pencher sur mon cas en dépit de la température ambiante.

Bonne fin de journée à tous.

Olivier_HTP
 

Hervé

XLDnaute Barbatruc
Bonjour olivier, andré, re le forum

sinon par macro, tu peux essayer ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo As Variant
Dim i As Integer

If Intersect(Target, Columns(2)) Is Nothing Then Exit Sub

With Sheets('feuil2')
    tablo = .Range('a1:a' & .Range('a65536').End(xlUp).Row)
End With

For i = 1 To UBound(tablo)
   
If tablo(i, 1) = Target.Text Then
        MsgBox 'Ben déjà présent dans la liste 2', , 'Attention'
        Target.Select
'si tu veux resélectionner la cellule
        Target.Clear
'si tu veux effacer la saisie
       
Exit Sub
   
End If
Next i

End Sub

Si tu veux t'affranchir des minuscules majuscules, tu peux rajouter option compare text avant la macro.

Tu pourrais aussi passer par une boucle for each mais ne connaissant pas le nombre de valeur à scanner, je suis allé vers ce qui va le plus vite en traitement.

Salut
 

Creepy

XLDnaute Accro
Hello Olivier_HTP, André,

Si toutefois tu souhaites absooolllluuummmmennnntttt le faire par macro

Voici un petit exemple à adapter !

Il marche mais n'est pas finalisé, je viens de me prendre la méga boulette du soir au taf !! :(

++

Creepy [file name=classeur1_20050622165820.zip size=7250]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/classeur1_20050622165820.zip[/file]
 

Pièces jointes

  • classeur1_20050622165820.zip
    7.1 KB · Affichages: 72

Olivier_HTP

XLDnaute Occasionnel
Merci André, Hervé et Creepy de vos réponses !

André, merci pour ta rapidité, mais le problème est qu'avec la validation des données par liste, je ne peux faire apparaître le message d'avertissement que lorsque le nom saisi N'EST PAS dans la liste, alors que je souhaite l'inverse, c'est à dire faire apparaître le message si le nom saisi EST dans la liste.
Je ne sais pas si c'est réalisable dans ce sens, en tout cas moi je ne sais pas le faire. Sinon effectivement ce serait le plus simple.

Hervé et Creepy, merci pour vos solutions, je vais les tester et vous tenir informés.

A bientôt,

Olivier_HTP
 

Olivier_HTP

XLDnaute Occasionnel
Bonsoir à tous,

Creepy et Hervé, j'ai essayé vos 2 macros. Les 2 fonctionnent mais celle de Creepy ne teste qu'une seule cellule de saisie dans la feuil1 alors que je veux que toutes les cellules de la colomne soit testées avec la liste de la feuil2. Il me fallait l'adapter.

Cédant à la facilité, j'ai donc adopté la macro de Hervé qui était la plus 'sur mesures' dans mon cas.

Merci en tout cas à vous tous pour votre aide rapide et efficace !

Bonne soirée,

Olivier_HTP
 

Discussions similaires

Réponses
11
Affichages
539

Statistiques des forums

Discussions
312 474
Messages
2 088 725
Membres
103 935
dernier inscrit
GGV