Travail sur date

Résolu
cs_youfie Messages postés 7 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 17 juin 2009 - 16 juin 2009 à 16:10
cs_youfie Messages postés 7 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 17 juin 2009 - 17 juin 2009 à 10:40
Bonjour,

Je viens de réaliser mon premier programme en visual basic \o/
Malheureusement, celui-ci ne fonctionne pas (ca commence bien !)

Voila ce que je souhaite faire :
A l'ouverture de ma feuille excel, j'aimerais que mon programme colore en rouge les dates rangées dans les cellules o3 à o22 si celles si sont atteintes dans moins de deux mois.

Voici ce que j'ai déja écrit :

Private Sub Workbook_Open()

  Dim I As Long
  Dim Cellule As Range
  For Each Cellule In Range("o3:o22")
    If Cellule.Value >= Date - 60 Then
        Cellule.Interior.ColorIndex = 3
    Else
    Cellule.Interior.ColorIndex = 2
    End If
    Next
   
End Sub

Pour l'instant, toutes mes dates sont colorées en rouge :(

Pouvez vous m'aidez ?

Merci d'avance !

12 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
17 juin 2009 à 09:36
... tu fais pas d'effort

même remarque :


autant passer par les fonctions faites pour









Si IF la cellule est de type date ISDATE, on fait le traitement vu ci-dessous.
Sinon on ne fait rien. ENDIF

Private Sub Workbook_Open()
    Dim i As Long
    Dim Cellule As Range
  
    For Each Cellule In Range("O3:O22")
        If IsDate(Cellule.Value) Then 'ou juste IF len(Cellule.Value) THEN
            If DateDiff("d", Format(Cellule.Value, "dd/mm/yyyy"), Format(Date, "dd/mm/yyyy")) >= 60 Then
                Cellule.Interior.ColorIndex = 3
            Else
                Cellule.Interior.ColorIndex = 2
            End If
        End If
    Next
End Sub

<small>[../code.aspx?ID=39466 Coloration VB6, VBA, VBS]</small>
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 juin 2009 à 16:34
salut,

-60... litres?
les dates ne sont jamais pratiques à manipuler, autant passer par les fonctions faites pour



if DateDiff("d", Format(
Cellule.Value
, "dd/mm/yyyy"), Format(Date, "dd/mm/yyyy")) >= 60 then

++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 juin 2009 à 16:35
ps : topic déplacé de VB.NET vers VBA, attention aux thèmes stp
0
cs_youfie Messages postés 7 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 16:53
Bonjour,

J'ai essayé ton bout de code, mais ca ne marche pas, le programme ne veut plus s'exécuter car il y a une erreur.

Sinon je suis désolée pour le thème, je ne sais pas ce que j'ai foutu..
0

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

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 juin 2009 à 17:28
"il y a une erreur"..... laquelle?

montre le code complet modifié stp?
quelle est le genre de valeur que retourne "cellule" ? (tant dans la feuille excel que ce qui est retourné par cellule.value)
0
cs_youfie Messages postés 7 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 17 juin 2009
16 juin 2009 à 17:36
Voici mon code :

Private Sub Workbook_Open()

  Dim I As Long
  Dim Cellule As Range
  For Each Cellule In Range("o3:o22")
   
    If DateDiff("d", Format(Cellule.Value, "dd/mm/yyyy"), Format(Date, "dd/mm/yyyy")) >= 60 Then
        Cellule.Interior.ColorIndex = 3
        Else
        Cellule.Interior.ColorIndex = 2
    End If
    Next
       
End Sub

Sinon, concernant le message d'erreur, celui ci est :

Erreur d'exécution '13'
Incompatibilité de type

Concernant ma cellule, celle-ci contient une date, et je veux juste qu'elle se colore. Peut-etre que le cellule.value ne correspond pas à mon problème, je l'ai mis un peu par hasard..
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 juin 2009 à 21:06
je viens de tester le code sous excel 2007, tant avec .Value que .Text, aucune incompatibilité de type
(nb : je n'ai pas changé le format des cellulles)

soit ta plage est mauvais, peut-être des cellules vides, soit......
passe en pas à pas (f8) pour vérifier le contenu de cellule.value, pour voir...
0
cs_youfie Messages postés 7 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 17 juin 2009
17 juin 2009 à 08:53
Ah j'ai compris !

C'est due au fait que j'ai certaines cases de ma plage qui sont vide. (date non renseignée).
Du coup ça ne peut pas marcher :(
0
cs_youfie Messages postés 7 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 17 juin 2009
17 juin 2009 à 08:58
En fait il me faudrait une condition de la forme :

Si la cellule est de type date, on fait le traitement vu ci-dessous.
Sinon, on ne fait rien.
0
cs_youfie Messages postés 7 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 17 juin 2009
17 juin 2009 à 09:46
Quand on le voit écrit ça parait facile, mais je te promet que quand on a jamais pratiqué ce langage c'est pas évident.

Je l'ai dit plus haut, je suis complètement débutante (il y a un mois je ne connaissais même pas excel), et même si l'aide de excel est bien faite, elle ne me permet pas de tout résoudre. Depuis mon message je cherche la solution sur internet, alors c'est très déplacé de me dire que je ne fais aucun effort.

Merci quand même à toi pour ton aide.

Bonne journée
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
17 juin 2009 à 10:02
c'est très bien que tu aies le réflexe d'utiliser l'aide, en effet assez bien faite

mais pour l'exemple (et c'est pourquoi je me permettais cette remarque sans méchanceté)
google fr : vba savoir si valeur date valide
premier lien mène vers : http://www.sosordi.net/Depannage/95922-87-excel-vba-comment-tester-validite-une-date-repartie-dans-colonnes
première réponse donne : If Not (IsDate(Range("A1").Value)) Then

certains automatismes vont venir au fur et à mesure, comme "penser anglais" pour quasiment deviner le nom des fonctions.
en attendant, avec les centaines de millions de posts sur la toile, il est assez rapide de trouver une aide même partielle, ce peu importe le niveau et le langage

bonne continuation en tout cas, et bon courage
0
cs_youfie Messages postés 7 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 17 juin 2009
17 juin 2009 à 10:40
En tout cas, encore merci pour tout !
0
Rejoignez-nous