VBA : problème avec la méthode range.find

xuorel Messages postés 251 Date d'inscription   Statut Membre Dernière intervention   -  
xuorel Messages postés 251 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 :

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

conrade82 Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   4
 
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
0
xuorel Messages postés 251 Date d'inscription   Statut Membre Dernière intervention  
 
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 suivant
Range("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.
0
conrade82 Messages postés 96 Date d'inscription   Statut Membre Dernière intervention   4
 
Quelle version d'Excel utilisez-vous?
0
xuorel Messages postés 251 Date d'inscription   Statut Membre Dernière intervention  
 
2007 ou 2013 selon l'ordinateur sur lequel je suis
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
Bonsoir,

Tu peux essayer comme cela
https://www.cjoint.com/?DGzacu1zpkU

A+
0
xuorel Messages postés 251 Date d'inscription   Statut Membre Dernière intervention  
 
Ton fichier renvoi l'adresse B2, qui ne correspond pas à la case grisée.
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
Tu es sûr qu'il s'agit de mon fichier ?
De mon coté, il renvoie bien l'adresse $B$10 qui correspond à la case grisée.
Problème géographique ???
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

essaie plutôt avec la propriété .interior.color qui a une palette beaucoup plus large.

eric
0
xuorel Messages postés 251 Date d'inscription   Statut Membre Dernière intervention  
 
OK. Mais dans ce cas la, lorsque rempli une case avec une couleur dans la palette de remplissage, comment connaitre la référence color utilisée ?

j'essayais d'utiliser themecolor car lorsque je rempli une case en gris, l'enregistreur de macro utilise cette propriété
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
msgbox [A1].interior.color
ou bien couleur=[A1].interior.color

eric
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
de rien...
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
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
0
xuorel Messages postés 251 Date d'inscription   Statut Membre Dernière intervention  
 
je vais essayer avec cells.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
MERCI POUR LE TEMPS PASSE A ESSAYER DE M'AIDER

De rien...
0
xuorel Messages postés 251 Date d'inscription   Statut Membre Dernière intervention  
 
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
0