VBA : problème avec la méthode range.find
xuorel
Messages postés
253
Date d'inscription
Statut
Membre
Dernière intervention
-
xuorel Messages postés 253 Date d'inscription Statut Membre Dernière intervention -
xuorel Messages postés 253 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici mon problème :
Je dispose d'une feuille excel avec un tableau à l'intérieur. J'ai coloré la dernière ligne de ce tableau en gris en utilisant la deuxième nuance de gris comme couleur de remplissage.
Je souhait utiliser la fonction find, avec la propriété SearchFormat, afin de trouver la dernière case de ce tableau dans la colone B (la case grise donc, dans la colone B).
Pour repérer le code et repérer les critères de format à rechercher. J'ai enregistré une macro automatique au moment où j'ai remplie de gris ma dernière ligne. Il semble que le paramètre de couleur soit le suivant :
Range.Interior.ThemeColor = xlThemeColorDark1
J'ai donc essayé avec le code suivant :
Or en fin de procédure "c" renvoi nothing. Je ne comprends pas pourquoi. Pourriez-vous m'aider sur ce point ?
merci
Voici mon problème :
Je dispose d'une feuille excel avec un tableau à l'intérieur. J'ai coloré la dernière ligne de ce tableau en gris en utilisant la deuxième nuance de gris comme couleur de remplissage.
Je souhait utiliser la fonction find, avec la propriété SearchFormat, afin de trouver la dernière case de ce tableau dans la colone B (la case grise donc, dans la colone B).
Pour repérer le code et repérer les critères de format à rechercher. J'ai enregistré une macro automatique au moment où j'ai remplie de gris ma dernière ligne. Il semble que le paramètre de couleur soit le suivant :
Range.Interior.ThemeColor = xlThemeColorDark1
J'ai donc essayé avec le code suivant :
Sub Rgrise()
Dim Rg As Range, c As Range
'Détermine les caractéristiques du format de cellule recherché.
With Application.FindFormat
.Clear 'S'assurer d'effacer les critères des anciennes recherches
.Interior.ThemeColor = xlThemeColorDark1
End With
'Détermine la plage de cellules où s'effectue la recherche
With ActiveSheet
Set Rg = .Range("B:B")
End With
'Trouve la cellule ayant le bon format pour y effectuer une ou plusieurs opérations
Set c = Rg.Find(What:="", SearchFormat:=True)
If Not c Is Nothing Then MsgBox c.Address
End Sub
Or en fin de procédure "c" renvoi nothing. Je ne comprends pas pourquoi. Pourriez-vous m'aider sur ce point ?
merci
8 réponses
-
Bonjour,
essayez:
.Interior.ColorIndex = 15
au lieu de:
.Interior.ThemeColor = xlThemeColorDark1
Un petit lien qui pourrait être intéressant: https://www.excel-pratique.com/fr/vba/couleurs.php
Cordialement,
Conrade82 -
lorsque j'utilise le bouton de remplissage en gris, si j'affiche la propriété ColorIndex dans une msgbox, j'obtiens en effet 15. Mais en utilisant
.Interior.ColorIndex = 15
au lieu de:
.Interior.ThemeColor = xlThemeColorDark1
find ne me renvoi aucun résultat.
pourtant si j'utilise préalablement le code suivantRange("B10").Interior.ColorIndex = 15
le gris devient légèrement plus foncé, et le find fonctionne.
Le problème est que ca reste quand même largement plus simple de remplir des lignes via le bouton de remplissage qu'en passant systématiquement par du code. -
-
2007 ou 2013 selon l'ordinateur sur lequel je suis
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Ton fichier renvoi l'adresse B2, qui ne correspond pas à la case grisée.
-
Bonjour,
essaie plutôt avec la propriété .interior.color qui a une palette beaucoup plus large.
eric
-
Bonjour,
curieux, je croyais avoir posté une réponse hier mais...
Pour ma part j'utilise ceci qui marche chez moi que si j'utilise cells et non range("...")
Option Explicit
Sub trouver_cellule_couleut()
Dim Endroit As String
Application.FindFormat.Clear
Application.FindFormat.Interior.ColorIndex = 3
On Error GoTo echec
Endroit = Cells.Find(What:="", SearchFormat:=True).Address
MsgBox Endroit
Exit Sub
echec:
MsgBox "erreur n°" & Err.Number & " Variable objet ou.... non définie...etc"
End Sub
Michel-
-
-
Michel, je te remercie en effet du temps passé pour m'aider.
Cependant, plutôt que de simplement dire un merci et passer à autre chose, je préférais complètement finir mon fichier, et venir vous faire un compte rendu de toutes les solutions que j'aurais adopté (ici et sur mon autre post). Ce qui explique le fait que je ne t'avais pas remercié immédiatement
-