Résolu VBA - Boucles imbriquées

mzubka

Habitué
Bonjour ,

Je souhaite réaliser une macro me permettant d'optimiser des livraisons.

Données entrés : Jour et horaire de livraison

Fonction : Evaluer à partir d'un tableau, quand la marchandise pourra être expédié.


Je teste donc si mon jour et heure d'arrivée permet une expédition le jour même ou sinon a j+1, +2 etc.


Voici le code que j'ai réalisé mais apparemment je dois avoir un problème dans mes boucles :(


Code:
Dim J_ch As Integer
Dim H_ch As Integer

Dim J_Liv As Integer


Dim n As Integer
Dim m As Integer
Dim Delta As Integer

J_ch = 1

For m = 5 To 70

    For n = 4 To 8

        If (Cells(m, n) < 0 And J_ch = Cells(m, n)) Then
                
                If (H_ch < Cells(m, n + 5)) Then
                
                    J_Cok = J_ch
                    J_Liv = Cells(m, n + 8)
                    Delta = J_Liv - J_ch
                    Cells(m, 10) = Delta
            
                    Else
                
                        J_Cok = Cells(m, n + 1)
                        J_Liv = Cells(m, n + 8)
                        Delta = J_Liv - J_ch
                        Cells(m, 10) = Delta
                
                End If
                
    
    End If
    
    Next n
    Next m
    
    

End Sub

Quelqu'un aurait une petite piste? Le code compile mais ...
 

drul

Obscur pro du hardware
Staff
Salut,
Commence déjà par utiliser la proprité ".value" de l'objet cells.
 

zeb

Modérateur
Rhooo....

Des Next variable !
On n'est plus en 1977
:pfff:

Depuis 1985, c'est l'indentation qui permet de faire du code propre et bien organisé.
:o
 

drul

Obscur pro du hardware
Staff


Ben en fait, bien que ce soit superflu, moi je trouve assez agréable à lire :spamafote:, Bon je suis également flémmard, donc je ne l'utilise pas ;)
 

mzubka

Habitué
C'est vrai mais vu que sur Excel il n' y a pas d'indentation auto j'ai préféré écrire les variables pour ne pas s'y perdre.

Mais tu as une solution pour indenter parfaitement le code?
 

mzubka

Habitué
Je reviens vers vous , car mon programme effectue a merveille la fonction demandé SAUF qu'il n'arrive pas à comparer deux horaires.

Y'a-t il un format plus adapté aux comparaisons pour les horaires?
J'ai utiliser un Dim Date pour ma variable horaire, mauvaise idée ?

Code:
Dim H_Ch as Date
[..]
If (H_ch < Cells(m, n + 5).Value)

La comparaison renvoit toujours vrai
 

drul

Obscur pro du hardware
Staff
Utilise un point d'rrêt pour voir ce qu'il y a dans tes variables. si je me fie a ton code initial, h_ch est ... vide ! tu ne l'initialise jamais ...
 

mzubka

Habitué
Désolé le code a changé depuis le premier poste.

J'initialise ma valeur h_Ch avec une cellule du tableau comme suit :

Code:
Sub test()

Dim J_ch As Integer
Dim H_ch As Date
Dim J_Liv As Integer
Dim n As Integer
Dim m As Integer
Dim Delta As Integer
 
 
J_ch = Cells(2, 5).Value
H_ch = Cells(3, 5).Value


For m = 5 To 70

    For n = 8 To 4 Step -1

        If (Cells(m, n).Value > 0 And J_ch <= Cells(m, n).Value) Then

 
            If (H_ch < Cells(m, n + 5).Value) Then
 
                    J_Cok = J_ch
                    J_Liv = Cells(m, n + 9).Value
                    Delta = J_Liv - J_ch
                    If Delta < 0 Then Delta = Delta + 5
                    Cells(m, 10).Value = Delta
 
            Else
                    J_Cok = Cells(m, n + 1).Value
                    J_Liv = Cells(m, n + 9).Value
                    Delta = J_Liv - J_ch
                    If Delta < 0 Then Delta = Delta + 5
                    Cells(m, 10).Value = Delta

        End If
        
    End If
    
    Next
    
Next
    
 
End Sub

H_ch prend donc la valeur de la cellule à savoir 07:00:00
On obtient dans le tableau de variable : H_ch : #07:00:00# : Date
 

drul

Obscur pro du hardware
Staff
Meilleure réponse


Tu peux essayer de t'inspirer de ceci:

Code:
If TimeValue(Cells(1, 1).Text) < TimeValue(Cells(1, 2).Text) Then
 MsgBox "truc"
End If

Attention, le .text à la place de .value est important !
;)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 049
Membres
1 586 282
Dernier membre
Yannick3553
Partager cette page
Haut