gestionnaire "visuel" de commande

babap1

XLDnaute Occasionnel
Bonjour,

j'ai un classeur qui me sert à lister mes commandes reçues. Les onglets de mon classeur servent correspondent au suivi annuel - c'est à dire un onglet par an.

Je dois gérer mes commandes sous 15jours et pour gérer les priorités, j'entre la date de réception et la date d'envoi de ma commande dans un tableau.
Pour plus de lisibilité de mon tableau, je souhaiterai ajouter de la couleur en fonction de l'état de traitement des commandes. Cela revient à comparer des dates entre elles :
DateRéception, DateEnvoi et DateDuJour.

J'ai un exemple en pièce jointe avec une description de l'algorithme (en commentaire) tel que je le vois.

Pourrais-je avoir un coup de pouce pour transcrire en VBA ce que j'essaye de faire ?
Je vous remercie par avance,

Babap1
 

Pièces jointes

  • gestionnaireCommande.xls
    31.5 KB · Affichages: 77

Gorfael

XLDnaute Barbatruc
Re : gestionnaire "visuel" de commande

Salut babap1 et le forum
Le fichier d'essais n'est qu'une aide. Si tu es assez fort pour construire un algorithme qui tient la route, met-le dans ton poste ! Ça évitera de télécharger.
Cette partie permettrai de garder une trace sur les commandes déjà traitées
souhaiterais, à l'ouverture de mon fichier, mettre un peu de couleur pour plus de lisibilité dans mon tableau. Mon classeur Excel contient plusieurs onglet, correspondant aux années successives.

'Cette partie permettrai de garder une trace sur les commandes déjà traitées
SI (les deux dates sont renseignées en B et C) ET SI (dateEnvoi<=dateReception+14jours) ALORS cellRef.interior=vert SINON cellRef.interior=rouge

'pour les commandes reçues en cours de traitement
SINON SI dateReception<=dateDuJour<=dateReception +7jours
cellRef.interior=vert

SINON SI dateReception+7jours<dateDuJour<=dateReception+13jours
cellRef.interior=jaune

SINON SI dateReception+13jours<dateDuJour<dateReception+14jours
cellRef.interior=orange

SINON SI dateReception+14jours<=dateDuJour
cellRef.interior=rouge
+envoi d'un email de rappel pour traiter la commande, tous les jours jusqu'à ce qu'il y ait une date d'envoi en C

FIN SI
Ce que je vois là, devrait être traité en MFC : Rouge, Vert et orange : 3 couleurs = 3 conditions. Mais effectivement, comme c'est un travail déjà traité, inutile d'alourdir le fichier
Le faire à chaque ouverture ne sert à rien : Une fois la coloration faite, pourquoi bougerait-elle ?

Ton algorithme :
SI (les deux dates sont renseignées en B et C) ET SI (C<=B+14jours) ALORS cellRef.interior=vert SINON cellRef.interior=rouge
C'est pour les lignes clôturées. je comprends, mais CelRef ? Ça correspond à quoi ?
Comme on utilise les mêmes couleurs, je suppose que c'est la ligne qu'il faut colorer :
La ligne (de A à D) en rouge => l'expédition n'a pas été bonne
La ligne en vert => l'expédition a été dans les temps.
On aura un code du style
Code:
Sub test()
Dim F As Worksheet, Lig As Long
For Each F In Sheets
    For Lig = 2 To F.Cells(Rows.Count, "A").End(xlUp).Row
        If F.Cells(Lig, "B") <> "" And F.Cells(Lig, "C") <> "" Then
            If F.Cells(Lig, "C") < F.Cells(Lig, "B") + 15 Then
                F.Range(F.Cells(Lig, "A"), F.Cells(Lig, "D")).Interior.ColorIndex = 10
            Else
                F.Range(F.Cells(Lig, "A"), F.Cells(Lig, "D")).Interior.ColorIndex = 3
            End If
        End If
    Next Lig
Next F
End Sub
Pour chaque feuille, colorer les lignes clôturées en vert si c'est en moins de 15 jours, sinon en rouge.
Pour les commandes non clôturées, c'est plus problématique :
Plutôt que de faire une macro qui se lance à l'ouverture, je suggère l'utilisation de Workbook_SheetChange() (ayant plusieurs feuilles, Worksheet_Change ne suffira pas), pour clôturer dès l'apparition de la date en colonne C.

D'après ton algorithme on a :

B et C vide : Blanc
Valeur en B et pas en C
1 - B <= dateDuJour <= B +7 : vert
2 - B+7 < dateDuJour <= B+13 : jaune
3 - B+13 < dateDuJour < B+14jours : orange
4 - B+14 <= dateDuJour : rouge

Les conditions 3 et 4 me posent : Réception le 08/07/2011 : B passe en vert (condition 1)
15/07 (B+7) => B : vert (condition 1)
16/07 (B+8) => B : jaune (condition 2)
21/07 (B+13) => B : Jaune (condition 2)
22/07 (B+14) => B : ??? Rouge (condition 4)=> Je pense qu'il y a inversion sur les conditions 3 et 4 :
3 - B+13 <dateDuJour <=B+14jours : orange
4 - B+14 <dateDuJour : rouge => on aurait alors
22/07 (B+14) => B : orange (condition 3)
23/07 (B+15) => B : rouge (condition 4)

On est obligé de faire intervenir la même macro à lancement automatique, suite au remplissage de B, pour colorer la ligne en vert
+ envoi d'un email de rappel pour traiter la commande, tous les jours jusqu'à ce qu'il y ait une date d'envoi en C
Ça, ce n'est pas de mon ressort : je ne peux pas tester... et on n'a aucune information sur qui (quels sont les destinataires), quand (description trop ambigüe pour moi : tout les jours à partir de la réception, réception + 7, +14 ou +15 ?) et comment (contenu de l'objet, texte ou priorité). Que prévoit-on quand on loupe un jour par non ouverture du fichier (WE, jour férié)... ou non fermeture ?

Une recherche sur ce forum devrait te permettre de trouver un code

Si on n'a pas besoin de mail, on peut utiliser une MFC trois conditions, initialisée au remplissage de B (la condition 1 devenant l'état de base, il ne reste que 3 conditions).
A+
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Bon de commandes
Réponses
6
Affichages
853

Statistiques des forums

Discussions
312 239
Messages
2 086 495
Membres
103 236
dernier inscrit
Menni