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

  1. #1
    Candidat au Club
    Récupérer la couleur des cases d'une feuille pour la mettre dans mes Label et TextBox
    Bonjour, je suis débutant en VBA, je but sur un petit problème:
    Je voudrai récupérer la couleur des cases d'une feuille pour la mettre dans mes Label et Textbox ( 66 Label et 31 Textbox).

    Mon classeur à 12 feuilles ( 1 par mois),dans Excel j'ai mis automatiquement les samedi et dimanche avec des couleurs différentes.
    Au début de mon Userform j'ai 12 CommandButton qui m'ouvre chaque feuille.
    Quand j'active une feuille, je récupère bien les données:
    - jour de la semaine et date que je met dans les 2 premier Label
    - données dans les 10 Textbox
    Ceci répéter sur 31 ligne (31 jours)
    Mais pas les couleurs, donc j'ai mis une condition pour colorier les lignes comme les cases,
    sa fonctionne presque mais si je change de CommandButton les nouvelles couleurs se mette mais les anciennes reste..
    Je cherche une solution, sois une remise à blanc des lignes de mon Userform, sois récupérer les couleurs des cases.
    Merci de vos contributions, j'espère avoir été clair, je vous reprécise que je début..

  2. #2
    Membre expert
    bonjour
    sa fonctionne presque mais si je change de CommandButton les nouvelles couleurs se mette mais les anciennes reste..
    pour espérer de l'aide je recommande d'afficher ton code entre balise

    Bonne Continuation
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  3. #3
    Expert éminent
    Bonjour,

    Dans un module standard.
    Avant de montrer ton formulaire, tu définis les couleurs de fond de tes contrôles comme égales à la couleur d'intérieur des cellules correspondantes.

    Je te laisse traduire.

    Cela dit, je rejoins l'ami Benasr (salut!) pour la procédure consistant à soumettre un code avant toute question.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  4. #4
    Candidat au Club
    Merci de votre aide,
    je vous met des bout de mon code:
    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
     
     
            'Janvier
            Private Sub CommandButton3_Click()
     
                Sheets("Janvier").Activate
                Set Ws1 = Sheets("Janvier")
     
            ' éfface couleur ligne1
            Label1.BackColor = RGB(500, 255, 1000): Label2.BackColor = RGB(500, 255, 1000)
            TextBox1.BackColor = RGB(500, 255, 1000): TextBox2.BackColor = RGB(500, 255, 1000): TextBox3.BackColor = RGB(500, 255, 1000): _
            TextBox4.BackColor = RGB(500, 255, 1000): TextBox5.BackColor = RGB(500, 255, 1000): TextBox6.BackColor = RGB(500, 255, 1000): _
            TextBox7.BackColor = RGB(500, 255, 1000): TextBox8.BackColor = RGB(500, 255, 1000): TextBox9.BackColor = RGB(500, 255, 1000): _
            TextBox10.BackColor = RGB(500, 255, 1000)
            ' éfface couleur ligne2
            Label3.BackColor = RGB(500, 255, 1000): Label4.BackColor = RGB(500, 255, 1000)
            TextBox11.BackColor = RGB(500, 255, 1000): TextBox12.BackColor = RGB(500, 255, 1000): TextBox13.BackColor = RGB(500, 255, 1000): _
            TextBox14.BackColor = RGB(500, 255, 1000): TextBox15.BackColor = RGB(500, 255, 1000): TextBox16.BackColor = RGB(500, 255, 1000): _
            TextBox17.BackColor = RGB(500, 255, 1000): TextBox18.BackColor = RGB(500, 255, 1000): TextBox19.BackColor = RGB(500, 255, 1000): _
            TextBox20.BackColor = RGB(500, 255, 1000)
     
     
        CommandButton3.BackColor = RGB(255, 0, 0) ' Met en rouge le bouton
          CommandButton4.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton
               CommandButton5.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton
                    CommandButton5.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton
                         CommandButton6.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton
                              CommandButton7.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton
                                   CommandButton8.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton
                                        CommandButton9.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton
                                             CommandButton10.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton
                                                  CommandButton11.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton
                                                       CommandButton12.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton
                                                           CommandButton13.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton
                                                              CommandButton14.BackColor = RGB(500, 255, 1000) ' Change la couleur du bouton

    Et après je met les couleurs dur mon Userform en selectionnant le jour de la semaine:
    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
     
     
    ' Mise en couleur des SAMEDI ET DIMANCHE d'après la case AS11( n°du 1er jour de la semaine, du mois en court ) de la feuille
     
            Dim Jour1 As Integer
                Jour1 = Range("AS11").Value ' Colonne AS jour de la semaine
     
                Select Case Jour1
     
     
                 Case Is = "1" ' si 1er ligne AS11 = 1(lundi) met la 6ème ligne la couleur vert
     
                         Label11.BackColor = RGB(0, 255, 0)  ' Samedi1
                         Label12.BackColor = RGB(0, 255, 0)
                         TextBox51.BackColor = RGB(0, 255, 0) ' Ar Mat1
                         TextBox52.BackColor = RGB(0, 255, 0)
                         TextBox53.BackColor = RGB(0, 255, 0)
                         TextBox54.BackColor = RGB(0, 255, 0)
                         TextBox55.BackColor = RGB(0, 255, 0)
                         TextBox56.BackColor = RGB(0, 255, 0)
                         TextBox57.BackColor = RGB(0, 255, 0)
                         TextBox58.BackColor = RGB(0, 255, 0)
                         TextBox59.BackColor = RGB(0, 255, 0)
                         TextBox60.BackColor = RGB(0, 255, 0)

    ceci 7 fois pour jour de la semaine, en décalant à chaque fois les numéros de label et de textbox...

  5. #5
    Expert éminent
    Salut,

    Ouh la?

    Toujours reporter le code en utilisant les balises #

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    RGB(500, 255, 1000)


    Jamais vu!
    Pour rappel, RGB est fonction qui retourne une valeur numérique de type Long, fonction des 3 valeurs R, G et B
    RGB = (R*(256^0)) + (G*(256^1)) + (B*(256^2))
    Chaque valeur de R, G, et B variant de 0 à 255, soit 256 possibilités (2 puissance 8)

    Toujours nommer ses contrôles de manière explicite en les préfixant par un libellé qui en indique la nature (Txt_Nom, Cbx_service)
    Et ce d'autant si les contrôles sont nombreux, comme ici.

    Dès lors une boucle est possible sur les contrôles par l'objet Controls

    Je te conseille, dans un module standard, de placer des variables couleurs (Long) et de boucler sur les contrôles en affectant à leur propriété de couleur de fond ces variables.

    Tu essaies de tenir compte de ces remarques, et tu reviens avec une proposition de code.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  6. #6
    Membre expert
    bonjour

    MESSAGE COÏNCIDE AVEC MESSAGE DU MarcelG (Bonjour au passage) qui recommande le passage par boucle

    pour éviter de faire un code très long pour rien ... tu peux remplacer par boucle ainsi :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 3
    Me.Controls("TextBox" & i).BackColor = (255, 0, 0)
    Next i
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  7. #7
    Candidat au Club
    Merci, je vais essayer de faire une boucle pour remettre à blanc les boutons, si j'ai bien compris il serrais bien de nommer chaque bouton à leur fonction.

  8. #8
    Candidat au Club
    J'ai bien avancé, Merci à vous, mon code et plus court et fonctionne

    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
     
            'Janvier
            Private Sub CommandButton3_Click()
     
                Sheets("Janvier").Activate
                Set Ws1 = Sheets("Janvier")
                                            ' Éfface couleur boutons
                     Dim c As Integer   ' t pour CommandButton
                     For c = 1 To 14
                      Me.Controls("CommandButton" & c).BackColor = QBColor(15) ' met les CommandButton en Blanc
                    Next c
                                    ' Met la couleur du boutons actif
              CommandButton3.BackColor = RGB(255, 0, 0) ' Met en rouge le bouton
     
                                    ' Éfface couleur Label
                    Dim l As Integer  ' l pour Label
                     For l = 1 To 62
                      Me.Controls("Label" & l).BackColor = QBColor(15) ' met les Label en Blanc
                    Next l
                                    ' Éfface couleur Textbox
                    Dim t As Integer   ' t pour Textbox
                     For t = 1 To 310
                      Me.Controls("TextBox" & t).BackColor = QBColor(15) ' met les Textbox en Blanc
                    Next t
     
     
                Label201 = Format(CDate(Range("AI11").Value), "MMMM YYYY") ' Format("Mois", "Année")
     
                Label200 = Range("J5") 'nom Enfant
     
                Label203 = Range("AU11") 'n° semaine 1
                Label204 = Range("AU17") 'n° semaine 2
                Label205 = Range("AU25") 'n° semaine 3
                Label206 = Range("AU32") 'n° semaine 4
                Label207 = Range("AU38") 'n° semaine 5
     
                Label156 = Format(Range("AO44").Value) 'vérification total H MOIS
                Label157 = Format(Range("AC44").Value) 'vérification total déj.
                Label158 = Format(Range("AD44").Value) 'vérification total Rep.
                Label159 = Format(Range("AE44").Value) 'vérification total Gou.
                Label160 = Format(Range("AF44").Value) 'vérification total Voy.
     
     
                Label1 = Range("AH11") ' jour 1
                Label2 = Format(CDate(Range("AI11").Value), "dd MMMM YY") ' date 1  Format("Mois", "Année")
                Label3 = Range("AH12") ' jour 2
                Label4 = Format(CDate(Range("Ai12").Value), "dd MMMM YY") ' date 2


    je regarde maintenant comment réduire le code pour les couleurs d'après le jour..

    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
    Dim Jour1 As Integer
                Jour1 = Range("AS11").Value ' Colonne AS jour de la semaine
     
                Select Case Jour1
     
     
                 Case Is = "1" ' si 1er ligne AS11 = 1(lundi) met la 6ème ligne la couleur vert
     
                         Label11.BackColor = RGB(0, 255, 0)  ' Samedi1
                         Label12.BackColor = RGB(0, 255, 0)
                         TextBox51.BackColor = RGB(0, 255, 0) ' Ar Mat1
                         TextBox52.BackColor = RGB(0, 255, 0)
                         TextBox53.BackColor = RGB(0, 255, 0)
                         TextBox54.BackColor = RGB(0, 255, 0)
                         TextBox55.BackColor = RGB(0, 255, 0)
                         TextBox56.BackColor = RGB(0, 255, 0)
                         TextBox57.BackColor = RGB(0, 255, 0)
                         TextBox58.BackColor = RGB(0, 255, 0)
                         TextBox59.BackColor = RGB(0, 255, 0)
                         TextBox60.BackColor = RGB(0, 255, 0)
                                                               'et 8 ème ligne bleu
                         Label13.BackColor = RGB(0, 255, 220) ' Dimanche1
                         Label14.BackColor = RGB(0, 255, 220)
                         TextBox61.BackColor = RGB(0, 255, 220)
                         TextBox62.BackColor = RGB(0, 255, 220)
                         TextBox63.BackColor = RGB(0, 255, 220)
                         TextBox64.BackColor = RGB(0, 255, 220)
                         TextBox65.BackColor = RGB(0, 255, 220)
                         TextBox66.BackColor = RGB(0, 255, 220)
                         TextBox67.BackColor = RGB(0, 255, 220)
                         TextBox68.BackColor = RGB(0, 255, 220)
                         TextBox69.BackColor = RGB(0, 255, 220)
                         TextBox70.BackColor = RGB(0, 255, 220)

###raw>template_hook.ano_emploi###