Mise en forme vba sous double condition
Résolu
vince3457
Messages postés
33
Date d'inscription
Statut
Membre
Dernière intervention
-
vince3457 Messages postés 33 Date d'inscription Statut Membre Dernière intervention -
vince3457 Messages postés 33 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je rencontre un problème dans la mise en place d'un outil.
J'ai plusieurs colonnes dont une qui permet de suivre la planification d'actions et l'autre le fait que cette action soit soldée avec respectivement comme valeur possible "non planifiée" ou "Date" et "Non soldée" ou "Date"
Je voudrais que les cellules de la colonne "planification" (chez moi c'est la colonne U) deviennent orange si :
- La cellule (action soldée) de la même ligne (colonne V) est sur "non soldée"
ET
- la date qui apparait dans la colonne U est "inférieure" à la date du jour (donc date dépassée)
Voici le code que j'ai qui me permet effectivement d'avoir mes cellules de ma colonne U en orange si la date présente dans la cellule est inférieure à la date du jour.
Private Sub Worksheet_Activate()
With Worksheets(2)
Dim DateJour As Date
Dim Cellule As Object
Dim CelluleSolde As Object
Dim Ligne As Long
Dim i As Integer
DateJour = Worksheets(2).Cells(1, 21)
For Each Cellule In Worksheets(2).Range("U3:U65536")
If Cellule.Value = "Non planifiée" Or Cellule.Value = "" Then
Else
If Cellule.Value < DateJour Then
Cellule.Interior.ColorIndex = 44
End If
End If
Next
End With
End Sub
Je me dis que la solution serait peut etre de dire : si la valeur de la cellule de la colonne V = "non soldée" alors code du dessus... mais je me perds un peu dans tout ca...
Je sais pas si j'ai été clair, mais si jamais vous comprenez ma question et que vous avez une proposition...merci merci merci d'avance
Je rencontre un problème dans la mise en place d'un outil.
J'ai plusieurs colonnes dont une qui permet de suivre la planification d'actions et l'autre le fait que cette action soit soldée avec respectivement comme valeur possible "non planifiée" ou "Date" et "Non soldée" ou "Date"
Je voudrais que les cellules de la colonne "planification" (chez moi c'est la colonne U) deviennent orange si :
- La cellule (action soldée) de la même ligne (colonne V) est sur "non soldée"
ET
- la date qui apparait dans la colonne U est "inférieure" à la date du jour (donc date dépassée)
Voici le code que j'ai qui me permet effectivement d'avoir mes cellules de ma colonne U en orange si la date présente dans la cellule est inférieure à la date du jour.
Private Sub Worksheet_Activate()
With Worksheets(2)
Dim DateJour As Date
Dim Cellule As Object
Dim CelluleSolde As Object
Dim Ligne As Long
Dim i As Integer
DateJour = Worksheets(2).Cells(1, 21)
For Each Cellule In Worksheets(2).Range("U3:U65536")
If Cellule.Value = "Non planifiée" Or Cellule.Value = "" Then
Else
If Cellule.Value < DateJour Then
Cellule.Interior.ColorIndex = 44
End If
End If
Next
End With
End Sub
Je me dis que la solution serait peut etre de dire : si la valeur de la cellule de la colonne V = "non soldée" alors code du dessus... mais je me perds un peu dans tout ca...
Je sais pas si j'ai été clair, mais si jamais vous comprenez ma question et que vous avez une proposition...merci merci merci d'avance
A voir également:
- Mise en forme vba sous double condition
- Mise en forme conditionnelle excel - Guide
- Double ecran - Guide
- Whatsapp double sim - Guide
- Mise en forme tableau croisé dynamique - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
8 réponses
bonjour
Pourquoi faire simple quand on peut faire compliqué ?
En ce qui me concerne, avec une mise en forme conditionnelle sur la colonne U et cette formule cela fonctionne tout seul :
Si tu tiens vraiment à ta macro, pas besoin de compliquer :
La macro ne se déclenche qu'avec la feuille où elle est présente et donc elle n'a pas besoin d'être explicite.
Toujours zen
Pourquoi faire simple quand on peut faire compliqué ?
En ce qui me concerne, avec une mise en forme conditionnelle sur la colonne U et cette formule cela fonctionne tout seul :
=ET(V1="non soldée";U1<AUJOURDHUI())
Si tu tiens vraiment à ta macro, pas besoin de compliquer :
Private Sub Worksheet_Activate() Dim Cellule As Object For Each Cellule In Range("U3:U65536") If Cellule.Offset(0, 1).Value = "non soldée" _ And Cellule.Value < Date Then Cellule.Interior.ColorIndex = 44 End If Next End Sub
La macro ne se déclenche qu'avec la feuille où elle est présente et donc elle n'a pas besoin d'être explicite.
Toujours zen
Merci beaucoup pour la réponse,
Je l'ai testé mais ça ne fonctionne pas (par contre je n'ai pas de message d'erreur...) :s
une idée ?
Je l'ai testé mais ça ne fonctionne pas (par contre je n'ai pas de message d'erreur...) :s
une idée ?
J'ai fais un test avec que :
- Cellule.Offset(0, 1).Value = "Non soldée"
et un test avec que
- Cellule.Value < Date
Dans le premier cas rien ne se passe, dans le second cas, la mise en forme s'opère... le "bug" doit donc certainement venir de cette partie...
s)
- Cellule.Offset(0, 1).Value = "Non soldée"
et un test avec que
- Cellule.Value < Date
Dans le premier cas rien ne se passe, dans le second cas, la mise en forme s'opère... le "bug" doit donc certainement venir de cette partie...
s)
bonjour
le "bug" c'est surtout que tu ne dois pas avoir "Non soldée" dans ta cellule mais plutôt "Non soldée " ou " Non soldée" c'est-à-dire des espaces non visibles mais bien présents ou "non soldée" sans les majuscules. Avec ceci tu évites les 2 cas :
le "bug" c'est surtout que tu ne dois pas avoir "Non soldée" dans ta cellule mais plutôt "Non soldée " ou " Non soldée" c'est-à-dire des espaces non visibles mais bien présents ou "non soldée" sans les majuscules. Avec ceci tu évites les 2 cas :
If Trim(Lcase(Cellule.Offset(0, 1).Value)) = "non soldée" _
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour
Si tu pouvais nous mettre un exemple de classeur, sans données identifiables et privées (seulement colonnes U et V par exemple), mais avec la structure de tes données sur http://www.cijoint.fr/ puis nous mettre le lien généré ici ce serait plus facile.
Si tu pouvais nous mettre un exemple de classeur, sans données identifiables et privées (seulement colonnes U et V par exemple), mais avec la structure de tes données sur http://www.cijoint.fr/ puis nous mettre le lien généré ici ce serait plus facile.
Ca y'est j'ai mis une "extraction" de mon fichier ici :
http://www.cijoint.fr/cjlink.php?file=cj201105/cij8skthSz.xlsx
mes colonnes U et V sont dans cet extraction mes colonnes G et I
Si c'est écrit "non planifiée" ca apparait en rouge (ca c'est bon).
La case orange est juste un "reste" d'un test où j'ai mis que : Cellule.Value < Date
http://www.cijoint.fr/cjlink.php?file=cj201105/cij8skthSz.xlsx
mes colonnes U et V sont dans cet extraction mes colonnes G et I
Si c'est écrit "non planifiée" ca apparait en rouge (ca c'est bon).
La case orange est juste un "reste" d'un test où j'ai mis que : Cellule.Value < Date
bonjour,
Ton classeur sauvegardé en .xlsx ne sert à rien puisque les macros ne sont pas sauvegardées dans ce format.
La case orange est juste un "reste"
Si tu fonctionnais en mise en forme conditionnelle, tu n'aurais pas de "reste" car cette fonctionnalité est dynamique et donc toujours en phase avec tes choix.
Ton classeur sauvegardé en .xlsx ne sert à rien puisque les macros ne sont pas sauvegardées dans ce format.
La case orange est juste un "reste"
Si tu fonctionnais en mise en forme conditionnelle, tu n'aurais pas de "reste" car cette fonctionnalité est dynamique et donc toujours en phase avec tes choix.
Il y'a des fois je suis plus que plus que débile...
En fait c'est tout simple... la macro fonctionne... j'avais pas fait attention...mais c'est pas la offset(0,1) qu'il me fallait prendre comme référence mais la offset(0,2) car j'ai une colonne masquée entre ma colonne U et celle que je pensais être ma V mais qui est en fait ma W.... ts ts ts...
Désolé et merci pour le coup de main :)
En fait c'est tout simple... la macro fonctionne... j'avais pas fait attention...mais c'est pas la offset(0,1) qu'il me fallait prendre comme référence mais la offset(0,2) car j'ai une colonne masquée entre ma colonne U et celle que je pensais être ma V mais qui est en fait ma W.... ts ts ts...
Désolé et merci pour le coup de main :)