Suivi et Gestion du courrier : Transport Management System Excel VBA

Biasloler

XLDnaute Nouveau
Bonjour à tous,

Pour les besoins de mon service logistique et surtout pour gagner en traçabilité, je souhaiterai mettre en place une application sous Excel à l'aide de VBA, me permettant d'enregistrer et de suivre en temps réel les impressions et les courriers.

Je suis totalement débutant en VBA mais je pense malgrès tout que la solution afin d'automatiser au mieux ce processus passe par là.

Dans le fichier joint, j'ai construit un document qui me sert de "base de départ".

Je pense que l'utilisation de VBA reste indiscutable pour automatiser au mieux le processus.

Disons que construire la base du fichier était la partie la plus simple.
Reste maintenant que je suis totalement bloqué.

Alors voilà les points sur lesquels je souhaiterai bénéficier de votre aide précieuse :

1) Le premier problème que je rencontre se situe au niveau de la création d'une liste déroulante.
En effet, j'ai bien mis une feuille à part, où j'ai selectionné les différents "types de livraison" dans la feuille "Legende" mais lorsque je vais dans ma feuille "Test_01" : cellule D3 où l'on est censé avoir le déroulement qui s'affiche, rien n'apparait. Pourtant, après avoir créer ma zone "Type" dans la feuille "Légende" je suis bien allé dans : Données => Validation des données => Autoriser : Liste => Source : =Type. Si vous voyez d'où vient le problème, je vous remercie infiniment.

2) Mon deuxième problème se situe au niveau de l'automatisation liée à la date et l'heure d'impression. En effet, je pense que le mieux afin d'automatiser et de gagner du temps serait la chose suivante : dès que l'on rempli les champs précédents la date et l'heure d'impression, celle-ci s'automatiserait à l'instant t (statique). J'ai pensé que le mieux pour réaliser cette automatisation de l'heure serait une fonction VBA, or elle ne veut pas fonctionner lorsque je l'insère. N'ayant pas de très bonnes connaissances en Visual Basic, j'ai suivi un tutoriel qui m'a permis de la réaliser, or, un message d'heure s'affiche et rien n'y fait.

Voici le codage :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
For i = 3 To 100
If Cells(i, "A").Value <> "" And Cells(i, "B").Value <> "" And Cells(i, "C").Value <> "" And Cells(i, "D").Value <> "" Then
Cells(i, "E").Value = Date & " " & Time
Cells(i, "E").NumberFormat = "m/d/yyyy h:mm AM/PM"
End If
Next
Range("E:E").EntireColumn.AutoFit
End Sub

Je ne sais pas si ce que je vous donne comme explication est suffisant et surtout envisageable.
Je suis complètement perdu.
J'avoue cependant, avoir voulu monter cette application moi-même mais j'ai surestimé le travail et c'est à reculons que je viens vers vous. C'est pour moi un sentiment d'échec.

Afin de comprendre complètement le travail, serait-il possible (dans le cas où l'aide est envisageable) d'avoir les lignes de codes avec des commentaires pour comprendre le pourquoi du comment, et ainsi apprendre de mes erreurs.

De plus, si vous avez des fichiers de suivi dont je peux m'inspirer, je vous en serai infiniment reconnaissant.

Je suis complètement ouvert à vos explications car je souhaite réellement apprendre à maîtriser excel pour automatiser un certains nombres de tâches au boulot.

Ma démarche étant hésitante, je vous remercie par avance pour votre précieuse aide et vous souhaite à tous une agréable journée.

Cordialement.
 

Pièces jointes

  • TMS 04_13.xlsx
    10.5 KB · Affichages: 459

Modeste

XLDnaute Barbatruc
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Bonsoir Biasloler et bienvenue à toi,

Prenons les choses petit pas par petit pas :).
Si tu prends le temps de lire Lien supprimé, tu verras qu'il est conseillé d'ouvrir une discussion par "thème". Comme ici tu "livres tout le paquet" en un seul bloc, ça peut sembler rébarbatif.

