Colorer les cases d'un tableau

Bonjour les amis, je débute sur VBA donc je suis bloquée sur un truc

en fait je veux colorer les cellules d'une colonne celon 3 conditions, le problème c'est que je souhaite pas colorer les cellules dans la feuille excel mais plutot les cellule dans le tableau quand m'affiche dans l'interface

Voila le code que j'ai réalisé

Dim i As Integer
Dim a As Integer
a = 6
Sheets("Liste des pièces").Select
Do While Range("A" & a) <> ""
If Range("J" & a).Value < Range("K" & a).Value Then
Range("AH" & a).Value = "CRITIQUE"
Range("AH" & a).Interior.ColorIndex = 46
 ElseIf Range("J" & a).Value > Range("AG" & a).Value Then

Range("AH" & a).Value = "COMFORTABLE"
Range("AH" & a).Interior.ColorIndex = 4
ElseIf Range("K" & a).Value < Range("J" & a).Value < Range("AG" & a).Value Then
Range("AH" & a).Value = "URGENT"
Range("AH" & a).Interior.ColorIndex = 3
End If

a = a + 1
Loop
capture1 capture3

Merci d'avance pour votre aide

Bonjour Mimi123,

Pourquoi ne pas utiliser simplement une MFC ?

8classeur1.xlsx (63.25 Ko)

Cordialement,

Bonjour, je souhaite pas ouvrir les feuilles excel, donc l'utilisateur aura juste devant lui l'interface là ou ya le tableau

Re,

Et l'interface, c'est quoi ? un userform avec une listbox ?

Un fichier joint faciliterait la compréhension et te permettrait d'obtenir une réponse adéquate,

Cordialement,

Re-Bonsoir

Voilà je veux que les cases dans le tableau dans l'interface aient la même couleurs que celle dans la feuille

5mimitest.xlsm (17.20 Ko)

Bonjour Mimi123, le forum,

Un essai avec une ListView, le code n'est pas optimisé, je manque de maitrise,

5mimitest-1.xlsm (25.91 Ko)

Petite remarque:

Je ne suis pas parvenu à faire afficher "URGENT", tu n'aurais pas un problème de mise en forme ?

Ne serait-ce pas :

  • Si A>B et A>C : confortable
  • Si A>B et A<C: critique
  • Si A<B : urgent
Petite faute à "COMFORTABLE" -----> "CONFORTABLE"
7mimitest-3.xlsm (24.42 Ko)

Cordialement,

Merciiii beaucoup pour ton aide et pour la rectification, jai pas fait attention de toute façon c'était juste du brouillon.

Merci une autre fois pour ton aide tu m'as sauvé

Re-Bonsoir, unr petite question, je veux selectionner la colonne A C et H et J et K au lieu des colonneA:D

tblBD=Range("A6:A65000,C6:C65000,H6:H65000,J6:J65000".End(xlUp).Row).Value

Mais on m'a lancé une erreur

Voila les modifications que jai effectué

 Private Sub UserForm_Initialize()

Dim i As Integer
Dim a As Integer
a = 2
Sheets("Feuille1").Select
Do While Range("C" & a) <> ""

If Range("J" & a).Value < Range("K" & a).Value Then
Range("AH" & a).Value = "CRITIQUE"

 ElseIf Range("J" & a).Value > Range("AG" & a).Value Then

Range("AH" & a).Value = "COMFORTABLE"

ElseIf Range("K" & a).Value < Range("J" & a).Value < Range("AG" & a).Value Then
Range("AH" & a).Value = "URGENT"

End If

a = a + 1
Loop

  With Me.ListView1
    With .ColumnHeaders
      .Clear
      .Add , , "Désignation", 112
      .Add , , "Référence", 112
      .Add , , "Quantité", 112
      .Add , , "Stock minimum", 112
      .Add , , "Point de Cmd", 112
      .Add , , "Etat du stock", 112
    End With
   .Gridlines = True
   .View = lvwReport
   tblBD = Range("A6:A65000,C6:C65000,J6:K65000,AF6:AG65000".End(xlUp).Row).Value
   ligne = 0
   For i = 1 To UBound(tblBD)
     ligne = ligne + 1
    .ListItems.Add , , tblBD(i, 1)
    .ListItems(ligne).ListSubItems.Add , , tblBD(i, 2)
    .ListItems(ligne).ListSubItems.Add , , tblBD(i, 3)
    .ListItems(ligne).ListSubItems.Add , , tblBD(i, 4)
    .ListItems(ligne).ListSubItems.Add , , tblBD(i, 5)
     .ListItems(ligne).ListSubItems.Add , , tblBD(i, 6)
  Next
 End With

  For x = 1 To ListView1.ListItems.Count
     If ListView1.ListItems(x).ListSubItems(3).Text = "CONFORTABLE" Then
        ListView1.ListItems(x).ListSubItems(3).ForeColor = RGB(0, 160, 0) 'vert
     End If

     If ListView1.ListItems(x).ListSubItems(3).Text = "CRITIQUE" Then
        ListView1.ListItems(x).ListSubItems(3).ForeColor = RGB(224, 96, 0) 'orange
     End If

     If ListView1.ListItems(x).ListSubItems(3).Text = "URGENT" Then
        ListView1.ListItems(x).ListSubItems(3).ForeColor = RGB(255, 0, 0) 'rouge
     End If

     If ListView1.ListItems(x).ListSubItems(3).Text = "" Then
        ListView1.ListItems(x).ListSubItems(3).ForeColor = xlNone
     End If
  Next x

