• Initiateur de la discussion Initiateur de la discussion meldja
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

meldja

XLDnaute Impliqué
Bonjour,
Je ne savais pas trop comment intituler mon problème et j'espère que ça ne posera pas de problème.
Voici mon soucis.
J'ai une liste déroulante en cellule H1.
Lorsqu'on sélectionne un nom et que l'on clique sur un bouton, toutes les cellules de la plage B6 à L46 qui contiennent le même nom que celui de la liste déroulante, prennent une couleur (ceci afin de mieux repérer ces cellules).
S'il n'y a aucun nom sélectionné dans la liste déroulante, un message d'erreur l'indique.
Si le nom n'existe pas dans la plage B6:L46, un message d'erreur l'indique également.
Je ne sais pas trop comment procéder.
Pour le message d'erreur si la liste déroulante est vide, c'est bon.
Pour mettre en couleur les cellules, c'est bon.
Pour le message d'erreur lorsqu'il ne trouve pas de correspondance de nom, ce n'est pas bon.
Dés que je mets ce morceau de code, le message apparait systématiquement. Je pense qu'à partir du moment ou une cellule ne contient pas le nom, c'est ce code qui prend le dessus. Voici ce qui marche :
Code:
Dim C As Range
Dim nm As Range
Dim nom As String
nom = Range("H1")

Set C = Range("B6:L46")

For Each nm In C
If nom = "" Then
MsgBox "Aucun nom n'a été sélectionné dans la liste déroulante !", , "IMPOSSIBLE"
Exit Sub

ElseIf nm = nom Then
nm.Interior.ColorIndex = 28

Voici ce qui ne marche pas :
Code:
Dim C As Range
Dim nm As Range
Dim nom As String
nom = Range("H1")

Set C = Range("B6:L46")

For Each nm In C
If nom = "" Then
MsgBox "Aucun nom n'a été sélectionné dans la liste déroulante !", , "IMPOSSIBLE"
Exit Sub

ElseIf nm = nom Then
nm.Interior.ColorIndex = 28


Else
MsgBox "Aucune correspondance n'a été trouvée !", , "NOM INTROUVABLE"
Exit Sub
End If
Next nm

Set C = Nothing

J'espère que la formulation de mon problème est assez claire.
Je vois le problème mais je n'arrive pas à trouver de solution.
Merci d'avance de m'éclairer sur une éventuel lien, je ne sais pas comment résumer mon problème en quelques mots clés.
Bonne journée
 
Re : boucle for each

Bonjour Medja,

essaye peut être comme ceci :
Code:
Dim nom As String, x As Range
nom = Range("H1").Value
Set x = Range("B6:L46").Find(nom, , xlValues, xlWhole, , , False)
If x Is Nothing Then
    MsgBox "Aucun nom n'a été sélectionné dans la liste déroulante !", , "IMPOSSIBLE"
    Exit Sub
End If

bonne journée
@+
 
Re : boucle for each

Merci, j'ai adapté ta solution comme ça :
Code:
Dim C As Range
Dim nm As Range
Dim nom As String
Dim x As Range
nom = Range("H1")


Set C = Range("B6:L46")

If nom = "" Then
MsgBox "Aucun nom n'a été sélectionné dans la liste déroulante !", , "IMPOSSIBLE"
Exit Sub
End If

For Each nm In C

If nm = nom Then
nm.Interior.ColorIndex = 28
End If

Next nm

Set C = Nothing

Set x = Range("B6:L46").Find(nom, , xlValues, xlWhole, , , False)
If x Is Nothing Then
    MsgBox "Aucune correspondance n'a été trouvée !", , "NOM INTROUVABLE"
    Exit Sub
End If
Set x = Nothing

Et ça marche. Bonne journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
411
Réponses
15
Affichages
786
Retour