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 :

rechercher une couleur de fond


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Par défaut rechercher une couleur de fond
    Bonjour

    Voici un bout de code que j'aimerais compléter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each c In Selection
    a = Range("E4").Value
    If c.Interior.ColorIndex = 3 Then
    MsgBox a
    c = c + 1
    End If
    Next
    Je cherche à afficher le contenu d'une cellule (fusionnée) lorsque ma boucle rencontre la couleur de fond rouge. Ce contenu se trouve dans la colonne E, dans l'exemple ci-dessus çà fonctionne mais je souhaite passer en automatique à l'affichage suivant par exemple E5 je joins un bout de mon fichier pour plus de compréhension.

    Mercimail forum.xls

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut
    bienvenue sur le forum DVP

    Ce serait gentil de mettre un titre plus explicite et d'ajouter les balises Code à ton listing (bouton # dans l'éditeur de message).

    T'as de la veine, j'ai encore sur mon ordi un fichier de tests que j'ai fait pour mon tendre époux... une longue histoire.

    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
    Sub testToto()
        Dim cellules As Range
        For Each cellules In Range("A1:H8")
            If cellules.MergeCells Then
                MsgBox "Les cellules " & cellules.MergeArea.Address & _
                       " sont fusionnées." & vbCrLf & "Valeur affichée : " _
                       & cellules.MergeArea.Cells(1, 1)
                Exit For
            End If
        Next
    End Sub
     
    Sub test2Toto()
        ' Afficher la fenêtre d'exécution (Crtl + G) pour voir le résultat de
        ' l'instruction Print de l'objet Debug.
        Dim cellule As Range
        Dim r As Long, c As Integer
        ' coordonnées de la cellule E5
        r = 5: c = 5
        ' Trouve la cellule voisine de E5 avec la méthode (fonction) Offset
        Set cellule = Range(Cells(r, c).Address).Offset(0, 1)
        If cellule.MergeCells Then
            Debug.Print "Cellules fusionnées :", cellule.MergeArea.Address
            Debug.Print "Cellule sélectionnée :", cellule.Address
            Debug.Print "Cellule de donnée :", cellule.MergeArea.Cells(1, 1).Address
            Debug.Print "Donnée de cellule :", cellule.MergeArea.Cells(1, 1)
        End If
        Set cellule = Nothing
    End Sub
    voir l'image jointe (jusqu'à ce que ton problème soit résolu...) pour un aperçu de la plage de cellules fusionnées.

    Dans l'éditeur VBA (le VBE, quoi), tu affiche la fenêtre d'exécution (Ctrl + G) pour voir les valeurs retournées dans le Debug.Print.

  3. #3
    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 176
    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 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si je lis entre les lignes, tu souhaites parcourir toutes les cellules que tu as sélectionnées et afficher par l'instruction MsgBox la valeur de la cellule qui serait rouge.
    Si c'est cela, voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     Dim c As Range
     For Each c In Selection
      ' a = Range("E4").Value << = Je ne sais pas ce que cela venait faire là
      If c.Interior.ColorIndex = 3 Then
       MsgBox c
       ' c = c + 1 <<<< Même constat le FOR EACH C étant une boucle il est parfaitement inutile d'incrémenter C qui l'est par la boucle
      End If
     Next
    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

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Moi, ce que je ne comprends pas, c'est que normalement, les cellules fusionnées ont toutes la même couleur de fond... alors comment comparer si l'une d'elles a une couleur semblable ou différente et par rapport à quoi...

    Normalement, dans un groupe de cellules fusionnées, une seule contient une valeur. D'ailleurs, les cellules fusionnées et le traitement de données par VBA, ce n'est pas un très heureux mariage... Ça peux fonctionner, mais avec des cheveux blancs inutiles.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Par défaut Précisions
    Bonjour et merci pour vos réponses

    En fait je souhaite sélectionner (manuellement) des jours, semaines ou mois dans la partie droite (calendrier) et que lorsque je clique sur le bouton que j'ai affecté à ma macro lorsqu'elle rencontre un cellule dont le fond est rouge je voudrais qu'elle m'affiche une boite de dialogue avec le contenu de la colonne E qui est en face (partie gauche) puis qu'elle continue à lire la sélection. Dans mon exemple je sélectionne tous les mois de janvier le premier fond rouge se trouve mercredi 5 donc affichage msgbox avec comme valeur la colonne E soit DSP782 puis on continue et arrivé au mardi 18 affichage msgbox DSP785 et ainsi de suite.

    Pour info je suis débutant en VBA et sur le forum merci pour votre indulgence et votre accueil.

  6. #6
    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 176
    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 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Adaptation du code que j'ai déjà posté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Lecture()
     Dim c As Range
     For Each c In Selection ' Lecture de la sélection
      If c.Interior.ColorIndex = 3 Then
       MsgBox Range("E" & c.Row) ' Affichage de la cellule "Er" (r) représentant la ligne 
      End If
     Next
    End Sub
    Bien sûr dans cet exemple il n'est pas prévu qu'il y ait des lignes fusionnées.
    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

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Par défaut on y est presque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Lecture()
     Dim c As Range
     For Each c In Selection ' Lecture de la sélection
      If c.Interior.ColorIndex = 3 Then
       MsgBox Range("E" & c.Row) ' Affichage de la cellule "Er" (r) représentant la ligne 
      End If
     Next
    End Sub
    Bien sûr dans cet exemple il n'est pas prévu qu'il y ait des lignes fusionnées

    Bonjour

    Je n'arrive pas à déterminer r dans votre exemple. Le code ci-dessous est un bout de solution à mon problème, il affiche bien ce que je veux sauf que je ne sais pas comment passer de E4 à E5 et ainsi de suite je pense que c'est la valeur en rouge qui me pose problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each c In Selection 
    a = Range("E4").Value
    If c.Interior.ColorIndex = 3 Then
    MsgBox a
    End If
    next

Discussions similaires

  1. comment enlever une couleur de fond à un form
    Par aktos dans le forum Windows Forms
    Réponses: 1
    Dernier message: 26/11/2007, 19h58
  2. Réponses: 6
    Dernier message: 20/09/2007, 06h26
  3. [FPDF] Une couleur de fond autre que blanc ?
    Par calogerogigante dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/08/2007, 01h16
  4. Je n'arrives pas a mettre une couleur de fond
    Par metalcoyote dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 03/05/2007, 17h42
  5. Réponses: 4
    Dernier message: 22/04/2007, 19h20

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