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

Fermé
xuorel Messages postés 254 Date d'inscription samedi 24 novembre 2012 Statut Membre Dernière intervention 11 mai 2023 - 24 juil. 2014 à 17:52
xuorel Messages postés 254 Date d'inscription samedi 24 novembre 2012 Statut Membre Dernière intervention 11 mai 2023 - 28 juil. 2014 à 23:25
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 dimanche 21 avril 2013 Statut Membre Dernière intervention 9 septembre 2016 4
Modifié par conrade82 le 24/07/2014 à 21:56
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 254 Date d'inscription samedi 24 novembre 2012 Statut Membre Dernière intervention 11 mai 2023
24 juil. 2014 à 22:27
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 dimanche 21 avril 2013 Statut Membre Dernière intervention 9 septembre 2016 4
24 juil. 2014 à 23:57
Quelle version d'Excel utilisez-vous?
0
xuorel Messages postés 254 Date d'inscription samedi 24 novembre 2012 Statut Membre Dernière intervention 11 mai 2023
24 juil. 2014 à 23:58
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 samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
25 juil. 2014 à 00:03
Bonsoir,

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

A+
0
xuorel Messages postés 254 Date d'inscription samedi 24 novembre 2012 Statut Membre Dernière intervention 11 mai 2023
25 juil. 2014 à 00:11
Ton fichier renvoi l'adresse B2, qui ne correspond pas à la case grisée.
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 523
25 juil. 2014 à 07:47
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 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
25 juil. 2014 à 07:53
Bonjour,

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

eric
0
xuorel Messages postés 254 Date d'inscription samedi 24 novembre 2012 Statut Membre Dernière intervention 11 mai 2023
26 juil. 2014 à 14:13
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 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
Modifié par eriiic le 26/07/2014 à 17:55
msgbox [A1].interior.color
ou bien couleur=[A1].interior.color

eric
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
28 juil. 2014 à 23:18
de rien...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 25/07/2014 à 09:04
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 254 Date d'inscription samedi 24 novembre 2012 Statut Membre Dernière intervention 11 mai 2023
26 juil. 2014 à 14:13
je vais essayer avec cells.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
28 juil. 2014 à 14:08
MERCI POUR LE TEMPS PASSE A ESSAYER DE M'AIDER

De rien...
0
xuorel Messages postés 254 Date d'inscription samedi 24 novembre 2012 Statut Membre Dernière intervention 11 mai 2023
28 juil. 2014 à 23:25
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