Mise en forme excel macro
Résolu/Fermé
A voir également:
- Mise en forme excel macro
- Mise en forme conditionnelle excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Mise en forme tableau word - Guide
- Liste déroulante excel - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
6 réponses
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
2 mars 2009 à 16:50
2 mars 2009 à 16:50
Bonjour
il faut que ta 2°condition soit >=debutmois ET inférieure à debutmois suivant
il faut que ta 2°condition soit >=debutmois ET inférieure à debutmois suivant
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
3 mars 2009 à 13:40
Coucou,
J'ai codé ça vite fait, si ça t'intéresse.
A toi de le mettre à ta sauce.
A plus.
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.
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
3 mars 2009 à 13:59
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..
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..
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16602
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
3 mars 2009 à 16:22
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
..."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
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
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
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
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
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
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
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
2 mars 2009 à 18:48
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 ?
3 mars 2009 à 09:19
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