Conflit macro de recherche et macro coloriage cellule active

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

Vijk

XLDnaute Nouveau
Bonjour,

J'ai une feuille excel avec une macro de recherche par mots clés, je suis en train d'essayer d'ajouter une macro de coloriage de cellule active :

Public Couleur As Integer
Public Adr As String

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Adr <> "" Then
Range(Adr).Interior.ColorIndex = Couleur
If Not Intersect(Target, Range("o😱")) Is Nothing Then Exit Sub
End If
Adr = Target.Address
Couleur = Target.Interior.ColorIndex
Target.Interior.ColorIndex = 28
End Sub


J'ai exclu la colonne O de la macro car cela m'affichait une erreur de type "utilisation incorrecte du Null".
Mais, le problème persiste d'une certaine manière car lorsque je sélectionne uniquement (grâce au tri de haut de colonne O) les résultats de ma recherche et que je sélectionne plusieurs cellules d'une autre colonne, la même erreur s'affiche.

Pour info, voilà le code de ma macro de recherche :

Public Sub Recherche()

'annule la procédure si aucun mot de recherche
Mot = Range("r7").Value
If Mot = "" Then
Exit Sub
End If

'réinitialisation colonne H
Columns("o😱").Select
Selection.ClearContents

'recherche sur
With Sheets("Base de donnée ").Columns("c:c")
Set c = .Find(Mot, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(0, 12).Value = "x"
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
'recherche sur
With Sheets("Base de donnée ").Columns("h:h")
Set c = .Find(Mot, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(0, 6).Value = "x"
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
'recherche sur
With Sheets("Base de donnée ").Columns("j:j")
Set c = .Find(Mot, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(0, 5).Value = "x"
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
'recherche sur
With Sheets("Base de donnée ").Columns("k:k")
Set c = .Find(Mot, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(0, 4).Value = "x"
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With

'recherche sur
With Sheets("Base de donnée ").Columns("l:l")
Set c = .Find(Mot, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(0, 3).Value = "x"
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With

'recherche sur
With Sheets("Base de donnée ").Columns("m:m")
Set c = .Find(Mot, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Offset(0, 2).Value = "x"
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With

End Sub

Donc, si quelqu'un a une solution ou une suggestion, je lui serai très reconnaissant !

Merci d'avance !

PS : Lorsque je quitte mon document et que je le réouvre, la dernière cellule sélectionnée avant la fermeture reste colorée définitivement, comment éviter cela ?
 
Dernière édition:
Re : Conflit macro de recherche et macro coloriage cellule active

Bonjour Vijk, bonjour le forum,

J'ai pas approfondi mais peut-être comme ça :

Code:
If Not Intersect(Target, [B][COLOR=red]Columns("o:o")[/COLOR][/B]) Is Nothing Then Exit Sub
 
- 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
4
Affichages
223
Retour