Excel et VB

Fermé
JackF - 9 mars 2005 à 13:15
 Alexis - 7 avril 2005 à 18:06
Bonjour a tous
Par rapport au contenu d'une cellule (0,1,2 ou 3), j'aimerais coloriser toute la ligne correspondante (nature, jaune, rose ou rouge).
Merci aux mecs sympas qui peuvent m'aider.
A voir également:

6 réponses

tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
9 mars 2005 à 13:29
Salut,

Tu peux faire une mise en forme conditionnelle =>Sélectionne tes cellules puis Format/Mise en forme conditionnelle....
Sino par macro, mais je pense que la Mise en forme conditionnelle suffira.....

A+
0
Salut Tompols
Merci de me répondre, effectivement la mise en forme conditionnelle marche bien mais juste pour la cellule concernée par contre je voudrais appliquer le formatage sur la ligne complète.
Merci quand même. :-)
0
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 527
9 mars 2005 à 18:19
Hello Jack,

Essaie ça, à mettre dans le code de ta feuille.
Pour davantage de clarté, donne un nom à ta cellule (dans mon test, je l'ai appelée...Cellule !)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Couleur As Integer
    Dim Plage   As Range

    Set Plage = Range("Cellule")
    Select Case Plage.Value
    Case 1
        Couleur = 6
    Case 2
        Couleur = 38
    Case 3
        Couleur = 3
    Case Else
        Couleur = 0
    End Select

    Plage.EntireRow.Interior.ColorIndex = Couleur

End Sub

Dis-moi si ça colle.
Ajx.
0
Salut Armojax
ça marche pour cette seule cellule mais pour une colonne remplie de 0,1,2 ou 3, comment j'adapte ?
Merci
0
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 527
10 mars 2005 à 17:19
Hello JackF,

Excuse-moi, je n'avais pas compris que tu voulais que ça fonctionne pour toute une plage de cellules dans une colonne.
Donc voici une nouvelle mouture.
Je suppose que toutes les cellules qui sont concernées forment un rectangle compact (une seule colonne ou non).
J'ai nommé cette plage "Cellules".
Voici un nouveau code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Couleur As Integer
    Dim Plage   As Range

    Set Plage = Range("Cellules")
    For Each Cellule In Plage
        Select Case Cellule.Value
        Case 1
            Couleur = 6
        Case 2
            Couleur = 38
        Case 3
            Couleur = 3
        Case Else
            Couleur = 0
        End Select
        Cellule.EntireRow.Interior.ColorIndex = Couleur
    Next

End Sub

Dis-moi si on progresse !
0
Et pour une ligne entière, à la place de "EntireRow", je peux mettre "EntireLine" ??? Je le fais au hasard, mais ça ne semble pas marcher !...
0
Alexis > Alexis
7 avril 2005 à 14:04
On va oublier ma question : précipitation, vagues souvenirs... Row c'est une ligne !!!... En fait, mon souci serait de borner les couleurs à une plage de cellules : exemple, si B3 vaut "D", que B3:AB3 soit en bleu ciel... D'ailleurs, peut-on trouver qq part le codage des couleurs Excel ?
Merci bcp, désolé pour la question précédente ! ;-)
0
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 527 > Alexis
7 avril 2005 à 14:18
Bonjour Alexis,

Je comprends moyennement ta question :

- est-ce que pour toi "D" représente la couleur bleu ciel, et que tu comptes associer une couleur à une lettre ?
- est-ce que c'est toujours (et seulement) en colonne B que la lettre doit être interprétée ? et dans ce cas, c'est toute la plage de B à AB, sur la ligne choisie, qui doit être colorée ?

Armojax.
0
Alexis > Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024
7 avril 2005 à 16:19
C'est vrai, je n'étais pas très clair !

Alors, en fait, je cherche à mettre en éviodence les WE automatiquement dans un planning : donc je veux mettre en surbrillance les samedi et dimanche (je recherche donc "S" et "D" dans la colonne des jours...).
Ensuite, je veux que toute la ligne soit en bleu ciel (j'ai trouvé le code : c'est 20 pour la valeur voulue).
Ca marche sans souci, mais ce serait plus propre si les colonnes en dehors du tabeau n'étaient pas elles aussi en bleu ciel...

