IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème méthode range.find


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 25
    Points : 17
    Points
    17
    Par défaut Problème méthode range.find
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je ne sais pas exactement ce que fait l'option "Format de recherche" mais je doute TRES fortement que ça corresponde à la recherche d'un format comme tu le souhaites.

    Pour faire exactement ce que tu souhaites, il faut utiliser une boucle "For to" ou "For Each" avec un "If" testant la couleur de fond de ta cellule (Cells(i,"B").Interior. Color)

    Mais si ton but est simplement de trouver la dernière ligne ayant une valeur dans la colonne B, il est plus simple d'utiliser la propriété End ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LigneFin = Cells(Rows.Count,"B").End(xlUp).Row

    Une autre remarque sur ton code :
    Ton "With ActiveSheet" est inutile.
    D'abord parce qu'un With pour une seule propriété, c'est gâcher. Autant écrire : Set Rg = .ActiveSheet.Range("B:B")
    Mais, en plus, ActiveSheet est implicite. Autrement dit, écrire Set Rg = .Range("B:B") marchera aussi bien.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Essaie avec FindFormat.Interior.Color plutôt.

    Et pour récupérer la couleur de la cellule pour faire le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Dim Couleur As Long
     
        Set Rng = Application.InputBox("Cliquer sur la cellule dont vous voulez connaitre la couleur", Type:=8)
        Couleur = Rng.Interior.Color

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Merci pour vos réponses. Je me suis finalement débrouillé avec interior.color

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraction données Word : Problème test Rang.Find
    Par jérémyp8 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/06/2013, 12h48
  2. [XL-2007] Problème Méthode Range() pour supprimer ligne
    Par bob633 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/03/2011, 16h56
  3. Problème méthode find
    Par tazmania dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/06/2007, 16h37
  4. VBA-E Problème méthode .find
    Par popo68 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/01/2007, 11h14
  5. [VBA Excel] problème de range avec find
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2005, 14h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo