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 :

faire un find sur une couleur


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut faire un find sur une couleur
    Bonjour,
    Voulant détecter des lignes particulières à l'aide de la méthode .Find
    en fonction de la couleur je tourne en rond.
    Mon code marche pour une recherche de texte, mais pour la couleur pas moyen de trouver.

    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
    Columns("D:D").Select
    With Range("D:D")
    ' je cherche cette couleur
    Application.FindFormat.Interior.ColorIndex = 46
     
    Set objcell = Selection.Find(What:="", SearchFormat:=True)
        If Not objcell Is Nothing Then
        reponse = objcell.Row
        firstAddress = objcell.Address
        Set objcell = Selection.FindNext(After:=ActiveCell)
        While Not objcell Is Nothing And objcell.Address <> firstAddress
                reponse = objcell.Row
                Set objcell = Selection.FindNext(After:=ActiveCell)
        Wend
    End If
    Merci d'avance de vos idées.

    Bon week-end.

  2. #2
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour comme de bien entendu le forum question ta couleur passe par MFC???

  3. #3
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut
    Ben je souhaite reconnaitre la couleur orange dans les lignes de mon fichier Excel, pour conserver leur "référence".
    J'ai utilisé l'enregistreur de macro pour obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.FindFormat.Interior.ColorIndex = 46
    Merci de m'aider à trouver la formule adéquat.
    Bon week-end.

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Public Sub FindF(ByVal LastLig As Long) 'LastLig dernière ligne de la colonne D à contrôler
    Dim Rng As Range, c As Range
    Dim TabRow() As Long, k As Long, Tr As Long
     
    Application.FindFormat.Interior.ColorIndex = 46
    Set Rng = Range("D1:D" & LastLig)
    Do
        Set c = Rng.Find("", LookAt:=xlPart, SearchFormat:=True)
        If Not c Is Nothing Then
            If c.Row = Tr Then Exit Do
            ReDim Preserve TabRow(k)
            TabRow(k) = c.Row
            k = k + 1
            Tr = c.Row
            Set Rng = Range("D" & c.Row & ":D" & LastLig)
        Else
            Exit Do
        End If
    Loop
    Set Rng = Nothing
    Set c = Nothing
    Application.FindFormat.Clear
    '-----------------------------------------------------------------
    'Dans TabRow on récuppère le n° des lignes dont la couleur est 46
    If k > 0 Then
        For k = 0 To UBound(TabRow)
            Range("B" & k + 1) = TabRow(k)
        Next k
    End If
    End Sub

  5. #5
    Membre actif
    Inscrit en
    Janvier 2003
    Messages
    604
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 604
    Points : 247
    Points
    247
    Par défaut
    Merci ca marche très bien.
    Est ce que cela veut dire qu'il vaut mieux d'une manière générale se passer du FindNext où que l'on est plutôt dans un cas particulier ?
    D'avance merci de vos lumières.

Discussions similaires

  1. Faire un undo sur une macro
    Par cbonnard dans le forum Général VBA
    Réponses: 15
    Dernier message: 19/10/2005, 17h19
  2. Faire un select sur une quantité défini d'élément
    Par tripper.dim dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/06/2005, 11h14
  3. Faire un Lock sur une table pendant l'exec d'un DTS
    Par Pete dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/03/2005, 14h17
  4. Selectionnet tous ou faire un clear sur une liste
    Par Canou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/11/2004, 10h26
  5. Réponses: 1
    Dernier message: 23/02/2003, 06h22

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