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   -
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

A voir également:

8 réponses

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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 :

=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
0
vince3457 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
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 ?
0
vince3457 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
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)
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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 :
If Trim(Lcase(Cellule.Offset(0, 1).Value)) = "non soldée" _
0

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

Posez votre question
vince3457 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
Rien ne se passe :(
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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.
0
vince3457 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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.
0
vince3457 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
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 :)
0