Problème différence VBA

Fermé
Mama6196 Messages postés 5 Date d'inscription samedi 5 mars 2022 Statut Membre Dernière intervention 11 mai 2022 - Modifié le 11 mai 2022 à 10:48
eriiic Messages postés 24585 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 juin 2024 - 11 mai 2022 à 12:50
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?

ci-dessous le lien pour télécharger le fichier:
https://www.sendbox.fr/HzLPQZb3/a6762d40ad6b96240bdfd288652dd1dc

Merci

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

eriiic Messages postés 24585 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 27 juin 2024 7 228
11 mai 2022 à 12:50
Bonjour,

merci d'éviter le crossposting plutôt mal vu.
On n'a pas vraiment envie de perdre du temps à répondre à un sujet peut-être déjà traité ailleurs...
Résolu ici : https://forum.excel-pratique.com/excel/probleme-difference-somme-171717
eric
1