Mise en forme excel macro

Résolu/Fermé
mister-t - 2 mars 2009 à 15:52
 mister-t - 6 mars 2009 à 07:54
Bonjour

je voudrais mettre en forme une base

de couleur rouge quand les cellules sont < a la textbox debutmois
de couleur jaune quand les cellules sont > a la textbox debutmois
de couleur verte quand les cellules sont > ) la textbox debutmoissuiv


j'ai fais une macro mais le dernier elseif pour mettre en vert ne marche pas et je n'ai pas
de déboggage

un petit coup de main merci d'avance



prog
For i = 2 To 4000

If wbk2.Sheets("Feuil1").Cells(i, 28).Value < CDate(debutmois) Then
With wbk2.Sheets("Feuil1").Rows(i).Interior
.ColorIndex = 3
.Pattern = xlSolid
End With




ElseIf wbk2.Sheets("Feuil1").Cells(i, 28).Value >= CDate(debutmois) Then
With wbk2.Sheets("Feuil1").Rows(i).Interior
.ColorIndex = 44
.Pattern = xlSolid
End With


ElseIf wbk2.Sheets("Feuil1").Cells(i, 28).Value >= CDate(debutmoissuiv) Then
With wbk2.Sheets("Feuil1").Rows(i).Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
End If
Next i
A voir également:

6 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
2 mars 2009 à 16:50
Bonjour

il faut que ta 2°condition soit >=debutmois ET inférieure à debutmois suivant
0
prog
For i = 2 To 4000

If wbk2.Sheets("Feuil1").Cells(i, 28).Value < CDate(debutmois) Then
With wbk2.Sheets("Feuil1").Rows(i).Interior
.ColorIndex = 3
.Pattern = xlSolid
End With




ElseIf (wbk2.Sheets("Feuil1").Cells(i, 28).Value >= CDate(debutmois) ) and (wbk2.Sheets("Feuil1").Cells(i, 28).Value <CDate(debutmoissuiv) )Then

With wbk2.Sheets("Feuil1").Rows(i).Interior
.ColorIndex = 44
.Pattern = xlSolid
End With


ElseIf wbk2.Sheets("Feuil1").Cells(i, 28).Value >= CDate(debutmoissuiv) Then
With wbk2.Sheets("Feuil1").Rows(i).Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
End If
Next i

ceci marche tres bien merci mais sur le pc de la maison
au travail cç ne marche pas
pourtant c'est aussi excel 2003
y a t il des modules complementaire cocher ?
0
mister-t > mister-t
3 mars 2009 à 09:19
bonjour,

je viens de tester la macro au travail et le premier if et dernier if marche, il me met bien la couleur rouge pour le premier et verte pour le dernier.
Mais le deuxième if avec le and ne met pas de couleur, il laisse les lignes blanches
j'ai essayé un autre type de couleur mais toujours pareil

un petit coup de main svp ?


merci d'avance
0
mikebzh Messages postés 127 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
3 mars 2009 à 13:40
Coucou,
J'ai codé ça vite fait, si ça t'intéresse.
A toi de le mettre à ta sauce.
Private Sub coloriage_Click()
Dim datecell As Date
For i = 1 To 10
datecell = Cells(i, 1).Value

With Rows(i).Interior
    Select Case datecell
        Case Is < CDate(debutmois.Text)
                 'attention ici, si la ligne est vide donc date nulle
                 'elle sera coloriée
                 'à gérer avant le select case
                 'sauf si tu es sur que toutes tes lignes sont renseignées 
             .ColorIndex = 3
        Case CDate(debutmois.Text) To CDate(debutmoissuivant.Text)
            .ColorIndex = 44
        Case Is > CDate(debutmoissuivant.Text)
            .ColorIndex = 4
        Case Else
            'la valeur traitée n est pas une date
            'ici on peut mettre un message erreur par exemple ou
            'simplement passer la ligne en ne faisant rien
    End Select
End With
Next i
End Sub


A plus.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
3 mars 2009 à 13:59
bonjour,

un peu tardivement proche de la solution de mikebzh : maquette sans userform - les 2 textbox sonr remplacés par des range
http://www.cijoint.fr/cjlink.php?file=cj200903/cijbt5z6yZ.xls

A noter qu'il n'y a que 2 test à faire <débutmois et >=debutmoissuiv... si ces 2 conditions ne sont pas remplies on a forcément la couleur 44
mais les 2 , on a utilisé "select case" plutôt que les Elself vachement lourds..
0
mikebzh Messages postés 127 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
3 mars 2009 à 15:41
Salut michel_m

D'accord avec toi que le case est beaucoup moins lourd que les "elseif", dont j'ai une sainte horreur soit dit en passant :)
En plus si il y a besoin, cela permet de traiter tous les cas supplémentaires nécessaires en rajoutant des "case".
Moi, j'avais laissé les trois "case" de test pour être sûr de ne traiter que les dates et le else au cas où certaines lignes intermédiaires non concernées ou erronées (date non cohérentes par exemple) devaient être gérées. Mais bon à mister_t de voir.

Salut
0

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

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
3 mars 2009 à 16:22
Re,
..."au cas où certaines lignes intermédiaires non concernées ou erronées (date non cohérentes par exemple) devaient être gérées. Mais bon à mister_t de voir"....

tout à fait d'accord avec toi!

Bonne fin de journée
0
bonjour,

merci a vous deux pour ces réponses et ces macros.

Je suis certain que vos progs marchent bien mais en faite j'ai vraiment envie de comprendre pourquoi il n'y a pas de couleur qui se remplie pour le if ou il y a le and

deja pour ma culture générale en macro et puis j'aime pas laisser un travail qui n'est pas fini

si vous avez une solution a me proposer

en dernier recourt je prendrai evidement vos progs et l'adapterai au mien

merci pour des reponse futurs
0
mikebzh Messages postés 127 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 11 mars 2009 28
4 mars 2009 à 00:33
Re,
J'adore ta philosophie, exactement celle recherchée dans ce genre de forum, alors j'ai pris ton code tel quel et il fonctionne comme tu le souhaites avec juste une petite modif
Quand tu veux récupérer la valeur de ta textbox n'oublie pas de rajouter .text car je penses que le compilateur est perdu
CDate(debutmois) sera préférable avec CDate(debutmois.text)
Sinon le manque de parenthèse dans ta double condition est peut-être préjudiciable ? (à voir)
du style ((toto=?) and (titi= ??))
Fais moi signe
0
bonjour,

excusez du peu pour ce retard, les heures sup ça fait mal a la tete,

je viens de reprendre la macro en regardant tes conseils et j'ai bien mis les parenthèses dans la deuxième condition. Le fait de mettre des .text derrière les variables me faisait planter la macro.

Et puis je me suis aperçu que j'avais oublié de changer le nom de la variable dans la deuxième condition apres le and et donc c'est pourquoi la couleur jaune ne se mettait pas.

La je passe pour un gros NOOOOOOOOB !!!!! mais bon ça peut s'ameliorer avec le temps

merci pour ces conseils precieux

a une prochaine question

merci encore

problème resolu
0