End Sub   

Bonjour Mimi123,

Peux-tu joindre ton fichier ?

Ta plage est erronée... tblBD = Range("A6:A65000,C6:C65000,J6:K65000,AF6:AG65000".End(xlUp).Row).Value

tblBD = Range("A6:K" & [A65000].End(xlUp).Row).Value

Ensuite il faut choisir les colonnes que tu veux afficher....

tblBD(i, 1) pour colonne A; tblBD(i, 3) pour colonne C; tblBD(i, 8) pour colonne H, etc....

Cordialement,

Salut, ci-joint le fichier, je rencontre un problème au niveau des entêtes de la ListeView

Merci d'avance pour ton aide

3mimitest4.xlsm (18.08 Ko)

Bonjour Mimi123,

Ceci semble fonctionner:

Private Sub UserForm_Initialize()

Dim i As Integer
Dim a As Integer
a = 2
Sheets("Feuil1").Select
Do While Range("C" & a) <> ""

If Range("J" & a).Value < Range("K" & a).Value Then
Range("AH" & a).Value = "CRITIQUE"

 ElseIf Range("J" & a).Value > Range("AG" & a).Value Then

Range("AH" & a).Value = "CONFORTABLE"

ElseIf Range("K" & a).Value < Range("J" & a).Value < Range("AG" & a).Value Then
Range("AH" & a).Value = "URGENT"

End If

a = a + 1
Loop

  With Me.ListView1
    With .ColumnHeaders
      .Clear
      .Add , , "Désignation", 112
      .Add , , "Référence", 112
      .Add , , "Quantité", 112
      .Add , , "Stock minimum", 112
      .Add , , "Point de Cmd", 112
      .Add , , "Etat du stock", 112
    End With
   .Gridlines = True
   .View = lvwReport
   tblBD = Range("A2:AH" & [A65000].End(xlUp).Row).Value
   ligne = 0
   For i = 1 To UBound(tblBD)
     ligne = ligne + 1
    .ListItems.Add , , tblBD(i, 1)  'désignation
    .ListItems(ligne).ListSubItems.Add , , tblBD(i, 3)    'Référence
    .ListItems(ligne).ListSubItems.Add , , tblBD(i, 10)   'Quantité
    .ListItems(ligne).ListSubItems.Add , , tblBD(i, 11)   'Stock mini
    .ListItems(ligne).ListSubItems.Add , , tblBD(i, 33)   'Point de commande
    .ListItems(ligne).ListSubItems.Add , , tblBD(i, 34)   'Etat du stock
  Next
 End With

  For x = 1 To ListView1.ListItems.Count
     If ListView1.ListItems(x).ListSubItems(5).Text = "CONFORTABLE" Then
        ListView1.ListItems(x).ListSubItems(5).ForeColor = RGB(0, 160, 0) 'vert
     End If

     If ListView1.ListItems(x).ListSubItems(5).Text = "CRITIQUE" Then
        ListView1.ListItems(x).ListSubItems(5).ForeColor = RGB(224, 96, 0) 'orange
     End If

     If ListView1.ListItems(x).ListSubItems(5).Text = "URGENT" Then
        ListView1.ListItems(x).ListSubItems(5).ForeColor = RGB(255, 0, 0) 'rouge
     End If

     If ListView1.ListItems(x).ListSubItems(5).Text = "" Then
        ListView1.ListItems(x).ListSubItems(5).ForeColor = xlNone
     End If
  Next x

End Sub
12mimitest4.xlsm (26.29 Ko)

Cordialement,

Bonsoir, jai toujours le problème au niveau des co

ColumnHeaders et la déclaration de la liste view

With Me.ListView1
With .ColumnHeaders

Re,

As-tu tester le fichier que je t'ai joint ?

As-tu le même souci avec ? De mon côté il fonctionne correctement et affiche les colonnes souhaitées,

Cordialement,

Bonsoir, ça se compile mais on me donne vers la fin cette erreur

erreur

Re,

tu obtiens cette erreur avec mon fichier où en adaptant mon code à ton fichier ?

Moi j'obtiens bien:

Spoiler
capture

Pour info:

Spoiler
capture1
Spoiler


capture2

Bonne soirée.

Re-Bonjour, j'obtiens l'erreur en adaptant ton code sur le mien

Meme si j'ai rien changé, je sais pas la source du bloquage

Voila l'erreur, y a apparemment un fichier manquant

capture

Bonjour Mimi123,

Désolé, je crains de ne pouvoir t'aider.....je passe la main....

J'espère que tu trouveras réponse sur le forum,

Cordialement,

Rechercher des sujets similaires à "colorer cases tableau"