Algorithme VBA avec boucles if/for

mzubka

Habitué
Bonsoir,
je cherche à réaliser une macro permettant de me calculer un delai J+ entre une livraison et un plan de transport.
Un magasin étant livré à jour Fixe , je souhaite calculer pour Lundi Mardi.. vendredi le délai en J+.

Chaque magasin possède des livraisons fixes avec un jour de départ et d'arrivé.

Exemple :

Agen est livré le Mardi si la marchandise part avant 9h le Lundi
Donc si on calcul le délai pour chaque jour on obtient:

Lundi : J+1
Mardi : J+7
Mercredi : J+6
Jeudi J+5
Vendredi J+4


J'ai essayé d'adapter ce plan de transport pour faciliter la réalisation de macro.

Il est donc construit de la manière suivante:


Magasins / Jours d'arrivé entrepot / Jour d'arrivé magasin / Date limite
Agen / 1 2 3 / 2 3 4 / 08:00h
Bordeaux / 2 5 / 3 1 / 09:00h


J'ai donc essayé de réaliser une macro ... mais à mon avis mon algorithme n'est pas assez performant et l'imbrication succésives des boucles if dans les for .


Ci-joint le code :

Code:
Sub MACRO()

'Définition des variables

Dim i As Integer
Dim n As Integer
Dim m As Integer
Dim Jour_Livraison As Integer
Dim Jour_Test As Integer
Dim Jour_Arriv As Integer
Dim Delta As Integer


Dim Heure_limite As Date
Dim Heure_Livraison As Date

'Initialisation des variables

For i = 1 To 5
    For m = 6 To 9
        For n = 2 To 6

Heure_Livraison = Cells(3, 8)
Heure_limite = Cells(m, 8)
Jour_Livraison = Cells(m, n)
Jour_Test = i
Jour_Arriv = Cells(m, n + 7)



        
            If (Heure_Livraison < Heure_limite) Then
                
                If (Jour_Test <= Jour_Livraison) Then
                
                    Delta = Jour_Arriv - Jour_Test
                    If Delta < 0 Then
                    Delta = Delta + 7
                    Cells(m, 14 + n) = Delta
                    Else
                    Cells(m, 14 + n) = Delta
                    End If
                    
                ElseIf (Jour_Test > Jour_Livraison And IsEmpty(Cells(m, n + 1))) Then
                
                Delta = Jour_Arriv - Jour_Test
                    If Delta < 0 Then
                    Delta = Delta + 7
                    Cells(m, 14 + n) = Delta
                    Else
                    Cells(m, 14 + n) = Delta
                    End If
                
                
                End If
            End If
       
        Next
        
    Next
    
Next

End Sub

Je suppose que sans le fichier de base cela n'est pas évident , comment puis je faire pour l'attacher au sujet?


Voila je recherche donc des astuces au niveau de l'algorithme pour réaliser ce calcul qui parait assez simple mais dont je ne me sors pas :(.

Merci d'avance , si vous avez des questions n hesitez pas !
 

zeb

Modérateur
Salut,

Non, tu ne fourniras pas de fichier de base.
Pas d'échange de fichiers plein de macro => pas de macro-virus => confiance entre nous !

Les boucles For, ça existent, mais pas les boucles If.
En revanche pour If, on parle de tests, voire de structures conditionnelles ( :sarcastic: ).

Bon, je regarde pour problème...
 

zeb

Modérateur
Agen est livré le Mardi si la marchandise part avant 9h le Lundi
Mais Agen n'est toujours livré que le Mardi.
Donc si la livraison part le Lundi après 9h, ce sera pour le Mardi d'après.
C'est ça ?
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 064
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut