Macro ?

S

Stéph

Guest
Bonjour,

J'ai un planning sur excel qui me permet de visualiser les différents délais qu'il me reste pour réaliser un travail.Je souhaiterai savoir s'il est possible de trouver un système (macro par ex) de manière à m'alerter à chaque ouverture du fichier des délais très courts qu'il me reste à faire, par ex :

- Que la police de la cellule se mettre en rouge si la date du délais est à 3 jours de la date du jour.
- Que la police de la cellule se mettre en orange si la date du délais est à 8 jours de la date du jour.

Avis aux experts...
B)

Merci d'avance ;)
 
S

Stéph

Guest
J'avais effectivement pensé à la mise en forme conditionnelle, le pb c'est que je n'arrive pas à faire une fonction 'compris entre' par ex :

Compris entre =aujourdhui()-3 et =aujourdhui()-1

Et le top du top, serait d'avoir un signal à l'ouverture du fichier mais je pense qu'il faut être assez fortiche en VBA pour réussir à faire ça :unsure:
 

Staple1600

XLDnaute Barbatruc
Un premier essai (en VBA)
dans le code de la feuille


Code:
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
z = Date - 3
y = Date - 8
If [A1] = z Then MsgBox "Aujourdhui -3"
If [A1] = y Then MsgBox "Aujourdhui -8"
End Sub

Ce code correspond normalement à ta condtion

Code:
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
z = Date - 3
y = Date - 8
If [A1] >= z Or [A1] <= y Then MsgBox "Date comprise entre hier et aujourdhui -3"
End sub

Message édité par: staple1600, à: 01/09/2005 15:27
 
Dernière édition:
S

Steph

Guest
Pas mal ! Mais jsuis embettante et débutante surtout lol !! En fait, je souhaite savoir s'il est possible que j'applique cette condition à une plage de cellule et s'il serait possible par le biais du message d'afficher qu'elle est la cellule qui est concernée (ça me parait peut etre un peu compliquer, mais tu m'as l'air de t'y connaître :) )
 
S

Steph

Guest
En fait t'es un pro en la matière !! Mais le pb étant que de mon coté j'ai un peu de mal, ça fonctionne super bien sauf que maintenant il ne fait plus la différence entre les dates lol !

En gros mes codes sont exactement les suivants (j'ai du me tromper qqpart) :

Sub alerte ()

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
z = Date - 3
y = Date - 8
If [A1] = z Then MsgBox 'Aujourdhui -3'
If [A1] = y Then MsgBox 'Aujourdhui -8'
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
z = Date - 3
y = Date - 8
adr = ActiveCell.Address
'If [A1] >= z Or [A1] <= y Then MsgBox 'Date comprise entre hier et aujourdhui -3'
If ActiveCell.Value >= z Or ActiveCell.Value <= y Then MsgBox 'Date comprise entre hier et aujourdhui -3' & Chr(13) & 'Référence de la cellule: ' & adr, vbInformation, 'Attention'
End sub

Merci en tout cas !
 
S

Steph

Guest
En fait c'est la dernière qui fonctionne plus à présent, y a une erreur de synthaxe :

If ActiveCell.Value >= z Or ActiveCell.Value <= y Then MsgBox 'Date comprise entre hier et aujourdhui -3' & Chr(13) & 'Référence de la cellule: ' & adr, vbInformation, 'Attention'

Je m'excuse et je vous remercie de votre patience ;)
 
S

Stéph

Guest
En fait ça fonctionne sur ton fichier ! Mais y a un truc que je pige c'est que ta macro ne figure pas dans le classeur Excel vu qu'elle n'a pas de nom et du coup je ne peux pas l'exécuter sauf si je me positionne sur la cellule.

Jsuis vraiment qu'une débutant mais je ne savais pas qu'on pouvait créer une macro sans lui donner de nom !!??!!
 

Staple1600

XLDnaute Barbatruc
Voici un autre code

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
adr = ActiveCell.Address
T = Date - ActiveCell.Value
Select Case T
Case 3 To 8
MsgBox 'Valeur de la cellule: =Aujourdhui - ' & T & ' jour(s)' & Chr(13) & 'Référence de la cellule: ' & adr, vbInformation, 'Attention'
End Select
End Sub

CETTE MACRO DOIT ETRE DANS LE CODE DE LA FEUILLE!

Donc
Clic-droit sur la Feuil1 par exemple et choisir
Visualiser le code
Ensuite Choisir Worksheets (là où il y a Général)
Puis à la place de Déclarations
Afficher SelectionChange

C'est ici qu'il faut coller le code

Message édité par: staple1600, à: 02/09/2005 09:57
 
S

Stéph

Guest
Ah ok !! C'est pour ça que je comprenais rien lol ! Mais petite question, elle fonctionne bien mais comment est ce que je fais pour l'exécuter ? Car elle s'execute qu'au moment où je me positionne sur la cellule concernée.
 

Staple1600

XLDnaute Barbatruc
Une petite amélioration
(la macro se déclence à la saisie)
IL FAUT CHANGER D'EVENEMENT
1) supprimer l'ancien code (SelectionChange)
2) le remplacer par celui-ci
3)adapter la plage de cellule (ici dans l'exemple
A1:A10

Private Sub Worksheet_Change(ByVal Target As Range)
adr = Target.Address
T = Date - Target.Value
'Zone d'action de la macro ici A1:A10
If Intersect(Target, Range('A1:A10')) Is Nothing Then: Exit Sub
'Teste si la cellule active est une Date et n'est pas vide
If Not IsDate(Target) Or IsEmpty(Target) Then: Exit Sub

'Pour toute différence en Aujourdh'hui allant de 3 à 8
'Affichage d'un message
Select Case T
Case 3 To 8
MsgBox 'La date saisie =Aujourdhui -' & T & ' jours()' & Chr(13) & _
'Référence de la cellule: ' & adr, vbInformation, 'Attention'
End Select

End Sub
 

Discussions similaires

Réponses
2
Affichages
323
Réponses
2
Affichages
198
Réponses
5
Affichages
435

Membres actuellement en ligne

Statistiques des forums

Discussions
312 895
Messages
2 093 384
Membres
105 714
dernier inscrit
POKITO