XL 2016 Formule complexe. Je ne m'en sors pas..

  • Initiateur de la discussion Initiateur de la discussion Gturkmen
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Gturkmen

XLDnaute Nouveau
Bonjour, j'ai créé un tableau de production.

Je n'arrive pas concernant la formule : onglet "Données" en E3 qui doit être :

Date de livraison - date du jour - les jours férié - les jours de fermeture de l'atelier. Le résultat dois me donner une amplitude de production en heure.
Dans l'onglet "parametre', j'ai les heures d'ouverture de l'atelier et un autres onglet "jours férié".

Si vous pouviez m'aider !Merci à vous !!
 

Pièces jointes

Solution
Bonsoir Gturkmen, job75, le fil,

bienvenue sur le site XLD ! 🥳

Image.jpg


dans cette fenêtre "Microsoft Visual Basic", fais Alt i m pour insérer un module « standard ». 🙂

soan
Bonjour Gturkme, bienvenue sur XLD,

Voyez le fichier joint et cette fonction VBA :
VB:
Function HProduction(deb#, fin#, t1#, t2#, t3#, t4#, fer As Range)
Dim n&, datheure#, dat&, test As Boolean, heure#, minutes&
For n = 1440 * deb To 1440 * fin
    datheure = n / 1440
    If Int(CDec(datheure)) > dat Then
        dat = Int(CDec(datheure))
        test = Weekday(dat, 2) < 6 And Application.CountIf(fer, dat) = 0
    End If
    heure = datheure - dat
    If test And (heure > t1 And heure <= t2 Or heure > t3 And heure <= t4) Then minutes = minutes + 1
Next
HProduction = minutes / 1440
End Function
Le code doit être placé impérativement dans un module standard.

Formule en E3 à tirer vers le bas :
Code:
=HProduction(C3;D3;_dmat;_fmat;_dapm;_fapm;_off)
A+
 

Pièces jointes

D'évidence dans le fichier précédent les minutes indiquées en E3 E6 E7 ne sont pas correctes.

Cela est dû à la comparaison des heures, pour y remédier il faut arrondir les heures à la 6ème décimale.

Utilisez donc ce fichier (2) :
VB:
Function HProduction(deb#, fin#, t1#, t2#, t3#, t4#, fer As Range)
Dim n&, datheure#, dat&, test As Boolean, heure#, minutes&
t1 = Application.Round(t1, 6): t2 = Application.Round(t2, 6)
t3 = Application.Round(t3, 6): t4 = Application.Round(t4, 6)
For n = 1440 * deb To 1440 * fin
    datheure = n / 1440
    If Int(CDec(datheure)) > dat Then
        dat = Int(CDec(datheure))
        test = Weekday(dat, 2) < 6 And Application.CountIf(fer, dat) = 0
    End If
    heure = Application.Round(datheure - dat, 6)
    If test And (heure > t1 And heure <= t2 Or heure > t3 And heure <= t4) Then minutes = minutes + 1
Next
HProduction = minutes / 1440
End Function
 

Pièces jointes

Merci Job 75, Franchement je suis toujours épanoui par les personne qui maîtrise excel à fond.
Est il possible toujours dans la cellule E3 de dire qu'il prenne pas automatiquement la date du jour mais la date la plus prêt de la date de livraison Entre la date du jour et la date de début de production.

Dans le message précédent, tu me dis : "Le code doit être placé impérativement dans un module standard" Pour tout te dire, je ne vois pas du tout ce que c'est le mode standard.

En ter remerciant beaucoup !!!!!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Aide Excel formule
Réponses
4
Affichages
374
Réponses
40
Affichages
433
Réponses
7
Affichages
869
Réponses
4
Affichages
772
Retour