Help excel

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


 


j'ai besoin d'aide pour mes macros


Je voudrais faire des calculs de différence d'heure pour calculer des salaires
en fonction de la semaine
de la nuit
et du week-end
ainsi que du type d'assistance

merci

8 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
[reglement.aspx Voir le règlement de CodeS-SourceS]








<hr size="2" width="100%" />
Prenez un instant pour répondre à ce sondage svp
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
<small>
Coloration syntaxique automatique </small>



Private Declare Function GetWindowLongA Lib "user32" _ 
  ByVal hwnd As Long, ByVal nIndex As Long) As Long 

Private Declare Function SetWindowLongA Lib "user32" _ 
  ByVal hwnd As Long, ByVal nIndex As Long, _ 
  ByVal dwNewLong As Long) As Long 

Private Declare Function FindWindowA Lib "user32" _ 
  ByVal lpClassName As String, ByVal lpWindowName As String) As Long 

    Private Sub cboMois_Change() 
Dim NumeroChoix As Byte, NumeroFeuille As Byte 

NumeroChoix =  Me.cboMois.ListIndex 
NumeroFeuille = NumeroChoix + 1 
Sheets(NumeroFeuille).Select 

LigneAEcrire = Range("Lire_LigneX").Value 
Me.lblDateNico.Caption = Cells(LigneAEcrire, 1).Text & " " & Cells(LigneAEcrire, 2).Text & " " & Me.cboMois.Text 
Me.lbtLieux.SetFocus 
    End Sub 

    Private Sub cbtFermer_Click() 
Unload Me 
    End Sub 

Private Sub cbtOption_Click() 
    Dim AffichageActuelleBouton As String 
AffichageActuelleBouton = Me.cbtOption.Caption 

If AffichageActuelleBouton = "Options >>" Then 
    Me.cbtOption.Caption = "<< Options" 
    Me.CommandButton1.Visible = True 
    Me.CommandButton2.Visible = True 
    Me.CommandButton3.Visible = True 
    Me.CommandButton4.Visible = True 
ElseIf AffichageActuelleBouton = "<< Options" Then 
    Me.cbtOption.Caption = "Options >>" 
    Me.CommandButton1.Visible = False 
    Me.CommandButton2.Visible = False 
    Me.CommandButton3.Visible = False 
    Me.CommandButton4.Visible = False 
End If 

End Sub 

    Private Sub cbtPasser_Click() 
Dim LigneAEcrire As Byte 

LigneAEcrire = Range("Lire_LigneX").Value 
LigneAEcrire = LigneAEcrire + 1 
Range("Lire_LigneX").Value = LigneAEcrire 

Me.lblDateNico.Caption = Cells(LigneAEcrire, 1).Text & " " & Cells(LigneAEcrire, 2).Text & " " & Me.cboMois.Text 
    End Sub 

    Private Sub cbtValider_Click() 
If Me.cboMois.Value = "" Then 
    MsgBox ("Choisi le mois à saisir") 
    Exit Sub 
End If 

Dim LigneAEcrire As Byte 

LigneAEcrire = Range("Lire_LigneX").Value 

Cells(LigneAEcrire, 3).Value = Me.lbtHoraireDebut.Text 
Cells(LigneAEcrire, 4).Value = Me.lbtHoraireFin.Text 
Cells(LigneAEcrire, 5).Value = Me.lbtLieux.Text 

If Me.cbxConges.Value = True Then 
    Me.cbxConges.Value = False 
    Range(Cells(LigneAEcrire, 3), Cells(LigneAEcrire, 14)).Select 
    With Selection.Interior 
        .ColorIndex = 35 
        .Pattern = xlSolid 
    End With 
End If 
If Me.cbxReferent.Value = True Then 
    Me.cbxReferent.Value = False 
    Cells(LigneAEcrire, 15).Value = "Referent" 
End If 

LigneAEcrire = LigneAEcrire + 1 
Range("Lire_LigneX").Value = LigneAEcrire 
Me.lblDateNico.Caption = Cells(LigneAEcrire, 1).Text & " " & Cells(LigneAEcrire, 2).Text & " " & Me.cboMois.Text 
    End Sub 

Private Sub CommandButton1_Click() 
    Call MacrosOngletDonnees.Calcul_Heures_Par_Poste 
End Sub 

Private Sub CommandButton2_Click() 
    Call MacrosOngletDonnees.Colorier_Gris_Jours_Non_Travailles 
End Sub 

Private Sub CommandButton3_Click() 
    Call MacrosOngletDonnees.Colorier_Rouge_Samedi_Dimanche 
End Sub 

Private Sub CommandButton4_Click() 
    Call MacrosOngletDonnees.Calcul_Majorations 
End Sub 

Private Sub CommandButton5_Click() 
Application.Visible = True 

End Sub 

Private Sub lbtLieux_Click() 

End Sub 

Private Sub UserForm_Activate() 
        Dim Horaire As String, HoraireTemp As String 
HoraireTemp =  Format (Time, "hh:mm") 
HeureN  = Mid(HoraireTemp, 1, 2) 
MinuteN =   Mid (HoraireTemp, 4, 2) 
Horaire  = ", " & HeureN & "h" & MinuteN 

