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 :

[VBA-E] boite de dialogue palette de couleur


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut [VBA-E] boite de dialogue palette de couleur
    bonjour,

    je cherche à proposer une boite de dialogue pour changer la couleur d'une courbe dans un graphique excel. L'idéal pour moi serait de lancer la boite de dialogue "Format de la série de données", mais celle-là j'ai pas trouvé son nom. Du coup je me rabat sur la boite de dialogue : xlDialogColorPalette

    avec la ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Dialogs(xlDialogColorPalette).Show
    j'arrive à afficher la boite de dialogue, mais impossible de trouver comment récupérer la couleur. j'ai eu beau chercher un peu partout, les seules solutions que je trouve sont des bouts de code qui me permettent de recréer une palette de couleur, ce que je ne trouve pas très élégant puisque windows fourni la boite de dialogue toute prête.

    pourriez vous m'indiquer la ligne de code pour récupérer le n° de la couleur?
    merci d'avance
    virginie

  2. #2
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Salut !
    Apparement tu risques d'avoir du mal à récupérer cette valeur de couleur... C'est bien dommage d'avoir des fenêtres à montrer mais on ne peut pas les exploiter...
    J'ai trouvé un lien qui utilise les API, reste à voir si cela te conviendra...
    +++
    Ju

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut vb - excel - boite de dialogue palette de couleur
    C'est débile de créer des boites de dialogue qui renvoit rien.

    sinon je suppose qu'il faut utiliser un code dans ce style :

    ***************************************************
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Private Declare Function ChooseColor Lib "comdlg32.dll" Alias _
        "ChooseColorA" (pChoosecolor As ChooseColor) As Long
     
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
    Private Type ChooseColor
     
             lStructSize As Long
             hwndOwner As Long
             hInstance As Long
             rgbResult As Long
             lpCustColors As String
             flags As Long
             lCustData As Long
             lpfnHook As Long
             lpTemplateName As String
     
    End Type
     
    Private Function ShowColor() As Long
     
             Dim ChooseColorStructure As ChooseColor
             Dim Custcolor(16) As Long
             Dim lReturn As Long
     
             ChooseColorStructure.lStructSize = Len(ChooseColorStructure)
             ChooseColorStructure.hwndOwner = FindWindow("XLMAIN", _
                Application.Caption)
             ChooseColorStructure.hInstance = 0
             ChooseColorStructure.lpCustColors = StrConv(CustomColors, _
                vbUnicode)
             ChooseColorStructure.flags = 0
     
             If ChooseColor(ChooseColorStructure) <> 0 Then
                 ShowColor = ChooseColorStructure.rgbResult
                 CustomColors = StrConv(ChooseColorStructure.lpCustColors, _
                    vbFromUnicode)
             Else
                 ShowColor = -1
             End If
     
         End Function
     
    Sub ColorTime()
     
    Selection.Interior.Color = ShowColor
     
    End Sub
    *************************************************

    je posais la question car je n'aime pas beaucoup utiliser du code sans vraiment le comprendre.
    merci quand même.
    virginie

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Et avec CommonDialog.ShowColor, ça marche pas?

    J'ai pas testé, je lance juste un pavé dans la mare.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je viens de vérifier et ça fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      CommonDialog1.ShowColor
      MsgBox (CommonDialog1.Color)
    Evidemment, il faut ajouter le CommonDialog aux contrôles de la boîte à outils.

  6. #6
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Ah oui j'avais pas pensé à ca ! Quand je vois VBA, j'ai du mal à imaginer qu'on peut utiliser les mêmes choses qu'en VB...
    +++
    Ju

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Merci pour ces réponses.
    Par contre j'avais bien essayer sans succès d'ajouter le controle CommonDialog, je crois d'ailleur avoir trouver l'info dans les cours de developpez.com.
    j'utilise vb 6.3 avec office 2003, pourriz vous m'indiquer comment ajouter ce control.
    merci
    virginie

  8. #8
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Alors normalement dans le menu "Outils > contrôles supplémentaires" tu sélectionnes Microsoft Common Dialog Control. Après tu le places sur ta Form et tu utilises le code de AlainTech...
    +++
    Ju

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Bon, cette fois ci je suis tombée sur un bug répertorié.
    Quand j'essai d'ajouter le CommonDialog à ma userform, j'ai un message du style "pas possible d'ajouter le truc car pas correctement licencié", après 1h de recherche sur le web, je tombe sur plusieurs info qui disent qu'y y'a bien un problème, même microsoft me dit qu'il est au courant par contre impossible de comprendre leur charabia pour la résolution du problème (cf : http://support.microsoft.com/default.aspx?scid=kb;fr;193025)
    Auriez-vous une solution pour ma version?
    merci
    Virginie

  10. #10
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Salut !

    On ne peut pas accéder à la page... Est-ce que tu pourrais donner quelques explications sur
    j'ai un message du style "pas possible d'ajouter le truc car pas correctement licencié"
    stp
    Merci
    +++
    Ju

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    désolée, je vais être plus claire.
    en essayant d'ajouter le control CommonDialog comme les autres control sur ma userform, j'ai le message d'erreur suivant : "Le contrôle n'a pas été créé parce qu'il n'est pas correctement licencié"

    Ensuite en allant sur d'autres forum j'ai trouvé des info concernant un patch pour réparer ce problème (vb5cli.exe) mais il ne concerne que visual basic v5 et il ne sert donc à rien pour moi. En poussant plus mes recherches sur le site de microsoft (mot clé : dialog license) j'ai une page qui semble parler de mon problème dont voici un extrait :

    *********************
    Symptômes
    Le message dans le projet compilé, vous risquez lorsqu' essayer d'ajouter dynamiquement un contrôle ActiveX MFC à un projet Visual Basic s'afficher d'erreur suivante :
    Erreur d'exécution "747" :
    Aucune information de licences au moment de design n'est trouvée pour contrôle "XX.YY". Contactez le fournisseur pour contrôle "XX.YY" pour vous procurer une licence de design.
    L'erreur se produit bien que le contrôle ne nécessite pas une licence.
    Retour au début

    Cause
    Lorsque dynamiquement ajouter un nouveau contrôle à un Formulaire ou un UserControl à exécution, Visual Basic interroge le contrôle pour l'interface IClassFactory2. Cette interface est généralement utilisée par contrôles qui nécessitent la licence. Si le contrôle prend en charge cette interface, Visual Basic essayera alors de créer une instance du contrôle utilisant la méthode IClassFactory2::CreateInstanceLic, passant la chaîne de licence developer-provided comme un paramètre. Si aucune licence n'est nécessaire, une chaîne vide passe.

    Tous Contrôles ActiveX MFC prennent par défaut en charge l'interface IClassFactory2, même si le contrôle ne nécessite pas une licence de design. Visual Basic appelle CreateInstanceLic, passant une chaîne vide pour la licence, MFC renvoie l'erreur CLASS_E_NOTLICENSED, indiquant que la chaîne passée n'étant pas une clé pour ce contrôle de licence valide. Visual Basic signale l'erreur comme une licence de design incorrect ou manquant.

    Résolution
    Deux solutions de contournement pour ce problème y il a actuellement : 1. Si vous ajoutez le contrôle MFC à l'outil Visual Basic IDE à à le moment de la conception et désactivez ensuite l'option de l'onglet Make du dialogue Project|Properties "qui Permet de supprimer l'information sur contrôles ActiveX inutilisés" Visual Basic compilera l'information de licence du contrôle dans votre projet. Au moment d'exécution, Visual Basic connaîtra que le contrôle ne nécessite pas une licence et appellera par conséquent CreateInstance plutôt que CreateInstanceLic. Cela évitera l'erreur.
    2. Vous pouvez placer le contrôle MFC sur contrôler ActiveX Visual Basic, ensuite ajouter dynamiquement le contrôle Visual Basic au moment d'exécution et exposer ses propriétés et méthodes.
    **********************

    Bon ça se trouve ça se trouve ça n'a rien à voir avec mon problème, mais toujours est-il que je n'arrive pas à ajouter mon CommonDialog à ma userform.

    Merci d'avoir pris le temps de regarder pour solutionner mon problème
    Virginie

  12. #12
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Oh là !
    Je n'ai jamais vu ca perso . J'ai trouvé tout comme toi des "fixeurs" de problèmes de licences pour vb5 et vb6. Mais pour vba, le problème n'a pas l'air d'exister... Je ne vois pas du tout comment tu pourrais faire à part te rabattre sur une solution utilisant les APIs windows.
    Mais peut être que quelqu'un de plus aguéri t'apportera la solution
    En tous cas, bon courage !!!
    +++
    Ju

  13. #13
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    J'ai déjà eu le problème.
    Je le contourne en ajoutant le composant à un form sur une machine où le problème ne se pose pas. Puis je copie ce form sur le PC qui a le problème.

    J'ai déjà pas mal cherché et rien trouvé de convaincant comme solution.

    Je veux bien envoyer un form avec le Comdlg dessus.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Points : 24
    Points
    24
    Par défaut
    Salut !

    Bon je sais que je fais remonter un très vieux post mais j'ai le même problème que la demoiselle alors je veux bien qu'on m'envoit une form avec le commondial dessus Merci !

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 76
    Points : 24
    Points
    24
    Par défaut
    SVP, si quelq'un peut prendre 2 petites minutes, ça me dépannerait : judgetruman AT gmail DOT com

  16. #16
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Du calme!

    Laisse-nous, au moins, le temps de voir le message.

    Mail envoyé.

    J'ai aussi corrigé ton adresse mail dans ton message pour t'éviter d'être inondé de spam.

  17. #17
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    L'autre solution est de faire une recherche sur vbctrls.reg dans Google.

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Agent de securite
    Inscrit en
    Mars 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Agent de securite

    Informations forums :
    Inscription : Mars 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Merci à toutes vos réponses , ce bout de code me sera d'une grande utilité !

    Merci à vous les membres

    Pouic

Discussions similaires

  1. adaptation de code VBA - ouvrir boite de dialogue
    Par p'tite Sandrine dans le forum Access
    Réponses: 10
    Dernier message: 18/09/2006, 15h07
  2. VBA-Excel, boite de dialogue "sélectionner un dossier"
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/06/2006, 09h23
  3. [VBA E]boite de dialogue ouvrir
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 04/06/2006, 21h59
  4. [VBA-E]Boite de dialogue personnalisée
    Par MJMJ dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/03/2006, 13h47
  5. [VBA] Paramètres boite de dialogue Excel
    Par seb.kepka dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/01/2006, 11h19

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