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 :

récupérer la couleur d'un "xlDialogPatterns" [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Points : 46
    Points
    46
    Par défaut récupérer la couleur d'un "xlDialogPatterns"
    Bonjour,

    Je vous présente mon problème:

    L'utilisateur de mon fichier Excel aura plusieurs rectangle de couleurs devant lui. Chacun de ces rectangle ont une macro qui leur est affectées au clique.

    Supposons que l'utilisateur n'aime pas les couleurs de ces différents rectangle, je souhaite donc mettre une bouton a coté de ces rectangle pour lui permettre de changer leurs couleurs.

    En cliquant sur ce bouton une UserForm s'ouvrirait avec plusieurs cadres d'images (autant que de rectangles). La couleur des ces cadres d'image serait la meme que celles des rectangles et pour la modifier il suffirait à l'utilisateur de cliquer sur chacun des cadres d'images.
    En cliquant je voudrait que la palette de couleur s'ouvre pour permettre un grand choix de couleurs.

    A la fermeture de cette palette de couleur, je voudrais que le cadre image prenne la couleur sélectionnée (dans la palette) et ensuite en cliquant que la touche "OK" de ma UserForm les rectangles prendront à leur tour la couleur des cadres images de la UserForm.

    Dans tout ca, j'arrive à créer la Userform avec mes cadre images. J'affecte une macro au clique sur le cadre image qui est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CadreColor1_Click()
        Application.Dialogs(xlDialogPatterns).Show
        Me.CadreColor1.BackColor = xlDialogPatterns
    End Sub
    Ce qui me permet d'ouvrir la palette de couleur en cliquant sur le cadre image (CadreColor1) mais le problème est le suivant:

    Le CadreColor1 ne prend pas bien la couleur choisie à l'aide de la palette et celle ci va plutôt sur une cellule sélectionnée de la feuille Excel...

    Est ce que quelqu'un serait comment récupérer la valeur de la "xlDialogPatterns" pour l'injecter dans le cadre image de ma UserForm et non dans une cellule Excel??

    Je vous remercie par avance

    Yvespi

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    xlDialogPatterns permet d'ajuster la couleur de fond d'une cellule et rien d'autre mais...on peut récupérer cette couleur de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CadreColor1_Click()
    Dim CoulOld As Long, CoulNew As Long
     
    Application.ScreenUpdating = False
    CoulOld = ActiveCell.Interior.Color
    Application.Dialogs(xlDialogPatterns).Show
    CoulNew = ActiveCell.Interior.Color
    ActiveCell.Interior.Color = CoulOld
    Me.CadreColor1.BackColor = CoulNew
    Application.ScreenUpdating = True
     
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Points : 46
    Points
    46
    Par défaut
    Merci Fring pour ta réponse,

    En effet ca marche.
    Seul petit problème: si l'utilisateur clique sur "annuler" dans le xlDialogPatterns, le case ou va la couleur prend la couleur blanche ainsi que mon cadre image de la UserForm...

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    en ajoutant une petite vérification on solutionne ce problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CadreColor1_Click()
    Dim CoulOld As Long, CoulNew As Long, Verif As Boolean
     
    Application.ScreenUpdating = False
    CoulOld = ActiveCell.Interior.Color
    Verif = Application.Dialogs(xlDialogPatterns).Show '<-- renvoie Vrai si click sur Ok et Faux si click sur Annuler
    If Verif = True Then
        CoulNew = ActiveCell.Interior.Color
        ActiveCell.Interior.Color = CoulOld
        Me.CadreColor1.BackColor = CoulNew
    End If
    Application.ScreenUpdating = True
     
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Points : 46
    Points
    46
    Par défaut
    OK! Merci, en effet le problème est solutionné pour ce qui est du cadre image.

    maintenant le problème est pour la cellule. lorsque l'utilisateur clique sur OK dans la xlDialogPatterns, le cellule prend automatiquement la couleur blanche... et la garde après!

  6. #6
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Points : 46
    Points
    46
    Par défaut
    tout bêtement, en supprimant la couleur de la cellule ... dsl

    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
    Private Sub Color1_Click()
     
    Dim CoulOld As Long, CoulNew As Long, Verif As Boolean
     
    Application.ScreenUpdating = False
    CoulOld = ActiveCell.Interior.Color
    Verif = Application.Dialogs(xlDialogPatterns).Show '<-- renvoie Vrai si click sur Ok et Faux si click sur Annuler
     
    If Verif = True Then
        CoulNew = ActiveCell.Interior.Color
        ActiveCell.Interior.Color = CoulOld
        Me.Color1.BackColor = CoulNew
    End If
     
        With Selection.Interior
            .Pattern = xlNone
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
     
    Application.ScreenUpdating = True
     
     
    End Sub
    Merci beaucoup!!

  7. #7
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Le problème en procédant comme ça est que tu supprimes d'office la couleur de fond de la cellule même si celle si en possédait une initialement.
    Je ferais plutôt comme ceci :
    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
    Private Sub Color1_Click()
    Dim CoulOld As Long, CoulNew As Long, Verif As Boolean, CelPat As Long
     
    Application.ScreenUpdating = False
     
    With ActiveCell.Interior
        CoulOld = .Color
        CelPat = .Pattern
        Verif = Application.Dialogs(xlDialogPatterns).Show
     
        If Verif = True Then
            CoulNew = .Color
            If CelPat = 1 Then
                .Color = CoulOld
            Else
                .Pattern = xlNone
            End If
            Me.Color1.BackColor = CoulNew
        End If
    End With
     
    Application.ScreenUpdating = True
     
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 93
    Points : 46
    Points
    46
    Par défaut
    Ah oui en effet, je n'avais pas pensé à la couleur d'origine de la cellule (je testais tout le temps sur des cellule sans couleur...

    Merci beaucoup en tout cas

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

Discussions similaires

  1. [XL-2003] Récupérer la couleur de Application.Dialogs(xlDialogPatterns)
    Par MiXinG dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/05/2009, 15h40

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