Première piste, donc (qui permettra déjà de vérifier si tu reviens ou si tu as posté sur 5 forums différents ... pour "disparaître" ensuite) ... première piste, disais-je: dans Fichier > Options > Options avancées > Afficher les options pour ce classeur, il y a précisément une option qui est cochée (et dont, pour le cas qui nous occupe, il vaudrait mieux qu'elle ne le fût point: "Pour des objets, afficher: Rien". Le simple fait de cocher "Tout" ... rend visible ta liste déroulante en D3 ... en tout cas sur ma machine)

Teste déjà ça et dis-nous si ça règle le premier souci :confused:
 

Biasloler

XLDnaute Nouveau
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Bonsoir à tous,

Merci Modeste d'avoir répondu à mon post, je pensai que personne n'allait me répondre.

En effet, je ne voulai pas être trop rébarbatif c'est pourquoi j'ai exposé le problème comme suit, car c'était sous la même thématique d'excel et pensai que quelqu'un s'y connaissant très bien en développement serait répondre à ces anomalies rapidement.

Je ne voulai pas trop déranger et te remercie pour ton accueil, ainsi que ton aide au premier problème que j'ai rencontré qui a très bien fonctionné. Excel a tellement d'options, que parfois, tu ne sais plus où donner de la tête.

C'est pourquoi après réflexion, j'ai décidé de me lancer dans le language visual basic.

Je n'ai pas trouver la solution à ma 2ème anomalie, mais j'espère qu'après m'être autoformer sur ce language, je pourrai vous exposer ici la programmation que j'aurai réalisé sur ce language par rapport à la base de ce fichier qui je l'espère sera très automatisé.

Merci encore.
 

Modeste

XLDnaute Barbatruc
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Bonjour Biasloler,

Ravi de voir que tu es revenu prendre et donner des nouvelles (au passage: "Bon anniversaire!" :))

Pour le reste, ne crains pas trop de "déranger", en posant des questions ici: le forum est fait pour ça! Simplement, avec la pratique, tu verras que certaines façons de faire donnent de meilleurs résultats que d'autres (en terme de solutions proposées)

Si tu te lances dans l'étude du VBA, nous ne pouvons que te souhaiter belle découverte. Il y a ici une belle brochette de connaisseurs qui ne manqueront pas de te soutenir dans ta démarche.
Pour ne pas te laisser sur ta faim (mais tu ouvriras un autre fil sur la question quand tu en auras besoin) ton code pour inscrire une date fonctionnerait sous certaines conditions:
  • il faudrait, pendant l'exécution "suspendre" la gestion des événements (dans le déroulement de ta macro, si tu modifies la valeur d'une cellule, tu relances ta procédure, alors que la première n'est pas achevée)
  • si tu fais une boucle, pour "passer en revue" une centaine de lignes, tu vas - lorsque tu modifieras D15, par exemple- également modifier les dates et heures d'impression des 13 lignes précédentes (ce qui n'est pas le but du jeu, me semble-t-il)
  • si, dans ton code, tu inscris comme valeur dans une cellule Date & " " & Time, le résultat est stocké sous forme de texte. Si tu dois un jour faire un calcul sur cette valeur, il me semble que Date + Time serait préférable.

A un de ces jours,
 

Biasloler

XLDnaute Nouveau
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Bonjour à tous, Bonjour Modeste,

Tout d'abord, je souhaitai remercier Modeste pour le temps que tu m'as consacré afin de répondre à une partie de mon problème et tu as également pensé à me souhaiter un joyeux anniversaire, décidément cet homme est génial !

Je suis tout à fait d'accord avec toi, ma démarche est encore trop hésitante. Mais cela viendra par la longue.

Pour répondre à mon 2ème besoin qui est l'automatisation de l'heure à un instant T, après mûre réflexion, je pense que l'idéal serait de créer une macro où l'on cliquerait à chaque fois que l'on rempli ce "formulaire". Mais je ne sais pas du tout comment faire, même après avoir regarder quelques tuto' sur le net, rien n'y fait.

En tout cas, si quelqu'un pouvait m'apporter assistance sur cela, je lui en serai infiniment reconnaissant.

Cordialement.
 

Modeste

XLDnaute Barbatruc
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Bonjour Biasloler,

Une proposition en annexe, pour insérer la date et l'heure en colonne E, dès que le contenu de la colonne D (sur la même ligne) est modifié et que les cellules des colonnes A, B, C et D ne sont pas vides.

A tester soigneusement ... puis tu nous diras si ça correspond à ce que tu veux ou si des modifications doivent être apportées!
 

Pièces jointes

  • TMS 04_13 (Biasloler).xls
    35.5 KB · Affichages: 316

Biasloler

XLDnaute Nouveau
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Bonjour Modeste,

Merci infiniment, c'est exactement cela que je voulai exécuter et cela fonctionne parfaitement.
Serais-tu d'où vient l'erreur par rapport au codage que j'avais effectué ultérieurement?

