!!! Repérage de date dans une liste !!!

F

fabrice

Guest
Rebonjour tout le monde

Voila mon nouveau probleme.

J'ai un tableau avec en colonne a des dates.
Je cherche à mettre en couleur des lignes (en fait de la cellule a à la f) si la celulle a (la date) correspondante est comprise entre des dates définies sur une autres feuille.

J'ai essayé avec des "for each"; des "do until" mais sans succes.

Pourriez vous m'aider,
merci de votre aide,
FAb

PS: si vous n'avez rien compris, je peux essayer de reformuler mon PB
 
@

@Christophe@

Guest
Bonjour Fabrice

Bon, voila la solution à ton problème

Bonne chance

@Christophe@
 

Pièces jointes

  • DateCouleur.zip
    10.5 KB · Affichages: 34
  • DateCouleur.zip
    10.5 KB · Affichages: 30
  • DateCouleur.zip
    10.5 KB · Affichages: 34
@

@Christophe@

Guest
Re

Ben oui, Zip obligatoire, lol

Nous nous sommes croisé à 3 min près, le post était ouvert, le temps d'écrire ma réponse et de zippé mon fichier. Et voila André plus rapide quoi moi, rire

Bonne journée à tous

@Christophe@
 
F

fabrice

Guest
Bonjour tout le monde,

J'ai essayé d'améliorer le code mais sans résultat.
Je voudrai en fait que la plage ne soit pas figée, mais quelle puisse évoluer en fonction des insertions. Pour cela, je voudrai trouver automatiquement la dernière ligne de la colonne A.

Pour cela, j'ai rajouter et bidouiller le code de la manière suivante:
Option Explicit
Dim Cell As Range
Dim WSBase As Worksheet
Dim WSDate As Worksheet
Dim Plage As Range


Sub AjouteCouleur()
Set WSBase = Worksheets("liste") ' Modifie le nom de ta feulle !!!
Set WSDate = Worksheets("Feuil1") ' Modifie le nom de ta feulle !!!
Set Plage = WSBase.Range("A" & fab & ": W" & fab).Select ' Modifie la plage de ton tableau

fab = Range("A65535").End(xlUp).Row


For Each Cell In Plage
Select Case Cell
Case WSDate.Range("L2") To WSDate.Range("M2")
Range(Cell, Cell.Offset(0, 5)).Interior.ColorIndex = 3
End Select
Next Cell
End Sub

Mais le probleme c'est que ca ne fonctionne pas. J'ai l'impression qu'il ne defini pas "fab" donc, ne peux pas trouver la fin de la table!!!

Est ce que vours pourriez me redonner un coup de pate pour résoudre ce probleme???

Merci de votre réponse,
FAb
 
@

@Christophe@

Guest
Bonsoir Fab,

Remplace ta macro comme suite:

Option Explicit
Dim Cell As Range
Dim WSBase As Worksheet
Dim WSDate As Worksheet
Dim Plage As Range
Dim DernL As Byte ' Maximum 255 ou remplacer par integer !!!

Sub AjouteCouleur()
DernL = Range("A65535").End(xlUp).Row

Set WSBase = Worksheets("DateCouleur") ' Modifie le nom de ta feulle !!!
Set WSDate = Worksheets("Date") ' Modifie le nom de ta feulle !!!
Set Plage = WSBase.Range("A1:A" & DernL) ' Modifie la plage de ton tableau

For Each Cell In Plage
Select Case Cell
Case WSDate.Range("A1") To WSDate.Range("B1")
Range(Cell, Cell.Offset(0, 5)).Interior.ColorIndex = 3
Case WSDate.Range("A2") To WSDate.Range("B2")
Range(Cell, Cell.Offset(0, 5)).Interior.ColorIndex = 4
Case WSDate.Range("A3") To WSDate.Range("B3")
Range(Cell, Cell.Offset(0, 5)).Interior.ColorIndex = 5
Case WSDate.Range("A4") To WSDate.Range("B4")
Range(Cell, Cell.Offset(0, 5)).Interior.ColorIndex = 6
End Select
Next Cell
End Sub

Bonne soirée

@Christophe@
 
F

fabrice

Guest
Re: !!! Repérage de date dans une liste (Suite)!!!

Bonjour, c'est encore moi ;=)

Voila, je suis entrain d'essayer de paramétrer Interior.ColorIndex.

Pour cela, j'ai réaliser un Userform avec 2 bouttons.
Ce que je cherche à faire:
Si commandbutton1_click alors Interior.ColorIndex = 20
Si commandbutton2_click alors Interior.ColorIndex = 22

Pour cela, j'ai tapé le code suivant:

Option Explicit
Dim Cell As Range
Dim WSBase As Worksheet
Dim WSDate As Worksheet
Dim Plage As Range
Dim Dernl As Integer
Sub AjouteCouleur()
Dernl = Range("A65535").End(xlUp).Row

Set WSBase = Worksheets("Feuil1") ' Modifie le nom de ta feulle !!!
Set WSDate = Worksheets("Liste") ' Modifie le nom de ta feulle !!!
Set Plage = WSBase.Range("A1:A" & Dernl) ' Modifie la plage de ton tableau



For Each Cell In Plage
Select Case Cell
Case WSDate.Range("M2") To WSDate.Range("N2")
Range(Cell, Cell.Offset(0, 27)).Interior.ColorIndex = Selection
End Select
Next Cell
End Sub


Private Sub CommandButton2_Click()
Selection = 22
End Sub
Private Sub CommandButton1_Click()
Selection = 20
End Sub

Le probleme est qu'il me rentre 20 ou 22 dans la cellule et non la couleur correspondante au code.

Où ai-je fais une erreur???

Merci de votre aide,
FAb
 
@

@Christophe@

Guest
Bonsoir,

Voila comment tu procède:

1. Dans un Module tu mets le code suivant:

Option Explicit
Dim Cell, Plage As Range
Dim WSBase, WSDate As Worksheet
Dim Dernl As Integer

Sub AjouteCouleur(Index As Byte)
Dernl = Range("A65535").End(xlUp).Row

Set WSBase = Worksheets("Feuil1")
Set WSDate = Worksheets("Liste")
Set Plage = WSBase.Range("A1:A" & Dernl)

For Each Cell In Plage
Select Case Cell
Case WSDate.Range("M2") To WSDate.Range("N2")
Range(Cell, Cell.Offset(0, 27)).Interior.ColorIndex = Index
End Select
Next Cell
End Sub

Ensuite:

2. Tu ajoutes 2 commandbutton sur ta feuille, dans le code VBA de ton commantButton1 tu mets:

Private Sub CommandButton1_Click()
AjouteCouleur 20
End Sub


3. Dans le code de ton commandbutton2 tu mets:

Private Sub CommandButton1_Click()
AjouteCouleur 22
End Sub


Voila,

Bonne soirée

@Christophe@
 
F

fabrice

Guest
Salut Christophe

Merci de ta réponse mais ca ne marche pas.
Est ce que ca vient du fait que mes commandbuttons sont dans un Userform???

Si t'as une solution, je suis preneur. En attendant, je continu a chercher.
C'est dommage d'etre si pres du but :=(

Merci, de ton aide,
FAb
 

Discussions similaires

Statistiques des forums

Discussions
312 348
Messages
2 087 510
Membres
103 570
dernier inscrit
patrickb83p