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

Access Discussion :

Export Excel - Gestion des couleurs


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Points : 88
    Points
    88
    Par défaut Export Excel - Gestion des couleurs
    Bonjour,

    Lors d'un export de données d'Access2003 vers Excel2003 (merci Caféine ), j'ai besoin de colorer les cellules Excel en fonction d'une valeur présente dans une table Access.

    Sous Access, la valeur de la couleur est stockée dans une table et est sous la forme "16744703". Cette couleur est sélectionnée par le biais d'une fenêtre systè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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Private Declare Function CHOOSECOLOR Lib "comdlg32.dll" Alias _
    "ChooseColorA" (pChoosecolor As CHOOSECOLOR) 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
    Public Function ShowColor(Handle As Long) As Long
        Dim cc As CHOOSECOLOR
        Dim Custcolor(16) As Long
        Dim lReturn As Long
        'set the structure size
        cc.lStructSize = Len(cc)
        'Set the owner
        cc.hwndOwner = Handle
        'set the custom colors (converted to Unicode)
        cc.lpCustColors = StrConv(CustomColors, vbUnicode)
        'no extra flags
        cc.flags = 0
        'Show the 'Select Color'-dialog
        If CHOOSECOLOR(cc) <> 0 Then
            ShowColor = cc.rgbResult
            CustomColors = StrConv(cc.lpCustColors, vbFromUnicode)
        Else
            ShowColor = -1
        End If
    End Function
    Mon problème est que sous Excel la couleur rendue est rarement celle choisie à l'origine dans Access.
    Je suppose qu'il doit y avoir une astuce en passant par les couleurs RVB ou quelquechose du genre, mais je ne vois pas laquelle.
    Un coup de pouce serait le bienvenu

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Points : 88
    Points
    88
    Par défaut
    Si vous connaissez des sites où je peux chercher des bouts de réponses je suis preneur

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2002
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 150
    Points : 169
    Points
    169
    Par défaut
    Salut,

    est-ce que "16744703" n'est pas déja le codage d'une couleur au format RGB ?

    comment affecte-tu la couleur aux cellules d'Excel ?

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Dans Excel, il n'ya que 40 couleurs possibles en mode utilisateur...
    Tu pourrais faire une fonction qui convertie la couleur Access en couleur Excel en fonction d'un intervalle de valeur Long...
    Mais sache que les cellules acceptent certaines couleurs Access si tu emploies la bonne méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub testColors()
    Dim C As Long
     
      For C = 0 To 16777215 Step 1024
        ActiveCell.Offset(-1, 0).Value = C
        ActiveCell.Interior.Color = C
        Application.Wait Now + #12:00:01 AM#
        DoEvents
      Next
     
    End Sub
    Attention, cet exemple prend des ressources système... (Ctrl+Pause pour arrêter)
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Points : 88
    Points
    88
    Par défaut
    Merci argyronet, mais je ne suis pas certain d'avoir bien compris.

    Dans mon cas, une gestion de planning d'absence, un responsable aura choisi, à travers une fenêtre système de choix de couleurs (voir le code dans mon premier post), d'affecter telle couleur à tel type d'absence (Congé, RTT etc.).
    Je me retrouve donc avec une table qui contient (par exemple)
    typeAbsence | colorAbsence
    CONGE | 16744703
    RTT | 16751052
    etc.

    Lorsque le responsable exporte le planning sur Excel, c'est Access qui "dessine" le planning dans Excel, avec effectivement la fonction : ActiveCell.Interior.Color = rst("colorAbsence")

    Tu me parles d'une "bonne méthode", mais j'ai du mal à saisir laquelle ?
    Je vois que dans ton code, tu changes le pas de ta boucle de 1024, ce qui me laisse penser que ma couleur pour être acceptée par Excel doit forcement être un multiple entier de 1024 ?

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Euh non, les 1024, c'était pour aller un peu plus vite, en fait...

    Mais dans VBE Excel et tapes par exemple dans la fenêtre de debug, alors qu'une cellule est activée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Interior.Color = 9888471
    qui est une couleur jaune-verdâtre pâle, une fois dans Excel devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ?ActiveCell.Interior.Color
    10079487
    soit un orange saumon, ce qui n'a rien à voir...
    C'est ça qui est délirant !!! Car certaines couleurs sont acceptées alors qu'elles ne sont pas disponibles dans la palette de 40 proposées...
    Donc pour palier à ton problème de cellules/couleurs, tu établies la liste des couleurs possibles et intéressantes pour toi dans une boucle For depuis Excel et tu adaptes dans Access et pas l'inverse...

    Et encore une contrainte, une !!!
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2002
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 150
    Points : 169
    Points
    169
    Par défaut
    pour info,

    la palette Excel affiche 40 couleurs mais n'est pas limitée à 40 (56 en fait) car il est possible de personnaliser la palette avec ses propres couleurs (via outils > options > couleurs)

    par contre pourquoi cette translation de certaines couleurs ...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Points : 88
    Points
    88
    Par défaut
    Groumpf !
    Ma méthode initiale était la bonne alors, ça m'apprendra à vouloir jouer au pro avec des fenêtres système

    Merci à vous deux, et pas merci à Microsoft cette fois (encore une fois ?)

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

Discussions similaires

  1. [Birt 4.3.1] Export Excel , gestion des sheets
    Par vinch999 dans le forum BIRT
    Réponses: 2
    Dernier message: 04/02/2014, 15h19
  2. [VxiR2] Gestion des couleurs pour export excel
    Par n.roussaly dans le forum Webi
    Réponses: 2
    Dernier message: 13/10/2010, 10h24
  3. gestion des couleurs entre BO et Excel
    Par courti01 dans le forum Débuter
    Réponses: 5
    Dernier message: 21/04/2010, 11h06
  4. Réponses: 2
    Dernier message: 11/05/2005, 13h23
  5. [Debutant] gestion des couleurs ??
    Par MaxiMax dans le forum OpenGL
    Réponses: 5
    Dernier message: 26/03/2004, 08h34

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