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 :

Vérification de la couleur d'une cellule avec mise en forme conditionnelle [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    N/A
    Inscrit en
    Novembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Novembre 2018
    Messages : 2
    Par défaut Vérification de la couleur d'une cellule avec mise en forme conditionnelle
    Hello à tous !

    Un grand merci pour commencer à tous les participants de ce forum, qui ont su m'aider jusqu'à présent à trouver des solutions pour la construction de ma macro actuelle.

    Malheureusement, le moment tant redouté est arrivé... *musique sinistre* je poste parce que je n'ai pas trouvé la réponse à ma question


    Je travaille depuis un moment sur une macro qui reprend telle quelle une feuille Excel, et transcrit chaque élément qu'elle rencontre (autre que vide) dans un tableau sur une nouvelle feuille, avec un format particulier pour chaque type d'élément.

    J'ai donc un For Each qui boucle sur chaque cellule de la zone spécifiée (réduite par rapport à toute la feuille en question), et une suite de If... Else If... End If qui gèrent chaque type d'élément, en fonction du format de la cellule évaluée, et qui saisit une nouvelle ligne dans mon tableau, avec des données spécifiques au type d'élément rencontré, ainsi de suite... jusqu'à la fin de la zone spécifié.

    Pour gérer un cas, j'ai mis la ligne de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ElseIf cell.Interior.Color = RGB(219, 219, 219) And cell.Column = 5 Then
    'Mes instructions pour remplir le tableau spécifique pour cet élément
    En exécutant mon code je me rends compte que dans mon tableau il manque beaucoup de ces éléments, comme s'ils n'étaient pas pris en compte.

    Et effectivement après analyse scrupuleuse je me rends compte que pour me faciliter un peu plus le boulot /*sarcasme off/ le fichier qu'on m'a refilé contient parfois une mise en forme conditionnelle

    Cette MeFC est exactement pareil que la MeF qui est prise en compte dans ma condition plus haut, mais c'est juste pour me faire ch** il faut que je fasse avec ce format, sans faire d'opérations manuelles sur ce fichier...

    J'ai bien tenté la chose suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ElseIf (cell.Interior.Color = RGB(219, 219, 219) Or cell.FormatConditions(1).Interior.Color = RGB(219, 219, 219)) And cell.Column = 5 Then
     
         'Instructions
    Mais je me retrouve avec une big fat error : "L'indice n'appartient pas à la sélection". J'ai cherché un peu partout et j'ai beaucoup de mal à comprendre la construction de cet objet FormatConditions(index), pourtant j'ai bien l'impression que mon problème vient de là.

    Je cherche donc un moyen de prendre en compte simplement cette MeFC en vérifiant que la couleur correspond bien. Si vous avez une solution sur le problème de FormatConditions ou alors une autre solution encore plus simple je suis preneur !!


    Merci beaucoup d'avance pour votre aide

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir
    avant ton premier if qui precède tes elseif determine la couleur de quelle propriété mfc.interior ou .interior
    et tu teste seulement la variable couleur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim couleur
    If cell.FormatConditions.Count > 0 then couleur= cell.FormatConditions(1).Interior.Colorelse couleur=cell.Interior.Color)
     
    if couleur =............ then 
     
    ElseIf couleur = RGB(219, 219, 219) And cell.Column = 5 Then
     
    elseif..couleur =....... then 
     
    end if
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 591
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 591
    Par défaut
    Bonjour

    Tester la couleur avec DisplayFormat.Interior.ColorIndex : fonctionne que ce soit MFC ou manuel

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bien vu 78chris
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 186
    Billets dans le blog
    53
    Par défaut
    Bonjour Chris,
    Tester la couleur avec DisplayFormat.Interior.ColorIndex : fonctionne que ce soit MFC ou manuel
    Excellente découverte pour ma part, je ne connaissais pas cette propriété
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Candidat au Club
    Homme Profil pro
    N/A
    Inscrit en
    Novembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Novembre 2018
    Messages : 2
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Bonjour

    Tester la couleur avec DisplayFormat.Interior.ColorIndex : fonctionne que ce soit MFC ou manuel
    Un grand, grand merci 78chris, ça fonctionne à merveille ! Dire que j'avais passé des heures à essayer de trouver une solution...


    Petite frayeur au moment de tester car ça ne semblait pas détecter mieux les éléments concernés, en fait c'est parce que ma toute première condition "If" se débarrasse des cellules blanches/vides ; sans DisplayFormat sur cette condition elle passait sur mes éléments importants en les comptant comme blanc, et donc avant leur "If.. DisplayFormat"


    Encore un grand merci, je passe en

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

Discussions similaires

  1. [XL-2016] Macro pour Copier une cellule avec mise en forme
    Par ggerphagnon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/10/2017, 23h08
  2. Réponses: 13
    Dernier message: 08/12/2014, 09h32
  3. Mettre une couleur dans une cellule avec user form
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 10/01/2008, 13h12
  4. changement de couleur d'une cellule avec onmouseover
    Par poitierjohan dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/10/2007, 20h00
  5. Réponses: 1
    Dernier message: 08/03/2006, 21h07

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