VBA : problème avec la méthode range.find
xuorel
Messages postés
265
Statut
Membre
-
xuorel Messages postés 265 Statut Membre -
xuorel Messages postés 265 Statut Membre -
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
A voir également:
- VBA : problème avec la méthode range.find
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
8 réponses
Bonjour,
essayez:
Un petit lien qui pourrait être intéressant: https://www.excel-pratique.com/fr/vba/couleurs.php
Cordialement,
Conrade82
essayez:
.Interior.ColorIndex = 15au 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 suivant
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.
.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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
essaie plutôt avec la propriété .interior.color qui a une palette beaucoup plus large.
eric
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("...")
Michel
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
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