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 ?
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: