Pb sur les dates et ou taper le code

Résolu
selestafst Messages postés 6 Date d'inscription vendredi 24 juin 2005 Statut Membre Dernière intervention 2 novembre 2006 - 24 juin 2005 à 16:49
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 25 juin 2005 à 12:09
Bonjour à tous, voilà je suis super débutant en vb et je cherche à faire un truc tout simple :
Dans excel, j'ai une colonne avec des dates en couleur noire et j'aimerai que celles qui ont une différence supérieure à 12 jours avec la date courante passent en rouge.
De plus j'aimerai que ça se lance à l'ouverture du fichier excel, sans avoir à cliquer sur un bouton ou quoi que ce soit!!
Y a-t-il un code tout prêt? Quelqu'un a-t-il une solution?

Aidez moi merci!!!!

7 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
24 juin 2005 à 18:13
Salut,

Menu "Outils/Macro/Visual basic editor" ou Alt+F11.

Dans ThisWorkBook, tu colles ce code :

Private Sub Workbook_Open()
Dim i As Long
dim col as Long

col = 1 ' colonne A, tu mets la colonne que tu veux


' activation de la feuille, tu mets le nom de la tienne
Sheets("Feuil1").Activate


' on parcourre les lignes jusqu'à la dernière renseignée
For i = 1 To ActiveCell.SpecialCells(xlLastCell).Row
If IsDate(Cells(i, col).Value) Then 'si c'est une date
If Cells(i, col).Value > Date + 12 Then
Cells(i, col).Font.ColorIndex = 3 ' couleur police en rouge
End If
Else
Exit For
End If
Next


End Sub



-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
24 juin 2005 à 23:55
Je peux faire une petite réflexion toute bête ? Il n'y a pas forcément besoin de passer par un code VB pour faire ça, il y a beaucoup plus simple. Une fonctionnalité d'Excel

Ca s'appelle la mise en forme conditionnelle.
Donc, sur une cellule donnée, faire le Menu\Affichage\Mise en forme conditionnelle

Mettre comme condition :
La formule est : =JOUR(AUJOURDHUI()-Case sélectionnée contenant la date)>12
Et avec le bouton Format, définir l'effet voulu (changement de couleur, de police, de fond, ...)

Puis avec le superbe est magnifique outil Pinceau, copier ce format conditionnel sur toutes les cases qui intéressent voire la colone.

Ca a l'avantage de fonctionner dès que le fichier Excel est ouvert, la mise à jour est en temps réel dès une modification de date (il faut que l'option Calcul automatique soit cochée tout de même, sinon, il faudra faire F9 pour rafraichir les formats).

Voilà voilà
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
24 juin 2005 à 22:15
The J


Bon Voilà Moi aussi j'ai déja eu un truc de se genre la ma solution est la suivante
Supposons que Les date a traiter se trouve dans la Colone 1 sur la feuille du nom «Sheet1» il suffi de mettre le code suivant dans la section «Thisworkbook» et le tour est jouer.


Private Sub Workbook_Open()

Dim interval As Integer 'Contien la différance entre la date du jour et celle de la Cellule

'On commence par sélectionner touts les cellule non-vide de la colone A1
Sheets("Sheet1").Range("A1", Range("A1").End(xlDown)).Select


'On boucle sur toutes les cellues sélectionnées et on vérifie la condition
For Each Cell In Selection
If IsDate(Cell.Value) = True Then 'On vérifi si c une date
interval = (Date - Cell.Value)
Select Case interval
Case Is = 12 ' S'il y a une différance de 12 jours exactement
Cell.Font.ColorIndex = 4 'On met la date en Vert Clair
Case Is > 12 ' S'il y a une différance de plus de 12 jours
Cell.Font.ColorIndex = 3 'On met la date en Rouge
Case Is < 12
'Ici tu peux mettre ce que tu veux
'Si tu veux faire un traitement particulier quand «interval»
'plus petit que 12
End Select

Else


'Ici si la valeur de la cellule n'est pas une date
'Tu peux faire le traitement que tu veux ici




End If


Next


End Sub
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
24 juin 2005 à 22:20
The J

Ha Zut Désolé je n'avais pas vue que CanisLupus avais déja répondu il faut dire que nos code sont pas mal ressemblant!!!! Au moins il y a sa de bon Je suis sure que je ne suis pas aussi nul que sa

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

Posez votre question
jsem2k1 Messages postés 125 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 12 août 2008 1
25 juin 2005 à 01:52
Hé oui c tout bête je l'avais oblier sa... Voir qu'a force de tapper du code on fini par oblier qu'il y a plus simple (une sorte de déformation professionelle)

The J
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 juin 2005 à 12:05
Ouaip, moi aussi j'avais oublié cette fonction. Je ne fais pas trop de bureautique.
Par contre la formule donnée par Molenn ne fonctionne pas, il faudrait faire :
=AUJOURDHUI()-$A$1>12
sinon ce n'est qu'une différence entre des jours et non pas des dates (par ex, 25/06/04 comparée avec aujourd'hui ne changerait pas de couleur, et pourtant ...).

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 juin 2005 à 12:09
Bon sang de copier/coller

AUJOURDHUI()-Case sélectionnée contenant la date >12

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Rejoignez-nous