VBA si nom non trouvé dans zone alors

  • Initiateur de la discussion Initiateur de la discussion MJ13
  • 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 !

MJ13

XLDnaute Barbatruc
Bonjour à tous

J'ai un petit souci de syntaxe.

Je voudrais savoir comment faire si on recherche dans une zone et qu'on ne trouve pas un texte alors, mettre le texte cherché en couleur (mais ça bug si il ne trouve pas le tExte à chercher 😕).

Voici mon code de départ:

Code:
zone2 = Range(Cells(Ligdeb, 3), Cells(Cells(65536, 3).End(xlUp).Row, 3)).Address
X = Range(zone2).Find(What:=Cells(i, 1), After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        )

Merci d'avance 🙂.
 
Dernière édition:
Re : VBA si nom non trouvé dans zone alors

Bonjour Michel, Toto

essaye ceci :
Code:
Dim zone2 As String, x As Range
zone2 = Range(Cells(Ligdeb, 3), Cells(Cells(65536, 3).End(xlUp).Row, 3)).Address
Set x = Range(zone2).Find(What:=Cells(i, 1), After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        )
If Not x Is Nothing Then
    MsgBox "trouvé en " & x.Address
Else
    Range(zone2).Interior.ColorIndex = 3
End If

bonne journée
@+
 
Re : VBA si nom non trouvé dans zone alors

Bonjour Michel, bonjour le forum,

Essaie comme ça :
Code:
Sub Macro1()
Dim zone2 As String 'déclare la variable zone2
Dim X As Range1 'déclare la variable X
 
zone2 = Range(Cells(Ligdeb, 3), Cells(Cells(65536, 3).End(xlUp).Row, 3)).Address 'définit la variabe zone2
For i = 1 To 100 'boucle sur i lignes (tu adapteras à ton exemple)
    'définit la variable X
    Set X = Range(zone2).Find(What:=Cells(i, 1), After:=ActiveCell, LookIn:=xlValues, LookAt:= _
            xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
    If Not X Is Nothing Then 'condition : si il existe au moins une occurrence de cells(i,2) dans zone2
        X.Interior.ColorIndex = 3 'colore l'occurrence trouvée de rouge
    Else 'sinon
        MsgBox Cells(i, 1).Value & " non touvé !" 'message
    End If 'fin de la condition
Next i 'prochaine ligne de la boucle
End Sub

Si il peut y avoir plusieurs occurrences il faudra modifier le code...

[Édition]
Bonjour Tototiti, Pierrot on s'est croisé. Visiblement Pierrot on n'a pas compris la même chose...
 
Re : VBA si nom non trouvé dans zone alors

Re, bonjour Robert🙂

Visiblement Pierrot on n'a pas compris la même chose...

oui, tout à fait... mais en relisant...
si on recherche dans une zone et qu'on ne trouve pas un texte alors, mettre le texte cherché en couleur

mettre en couleur le texte cherché si on l'a pas trouvé... 🙂🙂 Aarf... pas facile... quelque chose a du m'échapper...
 
Re : VBA si nom non trouvé dans zone alors

Bonjour Pierrot, Bonjour Robert 🙂
Re,

mettre en couleur le texte cherché si on l'a pas trouvé... 🙂🙂 Aarf... pas facile... quelque chose a du m'échapper...
Ou alors il faut mettre en couleur le texte des cellules ne contenant pas le texte ?
Quelques précisions de Michel nous éclaireront, je pense
 
Re : VBA si nom non trouvé dans zone alors

Bonjour,

essaye ceci :

Code:
Dim c As Range, x As Range
For Each c In Range("C2", Range("C65536").End(xlUp))
    Set x = Columns(1).Find(c, , xlValues, xlWhole, , , False)
    If x Is Nothing Then c.Interior.ColorIndex = 3
Next c

bonne journée
@+
 
Re : VBA si nom non trouvé dans zone alors

Bonjour le fil, bonjour le forum,

En pièce jointe ton fichier modifié avec le code ci-dessous :
Code:
Sub Macro1()
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim r As Range 'déclare la variable r (Recherche
 
Set pl = Range("A2:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row) 'définit la plage pl
For Each cel In Range("C2:C" & Cells(Application.Rows.Count, 3).End(xlUp).Row) 'boucle sur toutes les cellules éditées de la colonne C (en partant de la ligne 2)
    Set r = pl.Find(cel.Value, , xlValues, xlWhole) 'définit la recherche r (recherche la valeur de la cellule cel dans la plage pl)
    If r Is Nothing Then 'condition : si il n'existe aucune une occurrence de cel dans pl
        cel.Interior.ColorIndex = 3 'colore l'occurrence trouvée de rouge
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End Sub
 

Pièces jointes

- 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
589
Réponses
3
Affichages
640
Réponses
12
Affichages
1 K
Retour