Calcul d'heure et date

[Résolu]
Signaler
Messages postés
60
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
22 octobre 2007
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Bonjour,
je désire calculer les heures effectuée entre le départ et l'arrivée
je part du format suivant:
Date départ:15/09/06 10:00
Date arrivée:16/09/06 7:00

comment faire pour calculer le nombre total d'heure quelle formule
comment faire pour effectuer un calcul des heures de nuit(la nuit entre 20h et 6h du matin) dans l'exemple: 10h de nuit

d'avance merci à tous

15 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
essaie ceci :

Selection.Value = FrmDate.DTPicker1.Value & " " & _
Format(frmHeure.DTPicker1.Value, "hh:mm")

@++
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

tu peux essayer ceci :

dans l'éditeur vb, double clique (dans un des volets, à gauche) sur la feuille concernée et colle le code suivant :

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Dim rMaPlage As Range 
Set rMaPlage = Range("A2:B32")

   If DansPlage(Target, rMaPlage) Then FrmDate.Show 
End Sub 

Function DansPlage(plg1, plg2) As Boolean 
' *** retournera True si plg1 est contenu dans plg2
    DansPlage = False 
    If plg1.Parent.Parent.Name = plg2.Parent.Parent.Name Then 
        If plg1.Parent.Name = plg2.Parent.Name Then 
            
            If Union(plg1, plg2).Address = plg2.Address Then DansPlage = True 
        End If 
    End If 
End Function 

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
438
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

Salut,
va voir dans la catégorie Date & Heure tu as plein de source sur ce sujet
tu dois pouvoir trouver ton bonheur
Messages postés
60
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
22 octobre 2007

Non je n'ai rien trouvé je cherche encore mais help MEEEEEEEE...
merci
Messages postés
438
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

http://www.vbfrance.com/codes/NOMBRE-JOURS-OUVRABLES-ENTRE-DEUX-DATES_183.aspx



J'ai regarder en speed en voila une : NOMBRE DE JOURS OUVRABLES ENTRE DEUX DATES

Après à toi de l'adapter
Bon courage ;)
Messages postés
438
Date d'inscription
samedi 24 mai 2003
Statut
Membre
Dernière intervention
23 janvier 2011

Dsl je n'ai pas pu la tester car je n'ai plus d'installer VB6 je n'ai que VB.NET 2002 & 2005 mais cela devrai de convenir à mon avis
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

Sub test()
Dim dDateDeb As Date
Dim dDateFin As Date

dDateDeb = "15/09/06 10:00"
dDateFin = "16/09/06 7:00"

MsgBox DateDiff("h", dDateDeb, dDateFin)

End Sub

@++
Messages postés
60
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
22 octobre 2007

salut,

peux tu me dire pourquoi en utilisant
DTPICKER dans excel avec la syntaxe:
Selection.Value = FrmDate.DTPicker1.Value & " " & frmHeure.DTPicker1.Value
j'obtient cela:
16/09/2006 15/09/2006 4:00:00
16/09/2006 date sélectionnée dans mon premier userform
et quand je sélectionne l'heure il ajoute la date du jour en plus
soit 15/09/2006 4:00:00

merci
Messages postés
60
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
22 octobre 2007

Merci beaucoup Mortalino

puis je encore te demander comment activer les userforme de date par un clic uniquement dans une zone déterminée de type A2:A32 et B2:B32 et que la formule que tu m'as proposée si dessus face la calcul dès qu'on place les deux dates-heures dans les colonnes A et B

merci
Messages postés
60
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
22 octobre 2007

SAlut

si je souhaite lancer un autre su--userform à partir d'une autre zone c5:d34 par exemple je peux alors juste chager le :
Set rMaPlage = Range("A2:B32")
par
Set rMaPlage = Range("C5:D34")
If DansPlage(Target, rMaPlage) Then AUTREUSERFORM.Show

mais cela ne marche pas
pourquoi?

merci
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

as tu bien mis le code dans
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ?

Quel est ton message d'erreur ?
As tu une ligne surligné en jaune ?

++
Messages postés
60
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
22 octobre 2007

non aucune car ton systeme fonctionne
seulement je voudrais pouvoir adapter a une autre zone
et mettre en route un autre userform


ou j'y réfléchis en brut la maintenant mais est il possible de faire un seul userform et qu'il mette la bonne réponse dans la bonne cellule
est-ce possible??
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
tu peux aussi faire ceci :

Dim rMaPlage As Range, rMaPlage2 As Range

Set rMaPlage = Range("A2:B32")
Set rMaPlage2 = Range("C5:D34")
If DansPlage(Target, rMaPlage) Or DansPlage(Target, rMaPlage2) Then NomDuUserForm.Show

Dans le code du UserForm, ayant le "Selection.Value = ....."
--> selection veut dire 'la cellule sélectionnée'
Messages postés
60
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
22 octobre 2007

Salut,
j'ai essayez d'adapter ta programmation à mon document excel mais impossible
je n'arrive pas à comprendre
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rMaPlage As Range

Set rMaPlage Range("B5:H100") 'ici j'ai en fait 12feuilles janvier à décembre et donc j'ai essayé range ("Janvier!B5:H100") mais marche pas

If DansPlage(Target, rMaPlage) Then Userform1.Show
End Sub

Function DansPlage(plg1, plg2) As Boolean
' *** retournera True si plg1 est contenu dans plg2
DansPlage = False
If plg1.Parent.Parent.Name = plg2.Parent.Parent.Name Then
If plg1.Parent.Name = plg2.Parent.Name Then

If Union(plg1, plg2).Address plg2.Address Then DansPlage True
End If
End If
End Function
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

c'est normal que cela ne fonctionne pas, il faut placer le code (sans le noms de la feuille --> ("<strike>Janvier!</strike>B5:H100") ) dans chaque procédure Worksheet_SelectionChange
de chaque feuille.

Pour être plus précis, dans l'éditeur vb tu double cliques sur la feuille Janvier (en haut à gauche dans le volet Projet) et tu places le code avec la bonne plage de données (donc concernant janvier), et ainsi de suite jusqu'à décembre

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>