cs_youfie
Messages postés7Date d'inscriptionmardi 25 novembre 2008StatutMembreDernière intervention17 juin 2009
-
16 juin 2009 à 16:10
cs_youfie
Messages postés7Date d'inscriptionmardi 25 novembre 2008StatutMembreDernière intervention17 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 :(
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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)
cs_youfie
Messages postés7Date d'inscriptionmardi 25 novembre 2008StatutMembreDernière intervention17 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..
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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...
cs_youfie
Messages postés7Date d'inscriptionmardi 25 novembre 2008StatutMembreDernière intervention17 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.
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