Merci...
0
Hi Armojax
Mieux, c'est pas possible :-))
C'est tout a fait ce que je voulais.
Encore merci et bien le bonjour aux Nantais et a sa région (J'ai des cousins a La Chapelle sur Erdre)
0
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 527
10 mars 2005 à 18:22
Content que ça soit tout bon.
Je vais me faire un p'tit restau avec une Chapellaine dans quelques jours. Je la saluerai de ta part !
Ajx.
0
JackF > Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024
10 mars 2005 à 18:43
Tu peux même aller au delà des salutations ............
Bonne chance !
0
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 527 > JackF
10 mars 2005 à 18:49
J'y compte bien !!!!!!
0
jeremie > JackF
11 mars 2005 à 12:38
bonjour je souahiterais faire l'équivalent de la mise n forme condidtionnelle mais avec plus de 3 conditions. si qq peut m'aider, ce serait cool!
@+
0
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 527 > jeremie
11 mars 2005 à 13:04
Salut Jérémie,

En standard dans Excel, c'est 3 conditions maxi.
Si tu en veux davantage, il faut te faire une petite macro. Tu peux t'inspirer de mon premier jet ci-dessus, en supprimant EntireRow. En plus de la couleur, tu peux changer ce que tu veux : couleur, bordures, etc.

Ajx.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 527
7 avril 2005 à 14:42
Bonjour Jérémie,

Exemple ci-dessous : comptage du nombre de cellules rouges dans la plage "A1:H20".
Sub RedCells()

  Dim Ctr     As Long
  Dim Plage   As Range
  Dim Cellule As Range
  
  Set Plage = Range("A1:H20")
  
  Ctr = 0
  For Each Cellule In Plage
    If Cellule.Interior.ColorIndex = 3 Then
      Ctr = Ctr + 1
    End If
  Next
  
  MsgBox "Il y a " & Ctr & " cellules rouges"
  
End Sub
Armojax.
0
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 527
7 avril 2005 à 17:49
Re Alexis,

Voici 2 solutions, selon le cas :

1) Soit la macro se trouve dans le code de ta feuille, et réagit quand tu saisis "S" ou "D" dans la colonne B. Ça va convenir si tu saisis ton calendrier au fur et à mesure. Par contre, si tout est déjà saisi, il faudrait que tu réinterviennes sur chaque cellule pour déclencher la macro.

2)Soit un balayage des lignes colorie tout en une seule fois.

Tout dépend de ton contexte.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  Dim Lig As Integer
  If ActiveCell.Column <> 2 Then Exit Sub
  If ActiveCell.Value = "S" _
  Or ActiveCell.Value = "D" Then
    Lig = ActiveCell.Row
    Range(Cells(Lig, 2), Cells(Lig, 28)).Interior.ColorIndex = 20
  End If
  
End Sub

Sub WeekEnds()

  Dim Lig As Integer
  
  For Lig = 1 To 36 ' adapter la fourchette !!!
    If Cells(Lig, 2).Value = "S" _
    Or Cells(Lig, 2).Value = "D" Then
      Range(Cells(Lig, 2), Cells(Lig, 28)).Interior.ColorIndex = 20
    End If
  Next
  
End Sub


Vois ce qui te convient.
Ajx.
0
Merci énormément...

Pour être complet, afin de faire à 100 % ce que je souhaitais, j'ai fait 2 ou 3 modifs :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  Dim Lig As Integer
  
  For Lig = 3 To 33 ' adapter la fourchette !!!
    If Cells(Lig, 2).Value = "S" _
    Or Cells(Lig, 2).Value = "D" Then
      Range(Cells(Lig, 2), Cells(Lig, 30)).Interior.ColorIndex = 20
    End If
    If Cells(Lig, 2).Value = "L" _
    Or Cells(Lig, 2).Value = "Ma" _
    Or Cells(Lig, 2).Value = "Me" _
    Or Cells(Lig, 2).Value = "J" _
    Or Cells(Lig, 2).Value = "V" _
    Or Cells(Lig, 2).Value = "..." _
    Or Cells(Lig, 2).Value = "" Then
      Range(Cells(Lig, 2), Cells(Lig, 30)).Interior.ColorIndex = 0
    End If
  Next
  
End Sub


... et ça marche !!!
Merci énormément...


Pour être complet, afin de faire à 100 % ce que je souhaitais, j'ai fait 2 ou 3 modifs :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Lig As Integer

For Lig = 3 To 33 ' adapter la fourchette !!!
If Cells(Lig, 2).Value = "S" _
Or Cells(Lig, 2).Value = "D" Then
Range(Cells(Lig, 2), Cells(Lig, 30)).Interior.ColorIndex = 20
End If
If Cells(Lig, 2).Value = "L" _
Or Cells(Lig, 2).Value = "Ma" _
Or Cells(Lig, 2).Value = "Me" _
Or Cells(Lig, 2).Value = "J" _
Or Cells(Lig, 2).Value = "V" _
Or Cells(Lig, 2).Value = "..." _
Or Cells(Lig, 2).Value = "" Then
Range(Cells(Lig, 2), Cells(Lig, 30)).Interior.ColorIndex = 0
End If
Next

End Sub

... et ça marche !!!
0