De plus, afin d'automatiser au mieux ce fichier, je pense que l'idéal pour la colonne D "Date et heure de traitement de la tâche" que le mieux serait de créer un bouton macro qui m'afficherait l'heure à laquelle je clique sur ce bouton, c'est-à-dire au moment où je traite la tâche. Qu'en penses-tu?

Si tu as des idées, afin de gagner en clarté et en temps concernant ce fichier, je suis preneur.

Merci encore, tu m'es d'une aide très précieuse.
 

Modeste

XLDnaute Barbatruc
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Re-bonjour,

d'où vient l'erreur par rapport au codage que j'avais effectué ultérieurement?
Tu ne précises pas quel message d'erreur tu obtenais, de ton côté ...
En lançant ta macro depuis le Visual Basic Editor (en mode pas-à-pas: touche F8) tu devrais constater la "récursivité" que j'évoquais dans mon message #4 (1ère puce). Pour désactiver la gestion des événements, regarde dans l'aide ce qui est mentionné au sujet de la propriété "Application.EnableEvents"

D'autre part, comme mentionné précédemment, ta boucle For i = 3 To 100 fait en sorte que lorsque tu modifies n'importe quelle cellule (de n'importe quelle colonne, en plus) tu remodifies toutes les dates d'impression déjà inscrites en colonne E ... elles finissent par être toutes identiques :eek:

Pour ton idée de bouton, ... pourquoi pas, mais comment éviter qu'une nouvelle fois, toutes les dates soient identiques? Il faudrait dès lors un bouton pour chaque ligne ... ce qui risque de devenir lourd à mettre en place!
Ce qu'on peut imaginer, c'est d'indiquer la date en colonne E, en faisant un double-clic dans une cellule de cette même colonne. Le code suivant remplace donc le précédent:
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, [E3:E100]) Is Nothing Then
        Cancel = True
        If Application.CountA(Cells(Target.Row, 1).Resize(1, 4)) < 4 Then Target = vbNullString: Exit Sub
        Application.EnableEvents = False
        Target = Date + Time
        Target.NumberFormat = "m/d/yyyy h:mm AM/PM"
        Application.EnableEvents = True
    End If
End Sub
 

Biasloler

XLDnaute Nouveau
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Bonjour Modeste,

Ayant discuter cela avec quelqu'un de mon entreprise, d'après lui le message d'erreur que j'avais vient du fait de n'avoir pas désigner d'évènement à l'aide de la macro que j'avais poste ultérieurement.

Maintenant, par rapport à ce que tu dis, je t'avouerai que je n'y avais pas penser. Je pensai que si je faisai cette maccro date & heure, celle-ci serait "fixe" pour chaque ligne, je pensai pas qu'elle mettrait à jour les dates précédentes. Ton idée de double-clic m'intérésse à voir comment cela fonctionnerait dans la pratique. Ca me paraît plutôt pertinent comme idée. Mais comment faire cela? Là, je suis perdu.

Merci.
 

Biasloler

XLDnaute Nouveau
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Re-bonjour Modeste,

Je pense que la macro qui nous permettrait d'automatiser l'heure à laquelle la tâche est traitée pourrait venir de l'événement en colonne G "Dysfonctionnements".

Je pense que dans cette colonne G, je vais mettre un système de cochage : Oui/Non. Le fait de cliquer sur Oui ou Non, m'indiquerait en colonne F "Heure et traitement de la tâche", voici l'événement qui me permettrait d'automatiser cette colonne F. De plus, je n'arrive pas à faire de tri sur la colonne F avec un système de cochage.

Si tu as des idées concernant la réalisation de cette macro, je t'en serai plus que reconnaissant. Merci beaucoup pour ton aide. Je te souhaite une bonne fin de journée.

Cordialement.
 

Modeste

XLDnaute Barbatruc
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Bonsoir Biasloler ... et puis tous les autres :)