Me.Caption =  "Nous sommes le " &  Format (Date, "dddd dd mmmm yyyy") & Horaire 

  Dim hwnd As Long 
  hwnd  = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _ 
    "X", "D") & "Frame", Me.Caption) 
  SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF 

End Sub 

    Private Sub UserForm_Initialize() 
        Dim Horaire As String, HoraireTemp As String 
HoraireTemp =   Format (Time, "hh:mm") 
HeureN  = Mid(HoraireTemp, 1, 2) 
MinuteN =   Mid (HoraireTemp, 4, 2) 
Horaire  = ", " & HeureN & "h" & MinuteN 

Me.Caption =  "Nous sommes le " &  Format (Date, "dddd dd mmmm yyyy") & Horaire 
Me.lbtHoraires.RowSource  = "Liste_Horaires" 
Me.lbtLieux.RowSource = "Liste_Statut" 
Me.cboMois.RowSource = "Liste_Mois" 

y = Sheets("Liste").Range("E20").Text 
z = Sheets("Liste").Range("E21").Text 
DebPoste1 = ActiveSheet.Cells(y, 3).Text 
FinPoste1 = ActiveSheet.Cells(y, 4).Text 
Lieux1 = ActiveSheet.Cells(y, 5).Text 
DebPoste2 = ActiveSheet.Cells(z, 3).Text 
FinPoste2 = ActiveSheet.Cells(z, 4).Text 
Lieux2 = ActiveSheet.Cells(z, 5).Text 

Message1 = DebPoste1 & " / " & FinPoste1 & " => " & Lieux1 
Message2 = DebPoste2 & " / " & FinPoste2 & " => " & Lieux2 

If Lieux1 = "" Then Message1 = "Repos" 
If Lieux2 = "" Then Message2 = "Repos" 

Me.lblToday.Caption = Message1 
Me.lblTomorrow.Caption = Message2 

  Dim hwnd As Long 
  hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _ 
    "X", "D") & "Frame", Me.Caption) 
  SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And &HFFF7FFFF 

    End Sub 

<small>
Coloration syntaxique automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Messages postés
60
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
22 octobre 2007

merci pour votre réponse

mais je fais comment?

merci
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
7
Difficile de faire moins précis comme question :

Bonjour, faut que je fasse un truc, mais si vous pouviez le faire à ma place.
Dis nous déjà ce que tu as fait et on t'aidera à boucher les trous.

Parce que sinon, je réponds aux questions :

Je voudrais faire des calculs de différence d'heure pour calculer des salaires
=> Heure de fin - Heure de début

en fonction de la semaine
=> ?? L'heure est la même quelque soit la semaine (c'est ce qu'on appelle un concept)

de la nuit
=> Sans doute prévoir à un endroit donné les heures de nuit.
Par ex, tu considères que le début de la "nuit" est à 20h, la fin à "07h"
Tu contrôles si les dates de début et de fin sont dans la fourchette ou non, et tu distribues avec une condition (un IF ou un SELECT CASE, voire en formules EXCEL mais je vais me faire taper ^^)

et du week-end
=> Idem, prévoir les jours de week-end (Samedi Dimanche sans doute, mais ça pourrait être dimanche lundi même si le week-end deviendrait plutôt le week-start ?
Et comparer les jours (il y a des fonctions VBA pour ça, mais aussi une formule EXCEL qui ressort un n° de jour, suffit de faire là encore un IF ou un SELECT).

ainsi que du type d'assistance
=> Alors là ... Toi tu sais sans doute de quoi tu causes, mais nous ...

En résumé, sois précis et tu auras une réponse précise.
Soit flou et ...

Molenn

P.S. : A mon avis, la réponse de Mortalino doit pouvoir s'adapter à tes besoins mais : c'est du pur VBA et à te lire, je doute que tu ne maîtrises (ce n'est aucunement une critique : je me débrouilles nettement mieux avec des formules qu'un userform pour ma part ).
On en revient à la même réflexion : avec si peu d'éléments, difficile d'avoir une réponse constructive
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
En fait mon code sert à gérer mon tour de service et les heures majorées.

Si je l'ai posté (et encore, il n'y a qu'une partie) c'est surtout pour montrer qu'il n'y a pas de code tout fait, le code s'adapte suivant PLUSIEURS paramètres qui te sont propres à toi, et qu'un code tout fait n'existe pas.

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

Salut,
merci de l'intéret que vous portez à ma requete.
je pourrais vous envoyer mon fichier excel avec des annotations si vous etes d'accord.
merci
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Pour ma part, non (désolé d'ailleurs, je n'ai pas eu le temps de t'écrire en MP) :

clause 9 du règlement :
On ne demande pas un programme tout fait, on ne demande que de l'aide sur un problème concret.

Si tu veux de l'aide, mets nous le code, et on t'aidera volontier.
(Nous aussi on a du développement à faire, en plus de notre profession).

Bon courage tout de même !
Messages postés
60
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
22 octobre 2007

désolé de ne pas avoir répondu mais je bosais la nuit

je voudrais savoir comment je peut afficher un userform en double cliquant sur une cellule excel
ca c'est un bon début.
merci de votre patience