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 :

Couleur cellule vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Par défaut Couleur cellule vba
    bonjour à tous,

    j'ai un petit probleme avec mon code ci-dessous.

    lorsque je rentre des valeurs dans un userform, et que je fais valider, cela ajoute les données qui y sont contenue sur la feuille excel.
    ensuite, cela lance une boucle (call couleur) afin de colorer deux cellules ( E4 et F4) en fonction d'une valeur contenue dans un label (1 ou 2 ou 3 ...) qui a ete ajouté sur la feuille. le problème est que il ne se passe rien quand je valide le tout, ca ajoute ma ligne, mais pas de coloration. et je n'ai pas le retour : "MsgBox ("enregistrement effectué")"


    si vous trouvez mon erreur, je suis preneur ^^
    merci pour vos réponses.

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Worksheets("planification vrac").Rows("4").Insert  ' insert les donnees des box
     
    Worksheets("planification vrac").Range("A4") = Format(Date, "yyyy")
    Worksheets("planification vrac").Range("B4") = Format(Date, "mmmm")
    Worksheets("planification vrac").Range("C4") = Format(TextBox2.Value, "dd/mm/yyyy")
    Worksheets("planification vrac").Range("D4") = TextBox3
    Worksheets("planification vrac").Range("E4") = ComboBox1.Value
    Worksheets("planification vrac").Range("F4") = Val(Label8)
    Worksheets("planification vrac").Range("G4") = Val(TextBox7)
    Worksheets("planification vrac").Range("H4") = TextBox4
    Worksheets("planification vrac").Range("I4") = Format(TextBox8.Value, "dd/mm/yyyy")
    Worksheets("planification vrac").Range("J4") = (CVDate(TextBox2.Value) - CVDate(TextBox8.Value)) / 30
    Call couleur
    ComboBox1.Value = "" 'efface le contenue des box
    TextBox3 = ""
    Label8 = ""
    TextBox7 = ""
    TextBox8 = ""
    TextBox4 = ""
    TextBox2 = ""
    CheckBox1.Value = False
    CheckBox2.Value = False
    Call produit ' charge la combobox
     
    MsgBox ("enregistrement effectué")
     
     
     
     
     
    Private Sub couleur()
     
     
     
    'permet de mettre des couleurs dans la table.
    i = 2
    Do While Worksheets("planification vrac").Cells(i, 6) <> ""
     
        If Worksheets("planification vrac").Cells(i, 6) = 1 Then
         Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(32, 255, 192) And ActiveCell.Offset(0, -1).Interior.Color = RGB(32, 255, 192)
     
            ElseIf Worksheets("planification vrac").Cells(i, 6) = 2 Then
           Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(128, 224, 255) And ActiveCell.Offset(0, -1).Interior.Color = RGB(128, 224, 255)
     
          ElseIf Worksheets("planification vrac").Cells(i, 6) = 3 Then
           Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 255, 160) And ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 255, 160)
     
          ElseIf Worksheets("planification vrac").Cells(i, 6) = 5 Then
           Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 192, 128) And ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 192, 128)
     
          ElseIf Worksheets("planification vrac").Cells(i, 6) = 6 Then
            Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 128, 160) And ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 128, 160)
    Exit Sub
    End If
     
    i = i + 1
    Loop
    End Sub

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 115
    Par défaut
    Bonjour

    Le "And" renvoi un booléen donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RGB(32, 255, 192) And ActiveCell.Offset(0, -1).Interior.Color = RGB(32, 255, 192)
    renvoi Vrai ou Faux
    Ce qui, pour la couleur d'une cellule est.... intéressant

    Je proposerai plutot :
    (Code non testé)



    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 couleur()
     
            'permet de mettre des couleurs dans la table.
            i = 2
            Do While Worksheets("planification vrac").Cells(i, 6) <> ""
            with Worksheets("planification vrac"
            select case.Cells(i, 6)
     
                case 1
                      .Cells(i, 6).Interior.Color = RGB(32, 255, 192)
                      .Offset(0, -1).Interior.Color = RGB(32, 255, 192)
                case 2
                        .Cells(i, 6).Interior.Color =     RGB(128, 224, 255
                         .Offset(0, -1).Interior.Color = RGB(128, 224, 255)
    '    etc......   
     
     
     
               Exit Sub
            End If
     
            i = i + 1
            Loop
    End Sub

    La mise ne forme conditionnelle serait peut-être + indiquée (Onglet Accueil+pavé style)


    Cordialement

  3. #3
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Par défaut
    Salut, piotr76,

    merci pour ta réponse, j'ai integré la couleur dans mon insertion, mais maintenant, il faut que je fasse 7 case is. ce qui va ralonger le code. n'y aurait il pas une solution plus simple ?


    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
     
    sélect case label8
     
    case is = 1 and  TextBox2 <> "" And TextBox3 <> "" And TextBox4 <> "" And TextBox7 <> "" And TextBox8 <> "" And CheckBox1.Value = True
     
    Worksheets("planification vrac").Rows("4").Insert  ' insert les donnees des box
    Worksheets("planification vrac").Range("A4") = Format(Date, "yyyy")
    Worksheets("planification vrac").Range("A4").Interior.Color = RGB(32, 255, 192)
    Worksheets("planification vrac").Range("B4") = Format(Date, "mmmm")
    Worksheets("planification vrac").Range("C4") = Format(TextBox2.Value, "dd/mm/yyyy")
    Worksheets("planification vrac").Range("D4") = TextBox3
    Worksheets("planification vrac").Range("E4") = ComboBox1.Value
    Worksheets("planification vrac").Range("F4") = Val(Label8)
    Worksheets("planification vrac").Range("G4") = Val(TextBox7)
    Worksheets("planification vrac").Range("H4") = TextBox4
    Worksheets("planification vrac").Range("I4") = Format(TextBox8.Value, "dd/mm/yyyy")
    Worksheets("planification vrac").Range("J4") = (CVDate(TextBox2.Value) - CVDate(TextBox8.Value)) / 30
    ComboBox1.Value = "" 'efface le contenue des box
    TextBox3 = ""
    Label8 = ""
    TextBox7 = ""
    TextBox8 = ""
    TextBox4 = ""
    TextBox2 = ""
    CheckBox1.Value = False
    CheckBox2.Value = False
    Call produit ' charge la combobox
     
    MsgBox ("enregistrement effectué")
     
     
    end select

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    effectivement ca ne peut pas faire grand chose
    1- déjà "private sub ,pourquoi pas sub?
    2 en entrant dans la sub(couleur) i est egal a 2 donc si la celles(i,6)n'a rien
    la boucle do while tourne en boucle et ne s'arrête jamais

    pour moi c'est plus un problème de compréhension de ton environnement, on ne peut plus parler d'erreur a ce niveau la

    la structure du code n'a ni queue ni tète sans vouloir t'offenser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub couleur()
     
    'permet de mettre des couleurs dans la table.
    i = 2
    Do While Worksheets("planification vrac").Cells(i, 6) <> ""
    si tu nous disais ce que tu veux faire exactement en Français intelligible on pourrait peut être t'aider

    ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ElseIf Worksheets("planification vrac").Cells(i, 6) = 6 Then
            Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 128, 160) And ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 128, 160)
    ce qui reviens a dire que la couleur de la cellule(i,6)est egale (RGB(255, 128, 160) And ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 128, 160)) donc forecement la on tombe sur une variable booleen et forcement a false
    donc on l'ecrira comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ElseIf Worksheets("planification vrac").Cells(i, 6) = 6 Then
            Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 128, 160) : ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 128, 160)
    ou comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ElseIf Worksheets("planification vrac").Cells(i, 6) = 6 Then
            Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 128, 160) 
     ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 128, 160)
    et cela pour tout les if et elseif
    et je dirais même mieux la colorisation de l'activecell peut être faite qu'une seule fois avant le "do while" puisque a chaque fois c'est la même couleur donc autant le faire qu'une fois

    ensuite encore ôte moi d'un doute quand tu dis activecell tu ne parle pas de la cellule(i,6) j'espère
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Par défaut
    Bonsoir Patricktoulon,

    pas d'offence, je suis tres novice en vba, donc j'applique ce que j'ai appris malgrès le fait que ce ne soit pas entierrement bon.

    enfaite, dans un userform, je rentre des données.
    dans ce user form, j'ai une combobox qui me sélectionne un produit. quand ce produit est sélectionne, cela affiche dans le label sa catégorie.
    je choisi alors le type de produit : vrac ou conditionnement. quand cela est fait, je rentre des données (voir photo) et j'envoie le résultat qui se rentre dans la feuille excel.
    si j'ai sélectionné vrac ca s’inscrit dans la feuille vrac, si conditionnement, dans la feuille conditionnement.

    si ma catégorie est 1: alors la celulle E6 et F6 se colore de la couleur rgb que j'ai choisi. si c'est 2 d'une autre couleur et ainsi de suite.


    voici une photo pour etre plus parlant.


    maintnenat j'ai reussi à faire apparaitre les couleur, seulement avec des select case, mais comme il y a 5 categories et vrac ou conditionnement, cela va me generer bcp de ligne, ce que j'essaye d'eviter. maintenant si tu me dis que mon call couleur a une erreur et que c'est pour ca que ca marche pas, je suis preneur ^^


    pour le doute "active cell" oui je parlais de la (i,6), enfaite j'ai fais une boucle mais la couleur pouvais se faire une seul fois et que la boucle ne tourne pas à chaque fois, peut etre que le do while marcherait mieux, mais je ne sais pas comment faire.


    cordialement
    Gipn

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re ta su réécrite
    voila une des multiples façons d'écrire ta sub
    j'ai mis un commentaire dans la ligne du do while ,essai d'en comprendre le sens
    il y avait un "exit sub" avant le loop, pas étonnant que ca s'arrête

    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
    Private Sub couleur()
     
    'permet de mettre des couleurs dans la table.
    i = 2
    Do While Worksheets("planification vrac").Cells(i, 6) <> "" 'MAIS ATTENTION ICI SI IL Y A UNE CELLULE VIDE AVANT D'ARRIVER A LA FIN LA MACRO S'ARRETE QUAND MEME
     
     Select Case .Cells(i, 6).Value
     
       Case 1
         Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(32, 255, 192)
         ActiveCell.Offset(0, -1).Interior.Color = RGB(32, 255, 192)
     
           Case 2
           Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(128, 224, 255)
           ActiveCell.Offset(0, -1).Interior.Color = RGB(128, 224, 255)
     
          Case 3
           Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 255, 160)
           ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 255, 160)
     
          Case 5
           Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 192, 128)
           ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 192, 128)
     
          Case 6
            Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 128, 160)
            ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 128, 160)
    End Select
     
    i = i + 1
    Loop
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    d'accord je comprend mieux avec ta capture d'ecran

    je ne comprenait pas pourquoi e6 et f6 en fait c'est ligne et colonne E et F

    pourrais tu envoyer un fichier en exemple avec quelques lignes remplie je te fait ca en 2 coup de cuillère a pots

    je suppose que la ligne dans la feuille vrac ou conditionnement est déterminée par l'index de l'item choisi dans la combox?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 29
    Par défaut
    merci pour ta réponse patricktoulon,

    le do while, enfaite, la boucle tourne et quand elle rencontre une celulle vide elle s'arrete c'est bien ca ?

    j'ai intégré le code et il me met une erreur :

    j'ai ajouté le "Worksheets("planification vrac")" à " Select Case .Cells(i, 6).Value" : Select Case Worksheets("planification vrac").Cells(i, 6).Value". car il me m était une erreure.

    maintenant, j'ai le code qui tourne mais aucune couleur ? encore une erreur de ma part ?

    cordialement
    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
     
    Sub couleur()
     
    'permet de mettre des couleurs dans la table.
    i = 2
    Do While Worksheets("planification vrac").Cells(i, 6) <> "" 'MAIS ATTENTION ICI SI IL Y A UNE CELLULE VIDE AVANT D'ARRIVER A LA FIN LA MACRO S'ARRETE QUAND MEME
     
     Select Case Worksheets("planification vrac").Cells(i, 6).Value
     
       Case 1
         Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(32, 255, 192)
         ActiveCell.Offset(0, -1).Interior.Color = RGB(32, 255, 192)
     
           Case 2
           Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(128, 224, 255)
           ActiveCell.Offset(0, -1).Interior.Color = RGB(128, 224, 255)
     
          Case 3
           Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 255, 160)
           ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 255, 160)
     
          Case 5
           Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 192, 128)
           ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 192, 128)
     
          Case 6
            Worksheets("planification vrac").Cells(i, 6).Interior.Color = RGB(255, 128, 160)
            ActiveCell.Offset(0, -1).Interior.Color = RGB(255, 128, 160)
    End Select
     
    i = i + 1
    Loop
    End Sub
    Gipn

Discussions similaires

  1. recuperer la couleur d'une cellule VBA
    Par fernier dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/07/2008, 11h46
  2. [VBA E] Couleur cellule
    Par franck.automaticien dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/05/2007, 14h42
  3. Changer de couleur cellule
    Par franck.automaticien dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 16/02/2006, 10h46
  4. Couleur cellule stringgrid sur condition...
    Par kobe dans le forum Composants VCL
    Réponses: 1
    Dernier message: 11/08/2005, 13h49
  5. Pilotage excel (couleur cellule)
    Par TheGoldViking dans le forum C++Builder
    Réponses: 1
    Dernier message: 14/04/2005, 10h59

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