[VBA] Comparer des dates

jeanBaptiste

XLDnaute Junior
Bonjour le forum,

J'ai une colonne ("D") avec des dates d’exécutions et je cherche à grisé les dates, plus les cellules (en "A, B,C,D,E") de la même ligne, qui sont supérieur à la première date ("D3") + 6 jours.

J'ai donc essayé de faire une mise en forme conditionnelle mais étrangement ça ne marche pas pour toute
Code:
=D3 > $D$3 + 6

Tableau.png

Mais en lançant mais autre macro pour un autre teste je me suis rendu compte que lorsque j'importais mon tableau la mise en forme disparaissait du coup j'ai voulu le faire dans une macro :

VB:
For i = 3 To DerLigne
    DATEC = Range("D" & i).Value
    DATED = [D3]
    If DATEC > DATED + 6 Then
        'Range("A"":E" & i).Interior.ColorIndex = 6
        Range("D" & i).Interior.ColorIndex = 6
    End If
Next i

J'ai fait quelque chose d'assez brut mais c'est ce qui est sorti après un temps de refléxion (sachant que je débute en VBA)
J'ai aussi essayer avec
Code:
DateAdd ("d", 6, "D3")
.

Voila ce que je cherche à faire :
tableau final.PNG

J'espère avoir été claire

Cordialement jeanBaptiste
 

Pièces jointes

  • Tableau.png
    Tableau.png
    32.5 KB · Affichages: 71
Dernière modification par un modérateur:

Papou-net

XLDnaute Barbatruc
Re : [VBA] Comparer des dates

Bonjour jeanBaptiste,

Un fichier joint est toujours préférable à des images, toutefois on va essayer de t'aider.

Essaie en modifiant ton code comme ceci:

Code:
For i = 3 To DerLigne
    If CDate(Range("D" & i).Value) > CDate([D3] + 6 Then Range("A" & i & ":E" & i).Interior.ColorIndex = 6
     End If
Next i
Cordialement.
 
Dernière édition:

jeanBaptiste

XLDnaute Junior
Re : [VBA] Comparer des dates

Bonjour Papou-net

Je viens d'essayé mais ça n'a pas marché il n'y aucun résultat. D'ailleurs tu avais oublié de fermer la parenthèse après ([D3] + 6 et le End If était en trop

Je te joints mon fichier juste ne pas cliquer sur les boutons "Comparer" et "Exporter" pour l'instant tout mettre sur le bouton 3
Pour mes variable DATEC et DATED je les avais initialiser dans le module "Comparerdonnee".

Cordialement

jeanBaptiste
 

Pièces jointes

  • Traitement de données Final.xlsm
    50.7 KB · Affichages: 57

Papou-net

XLDnaute Barbatruc
Re : [VBA] Comparer des dates

RE:

Exact pour les erreurs que tu signales: j'ai agi trop vite.

Ce qui démontre qu'avec un fichier exemple, on est beaucoup plus efficace.

Je te propose donc de reprendre ton code comme ceci:

Code:
Sub testage()
For Each cel In Feuil1.Range("E3:E" & Rows.Count).SpecialCells(xlCellTypeConstants)
    If cel > cel.Offset(0, -1) + 6 Then
      Range("A" & cel.Row & ":E" & cel.Row).Interior.ColorIndex = 6
      Else
      Range("A" & cel.Row & ":E" & cel.Row).Interior.ColorIndex = xlAutomatic
    End If
Next
End Sub
Tu remarqueras que j'ai modifié le type de boucle, mais elle s'adresse également à l'ensemble des cellules remplies depuis E3 jusqu'en fin de colonne.
Cordialement.
 

jeanBaptiste

XLDnaute Junior
Re : [VBA] Comparer des dates

RE :

J'ai une erreur "incompatibillité de type" à la ligne :

Code:
If cel > cel.Offset(0, -1) + 6 Then

Mais je ne vois pas de quoi ça peut venir

EDIT : étrangement sans rien faire l'erreur à disparu mais la condition n'est jamais vrai il laisse comme t'elle il ne passe que par le Else en pas à pas
 
Dernière modification par un modérateur:

Papou-net

XLDnaute Barbatruc
Re : [VBA] Comparer des dates

RE:

Ta remarque m'a ôté du doute qui me laissait entendre que je n'avais pas bien cerné le problème.

J'ai donc repris le code:

Code:
Sub testage()
For Each cel In Feuil1.Range("D3:D" & Rows.Count).SpecialCells(xlCellTypeConstants)
    If cel > [D3] + 6 Then
      Range("A" & cel.Row & ":E" & cel.Row).Interior.ColorIndex = 6
      Else
      Range("A" & cel.Row & ":E" & cel.Row).Interior.ColorIndex = xlAutomatic
    End If
Next
End Sub
Pour le cas où ça ne fonctionnerait pas chez toi, je te joins une copie de ton fichier qui marche bien chez moi.

Cordialement.
 

Pièces jointes

  • Copie de Traitement de données Final.xlsm
    41.4 KB · Affichages: 64

jeanBaptiste

XLDnaute Junior
Re : [VBA] Comparer des dates

Je viens de comprendre la condition en faite je pense que tu as mal compris je ne veux pas comparer la les colonne D et E mais juste les dates de la colonne D avec la 1ere de la même colonne car lors de la récupération de ces date notre logiciel ne sort que un planning sur 10 jours et nous on veux 7 jours seulement donc je cherche à griser ceux qui sont à plus de 7 du premier
 

job75

XLDnaute Barbatruc
Re : [VBA] Comparer des dates

Bonsoir jeanBaptiste, Papou-net,

Il n'y a vraiment pas besoin de VBA, comme vous l'avez dit une MFC fait bien l'affaire :

- défusionner par précaution les cellules A1:F1

- sélectionner toute la colonne D, D1 étant la cellule active

- créer la MFC sur cette colonne avec cette formule :

Code:
=ESTNUM(D1)*(D1>INDIRECT("D3")+6)
- refusionner A1:F1.

Edit : cela suppose que vous utilisiez le code que j'ai donné sur l'autre fil pour copier les colonnes...

Bonne fin de soirée.
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
243
Réponses
14
Affichages
642

Statistiques des forums

Discussions
312 169
Messages
2 085 924
Membres
103 042
dernier inscrit
slfjs