Automatisez la planification du transport et de la logistique, Excel VBA
Automatiser la planification du transport et de la logistique dans Excel à l’aide de VBA peut considérablement améliorer l’efficacité des processus et réduire les erreurs humaines. Voici un exemple détaillé de code VBA qui pourrait être utilisé pour automatiser une partie de la planification du transport et de la logistique, tel que l’assignation des livraisons aux chauffeurs ou la planification des itinéraires. Le scénario de cet exemple inclut les étapes suivantes :
1. Entrée des données : Un tableau dans Excel contient les informations relatives aux livraisons, y compris l’adresse de départ, la destination, la date de livraison, le poids de la cargaison, etc.
2. Automatisation de l’assignation : Le code VBA va analyser les données et assigner chaque livraison à un chauffeur ou à un véhicule, selon les critères (par exemple, capacité du véhicule, proximité, etc.).
3. Planification de l’itinéraire : Le code peut également planifier l’itinéraire en fonction de la distance ou des priorités.
Structure des données dans Excel
Imaginons que vous avez un tableau Excel avec les colonnes suivantes :
- A : ID de livraison
- B : Adresse de départ
- C : Adresse de destination
- D : Poids de la cargaison
- E : Date de livraison
- F : Chauffeur assigné
- G : Véhicule assigné
- H : Statut de la livraison (ex : « Planifié », « En cours », « Livré »)
Exemple de Code VBA
Sub PlanificationTransportLogistique() ' Déclaration des variables Dim ws As Worksheet Dim ligne As Long Dim adresseDepart As String Dim adresseDestination As String Dim poids As Double Dim dateLivraison As Date Dim chauffeurDisponible As String Dim vehiculeDisponible As String Dim distance As Double Dim poidsMax As Double Dim capaciteVehicule As Double ' Set référence au tableau de planification (feuille Excel) Set ws = ThisWorkbook.Sheets("Livraisons") ' Remplacer "Livraisons" par le nom de votre feuille ' Initialisation des limites de poids (par exemple, poids max d'un véhicule) capaciteVehicule = 1000 ' Exemple de capacité en kg ' Boucle pour parcourir toutes les lignes du tableau (à partir de la ligne 2) ligne = 2 Do While ws.Cells(ligne, 1).Value <> "" ' Récupération des données de la livraison adresseDepart = ws.Cells(ligne, 2).Value adresseDestination = ws.Cells(ligne, 3).Value poids = ws.Cells(ligne, 4).Value dateLivraison = ws.Cells(ligne, 5).Value ' Vérifier la capacité du véhicule avant d'assigner If poids <= capaciteVehicule Then ' Si le poids est inférieur à la capacité, chercher un chauffeur et un véhicule disponible chauffeurDisponible = ChercherChauffeurDisponible(dateLivraison) vehiculeDisponible = ChercherVehiculeDisponible(dateLivraison) ' Si un chauffeur et un véhicule sont disponibles, assigner la livraison If chauffeurDisponible <> "" And vehiculeDisponible <> "" Then ws.Cells(ligne, 6).Value = chauffeurDisponible ' Assignation du chauffeur ws.Cells(ligne, 7).Value = vehiculeDisponible ' Assignation du véhicule ws.Cells(ligne, 8).Value = "Planifié" ' Mettre le statut à "Planifié" Else ws.Cells(ligne, 8).Value = "Pas de ressources disponibles" End If Else ' Si le poids est trop élevé pour un seul véhicule, afficher un message ws.Cells(ligne, 8).Value = "Poids trop élevé" End If ' Passer à la ligne suivante ligne = ligne + 1 Loop End Sub Function ChercherChauffeurDisponible(dateLivraison As Date) As String ' Exemple de fonction pour chercher un chauffeur disponible à la date donnée Dim chauffeur As String chauffeur = "" ' Pour simplifier, l'exemple retourne un nom fictif si un chauffeur est disponible ' Ajouter ici la logique de recherche dans un tableau de chauffeurs disponibles If dateLivraison >= Date Then chauffeur = "Chauffeur 1" ' Remplacer par la recherche dynamique End If ChercherChauffeurDisponible = chauffeur End Function Function ChercherVehiculeDisponible(dateLivraison As Date) As String ' Exemple de fonction pour chercher un véhicule disponible à la date donnée Dim vehicule As String vehicule = "" ' Pour simplifier, l'exemple retourne un véhicule fictif si un véhicule est disponible ' Ajouter ici la logique de recherche dans un tableau de véhicules disponibles If dateLivraison >= Date Then vehicule = "Véhicule A" ' Remplacer par la recherche dynamique End If ChercherVehiculeDisponible = vehicule End Function
Explication du code
1.Variables et structure des données :
- Le code commence par déclarer des variables pour la feuille de travail (ws), les informations de chaque ligne de livraison (adresse de départ, destination, poids, etc.), et les fonctions auxiliaires qui vont déterminer les ressources disponibles.
2. Boucle sur les lignes de données :
- Le code parcourt chaque ligne du tableau de planification, en commençant à la ligne 2 (l’assumption est que la ligne 1 contient des en-têtes).
- Pour chaque livraison, il vérifie si le poids de la cargaison est inférieur à la capacité maximale d’un véhicule (capaciteVehicule). Si c’est le cas, il continue avec la recherche d’un chauffeur et d’un véhicule disponibles pour la date spécifiée.
3. Fonctions auxiliaires :
- Les fonctions ChercherChauffeurDisponible et ChercherVehiculeDisponible sont des exemples simplifiés pour retourner un chauffeur et un véhicule disponibles. Dans une application réelle, ces fonctions pourraient effectuer des recherches dans d’autres feuilles ou tableaux qui contiennent les horaires des chauffeurs et des véhicules.
4. Assignation des ressources :
- Si un chauffeur et un véhicule sont disponibles pour la date de livraison, le code assigne ces ressources à la livraison en mettant à jour les colonnes appropriées dans le tableau Excel (chauffeur et véhicule assignés).
5. Statut de la livraison :
- Le statut de la livraison est mis à jour, soit à « Planifié » si la livraison a été correctement assignée, soit à « Pas de ressources disponibles » ou « Poids trop élevé » si la planification échoue.
Personnalisation et Extension
- Recherche dynamique des chauffeurs et véhicules : Vous pouvez remplacer les fonctions ChercherChauffeurDisponible et ChercherVehiculeDisponible par des recherches dynamiques dans des tables de disponibilité qui contiennent les horaires et disponibilités réels des chauffeurs et des véhicules.
- Calcul des distances : Vous pouvez intégrer des API comme Google Maps pour calculer la distance entre les adresses de départ et de destination et optimiser ainsi les itinéraires.
- Gestion des priorités : Vous pouvez ajouter une logique pour attribuer des priorités aux livraisons urgentes et assigner les ressources en conséquence.
Conclusion
Ce code VBA constitue une base pour automatiser la planification des livraisons et des ressources logistiques dans Excel. Vous pouvez l’adapter selon vos besoins spécifiques, comme l’intégration de fonctionnalités supplémentaires pour l’optimisation des itinéraires ou la gestion d’un grand nombre de ressources.