Bonjour à tous,
Je cherche à calculer un linéaire de charge. Le macro fonctionne bien à une condition près (voir ci-dessous en jaune). Pour l'intégralité de la macro, voir fichier joint.
le problème que je rencontre est sur la ligne en jaune ou je fais la différence entre le max sur 2 range différentes. Dans mon cas de figure, la différence devrait être de 0 mais ce n'est pas le cas quand je regarde la fenetre espion des variables et du coup, on rentre dans la boucle if alors qu'on ne devrait pas.
For numcol2charge = 90 To (Nbcolnonvide + 90)
diff = Application.WorksheetFunction.Max(Range("C" & "L" & Numligne & ":C" & "M" & Numligne)) - Application.WorksheetFunction.Max(Range("C" & "Y" & Numligne & ":D" & "J" & Numligne))
If (diff) <> 0 Then
If Cells(Numligne, numcol2charge) - Cells(Numligne, numcol2charge - 1) > 0 And Not IsEmpty(Cells(Numligne, numcol2charge)) And Not IsEmpty(Cells(Numligne, numcol2charge - 1)) Then
deltajour = Cells(Numligne, numcol2charge) - Cells(Numligne, numcol2charge - 1)
variable = DateAdd("m", 1, CDate(Cells(4, numcol2charge)))
chargerepartie = (Cells(Numligne, numcol2charge) - Cells(Numligne, numcol2charge - 1)) / (Application.NetworkDays_Intl(variable, Cells(Numligne, 6)))
valeur = 0
For numcolonne2 = 103 To (Nbcolnonvide + 103)
If Cells(3, numcolonne2) >= variable And Cells(3, numcolonne2) <= Cells(Numligne, 6) And Cells(3, numcolonne2) <> Cells(Numligne, 6) And Month(Cells(3, numcolonne2)) & Year(Cells(3, numcolonne2)) <> Month(Cells(Numligne, 6)) & Year(Cells(Numligne, 6)) Then
nbjourouvre = Application.NetworkDays_Intl(Cells(3, numcolonne2), WorksheetFunction.EoMonth(Cells(3, numcolonne2), 0))
valeur = valeur + (nbjourouvre * chargerepartie)
Cells(Numligne, numcolonne2).Value = Cells(Numligne, numcolonne2).Value + valeur
ElseIf Month(Cells(3, numcolonne2)) & Year(Cells(3, numcolonne2)) = Month(Cells(Numligne, 6)) & Year(Cells(Numligne, 6)) Then
nbjourouvre = Application.NetworkDays_Intl(Cells(3, numcolonne2), Cells(Numligne, 6))
valeur = valeur + (nbjourouvre * chargerepartie)
Cells(Numligne, numcolonne2).Value = Cells(Numligne, numcolonne2).Value + valeur
End If
Next
End If
End If
Next
Pourriez-vous m'aider svp?
Merci