Je réponds d'abord à ton message du matin; j'en étais encore, pour ma part à la date en colonne E (l'objet de ton premier code, me semblait-il!?)
En pièce jointe donc la macro qui insère la date en colonne E, au double-clic (si les 4 cellules précédentes sur la même ligne ne sont pas vides)

Pour ton système cocher-décocher, une proposition utilisant le même système en colonne G (le double-clic fait apparaître un symbole ressemblant à une case cochée. Un second double-clic dans la même cellule efface le symbole)

Une fois de plus, teste la proposition ... et fais-en ce que bon te semble (je ne suis pas vraiment susceptible :rolleyes:). Si la proposition te convient, je te laisse adapter le code pour faire en sorte qu'une date paraisse en colonne F, si tu le souhaites. Dis-nous si tu "coinces".
 

Pièces jointes

  • TMS 04_16 (Biasloler).xls
    34.5 KB · Affichages: 296

Biasloler

XLDnaute Nouveau
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Bonjour Modeste et Bonjour à tous,

Concernant la colonne E, tout est ok.
Les quatres colonnes qui la précèdent que je vais remplir manuellement, me permettent de déclencher l'heure à laquelle la tâche est traitée.
De ce côté là, le test est okay, cela fonctionne parfaitemement et je t'en remercie.

Concernant la colonne G, le système de coche corresponds exactement à ce que je voulai en terme de forme. J'ai également testé si cela nous permettait de faire un tri s'il y a eu des dysfonctionnements ou non, et c'est ce que je voulai faire.
Or, j'aimerai savoir s'il était possible de faire un double-système de coche (Oui/Non) au lieu d'un double clic dans la dans cette colonne G, qui serait l'évènement déclencheur de la date et l'heure à laquelle la tâche est traitée en colonne F.

Je test tes propositions et essaye d'améliorer au mieux ce processus interne, et te remercie de ne pas être susceptible, car je ne le suis pas non plus (lol). J'en apprends tous les jours, et grâce à toi, je découvre les fonctionnalités d'excel les plus pointus. Merci encore pour ton aide (je ne cesserai de le répéter).

Cordialement.
 

Modeste

XLDnaute Barbatruc
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Bonjour,

Concernant la colonne G, le système de coche corresponds exactement à ce que je voulai en terme de forme. J'ai également testé si cela nous permettait de faire un tri s'il y a eu des dysfonctionnements ou non, et c'est ce que je voulai faire.
Or, j'aimerai savoir s'il était possible de faire un double-système de coche (Oui/Non) au lieu d'un double clic dans la dans cette colonne G, qui serait l'évènement déclencheur de la date et l'heure à laquelle la tâche est traitée en colonne F.
J'ai peur de ne pas bien comprendre: dans le premier paragraphe, tu dis que tout fonctionne comme tu voulais ... dans le second tu demandes si on peut faire autrement :confused::confused:

Tu veux de vraies cases à cocher?
Si c'est ça, tu insères une case à cocher dans chaque cellule concernée, puis clic droit sur la cellule > Format de contrôle > Cellule liée (indiquer ici la référence d'une cellule dont le contenu sera VRAI ou FAUX, selon que la case sera cochée ou non). Ce sera donc ensuite le changement de valeur dans cette même cellule qui sera l'événement déclencheur de la macro.
 

Biasloler

XLDnaute Nouveau
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Re-bonjour à Modeste et à tous,

Oui, dans mon premier paragraphe, je te disai que la première partie de l'outil fonctionne. J'entends par là, que jusqu'à la colonne E, qui est la date et l'heure d'impression des dossiers, c'est parfaitement automatisé.
Je rempli les quatre premiers champs, afin d'automatiser le cinquième.

Or, mon problème s'articule maintenant autour des colonnes F et G. J'aimerai qu'à partir de la colonne G, par un système de cases à cocher, comme nous avons pu le voir, lorsque je vais cliquer sur Oui OU Non, celui-ci m'indiquera la date et l'heure à laquelle la tâche a été traitée.

Concernant, le dernier point que tu as évoqué, j'ai fait le test d'insérer une case à coché or celle-ci n'a pas l'air de se lier à la cellule approrement dîte et donc ne pourra pas apparaître lorsque j'aimerai faire un tri sur la colonne pour savoir s'il y a eu des dysfonctionnement ou non.

Merci.
 

Modeste

XLDnaute Barbatruc
Re : Suivi et Gestion du courrier : Transport Management System Excel VBA

Bonsoir,

Tu as raison: si on peut effectivement définir une cellule liée associée à chaque case à cocher, le fait de cocher/décocher (et donc modifier le contenu de la cellule liée) n'est pas un événement en soi ... Restent les cases à cocher des contrôles ActiveX, qu'on peut programmer ... sauf que le "on" n'est pas moi :eek:
Je passe donc la main pour cet aspect-là.
 

Discussions similaires

Réponses
5
Affichages
181

Statistiques des forums

Discussions
312 203
Messages
2 086 184
Membres
103 152
dernier inscrit
Karibu