|
|
|
|
Configuration: Windows XP Internet Explorer 6.0
salut ,
voila un exemple qui te permet de coloriser une cellule en fonction du contenu. Sub ColorJour() Dim cell As Range For Each cell In Range("C:C") Select Case cell.Value Case Is = "Lundi" cell.Interior.ColorIndex = 0 Case Is = "Mardi" cell.Interior.ColorIndex = 3 Case Is = "Mercredi" cell.Interior.ColorIndex = 4 Case Is = "Jeudi" cell.Interior.ColorIndex = 5 Case Is = "Vendredi" cell.Interior.ColorIndex = 6 Case Is = "Samedi" cell.Interior.ColorIndex = 7 Case Is = "Dimanche" cell.Interior.ColorIndex = 8 End Select Next End Sub tu n'a plus qu'a readapter ton compte pour faire le contraire. Je te cnseil d'utiliser plutot des if dans ton cas. if( cell.Interior.ColorIndex = 8 ) je compte ****** |
Bonsoir,
voici une fonction à coller dans un module : Function nbFondCouleur(plage As Range, modele As Range)
Dim cel As Range, tot As Long
Application.Volatile
For Each cel In plage
tot = tot + (cel.Interior.ColorIndex = modele.Interior.ColorIndex)
Next cel
nbFondCouleur = -tot
End Function
Ensuite utiliser la fonction personnalisée en désignant la plage où compter les cellules colorées, et une cellule modèle de la couleur à tester. =nbFondCouleur(A1:A8;A1) compte les cellules de la plage A1:A8 dont le fond est de la couleur de la cellule A1. Par contre un petit soucis, malgré le 'application.volatile' la fonction ne se réévalue pas si le nombre de cellules colorées change, même en forçant un recalcul avec F9... Il faut aller dans la cellule et revalider la fonction. Peut-être qu'un lecteur aura une solution à ça. eric |
Bonsoir.
sachant qu'une cellule = 0.25 Si tu recherches une valeur supérieure à regarde avec ce code. Sub SupA() Dim i As Integer i = 0 Range("a1:a50").Select 'selectionne la plage à vérifier For Each Cel In Selection If Cel.Value > Cells(1, 6).Value Then 'si valeur sup à F1 i = i + 1 Cells(2, 6).Value = i 'nb de cellules sup à F1 en F2 End If Next End Sub Ou celui-ci: Sub SupVal() Dim i As Integer i = 0 Range("a1:a50").Select 'selectionne la plage à vérifier For Each Cel In Selection If Cel.Value > 0.25 Then 'si valeur sup à 0.25 i = i + 1 Cells(1, 2).Value = i 'nb de cellules sup à 0.25 en A2 End If Next End Sub Cordialement. Ce qui se conçoit bien s'énonce clairement, alors, n'hésitez pas sur les détails... |
Pour quelqu'un qui débute, tu as de quoi t'amuser, avec les 3 macros qui te sont proposées !
Pourquoi ne pas utiliser le format "Mise en forme conditionnelle",comme je le propose dans l'astuce Créer rapidement un planning de congés simple ? Tu remplaces la lettre c de mon exemple par le chiffre 1, et à la fin de ta ligne tu fais la somme que tu divises par 4 pour obtenir la durée en heures (chaque case représentant un quart d'heure). C'est bien, la retraite ! Surtout aux Antilles ... :-) Raymond |
Bonjour canard, chtilou et raymond,
Pour moi il ne veut pas colorer des cellules mais compter les cellules colorées. C'est moi qui ne comprend rien à ce qu'il veut ou quoi ? :-s Bon we à tous eric
|
J'ai supposé que chaque case représente le quart d'une journée de travail (pour gérer les demi-journées de travail, le travail à temps partiel, les retards ou absences) et que 4 cases coloriées représentent une journée de travail complète.
C'est bien, la retraite ! Surtout aux Antilles ... :-)
Raymond |