XL 2013 calcul d'heure tranche horaires

kjin

XLDnaute Barbatruc
salut
J'espère que vous avez tous pris la mesure du pb qui nous arrive et adopté les mesures nécessaires, sans morale aucune
Ca fait bien longtemps que ne suis plus sur XLD, mais cette fois c'est moi qui pose la question
Une pensée pour toutes celles et ceux remarquables que j'ai pu croiser ici, et qui qqfois sont allés vers d'autres cieux
En vba s'il vous plait, je mettrai dans un onglet la plage heures de nuit - 22h-06h00 qui peut évoluer
2 cellules horaires - début - fin
Monique et Céléda avait travaillé remarquablement sur le sujet...par formules
A partir de ces 2 uniques cellules !
merci beaucoup pour votre aide
Et le fichier en Pj
 

Pièces jointes

  • pb xld.xls
    26 KB · Affichages: 49

jmlucien

XLDnaute Nouveau
genre : ActiveWorkbook.ActiveSheet.Name = "Toto"
Au lieu de Toto ce serait une chaine : monNom=contenu cellule 1 & "-" & contenu cellule 2
Elément déclencheur à voir soit change de la feuille si cellule change ou autre soit un bouton ?
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, CISCO, kjin, jmlucien

•>jmlucien
(Pas de petit Bonjour pour commencer la journée...:rolleyes:
cf la charte du forum - point 3) - )

On peut être confiné tout en restant poli. ;)

Sinon j'ai beau lire et relire ta réponse, j'ai l'impression que tu as posté une réponse destinée à une autre question, non ?
 

jmlucien

XLDnaute Nouveau
Désolé, bonjour à toutes et tous...Je bosse en télétravail depuis trois jours et j'en oublie les règles élémentaires…!
Donc sans doute n'ai-je pas compris la question ? J'ai compris que tu voulais changer le nom de l'onglet à partir du contenu de deux cellules et ceci en VBA.
C'est autre chose ?
Belle journée à toutes et tous...;)
 

Staple1600

XLDnaute Barbatruc
Re

•>jmlucien
Moi, je ne veux rien. C'est le sieur Kjin qui veut en VBA déterminer le nombre d'heures selon la tranche horaire (jour ou nuit)
Voir sa PJ.

PS: j'aimerais bien être en télétravail.
Sauf que pas assez de portables pour tout le monde. (pc perso interdit)
Mais de toute façon, le serveur n'arrive plus à suivre
(d’après ce que me dise les collègues)
Donc, je suis en télé-chaispaskoifoutre et glande dès potron-minet sur le net ;)
 

CISCO

XLDnaute Barbatruc
Bonjour

Super content de te croiser Cisco
Tu sais que j'ai encore dans mes archives un pb de thermostat je crois et que je n'ai jamais finalisé !

Moi aussi.
J'aimerai bien finir cette simulation de l'affichage d'un thermostat, mais là, j'ai beaucoup d'autres choses à faire... VBA, python, Revit... Et puis, il faudrait que je reprenne cette simulation à la base, tout refaire...

Pour ce qui est de t'aider à résoudre ton problème en VBA, je laisse la place à d'autres...

Prend bien soin de toi
Au plaisir
 

jmfmarques

XLDnaute Accro
Bonjour à tous
A kjin : tu ne le sais pas, mais je n'ouvre jamais un classeur tiers (et n'ai donc pas ouvert le tien)
J'ignore donc tout de la nature et de la disposition de tes données. J'ignore pardessus tout si (et ce serait une erreur à corriger) tes heures de fin (de travail , ou de période nocturne) sont exprimées en hh:mm , ce qui serait cause d'erreur ou calculs usine à gaz si ces heures de fin sont au-delà de minuit).
Conseil : tout transformer en date/heure et ajouter 1 jour lorsque fin<début.
Cette transformation est simple à faire si tu choisis toujours la même date d'origine, n'est-ce pas ?
je te suggère la date DateSerial(0, 1, 1) --->> facilité de calculs
comment procéder ? -->> tout simplement ajouter tes heures (les unes et les autres à cette date d'origine) puis calculer l'écart en minutes par rapport à l'heure 0

Je vais te laisser faire cette partie là, dont je sais qu'elle n'est que routine.

Comment exploiter maintenant astucieusement et facilement ces données ? -->> regarde et tu vas vite comprendre :

VB:
DEB_travail = Range("A1").Value '  abscisse en minutes debut travail
  FIN_travail = Range("A2").Value '  abscisse en minutes fin travail
  DEB_nuit = Range("B1").Value'  abscisse en minutes debut nuit
  FIN_nuit = Range("B2").Value '  abscisse en minutes fin nuit
  Set chevauche = Intersect(Range("D" & DEB_nuit & ":D" & FIN_nuit), Range("D" & DEB_travail & ":D" & FIN_travail))
  If Not chevauche Is Nothing Then
    MsgBox chevauche.Cells.Count & " minutes de nuit"
  End If
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, jmfmarques

•>jmfmarques
Voilà, tu vas pouvoir rejoindre la partie ;)
01kjin.jpg

NB: Moi, j'ai interprété la question ainsi
Remplir la plage C2:D11 par VBA (et sans passer par des WorksheetFunction ;))
 
Dernière édition: