Travail sur date [Résolu]

Signaler
Messages postés
7
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
17 juin 2009
-
Messages postés
7
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
17 juin 2009
-
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

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
... 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>
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
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 
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
ps : topic déplacé de VB.NET vers VBA, attention aux thèmes stp
Messages postés
7
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
17 juin 2009

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..
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
"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)
Messages postés
7
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
17 juin 2009

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..
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
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...
Messages postés
7
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
17 juin 2009

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 :(
Messages postés
7
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
17 juin 2009

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.
Messages postés
7
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
17 juin 2009

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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
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
Messages postés
7
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
17 juin 2009

En tout cas, encore merci pour tout !