Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Releve d'heure et affectation

  • Initiateur de la discussion Initiateur de la discussion xhudi69
  • 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 !

xhudi69

XLDnaute Accro
Bonjour le FORUM

dans le fichier joint, sur la feuille FORMULAIRE, je peux actuellement affecter un temps pour une affaire et ranger les données dans l'onglet AFFAIRES.
j'aimerais aussi saisir le nom de la personne pour que son temps soit inscrit en onglet HORAIRES à la bonne date.
Si cette personne passe du temps sur une autre affaire le même jour, son temps s'additionnera automatiquement en feuille HORAIRE.

ex: CELINE + affaire LMD365 + 0:45 le 16 Mars 2012
CELINE + affaire TGL211 + 0:30 le 16 Mars 2012

Merci à tous pour le temps passé.
 

Pièces jointes

Re : Releve d'heure et affectation

Bonjour ROBERT,
ravi de te revoir et encore merci, vous m'avez bien aidé par le passé avec MAPOMME pour une appli indus qui est sur le point d'être terminée.
une fois de plus ton fichier est exellent et tu es allé plus loin que je ne l'espérais.
tes commentaires me seraient très utiles et instructifs, mais je ne les aie pas vu ou j'ai égaré mes lunettes 😀

comment faire pour ramener le bouton formulaire vers le centre de la feuille et éclaircir et ajouter de la couleur dans le userform, je n'ai jamais utilisé ceux-ci?

dernière question, je voudrais sur une autre feuille pouvoir faire des recherche récapitulatives sur chaque affaire en temps ou en occupation ressources, il me suffit d'un petit exemple en VBA que je pourrais étudié et appliqué pour d'autres recherches.
cela m'aiderais pour d'autres fichiers BDD ou je fonctionne q'avec les en-têtes de colonne (bien pratique).

merci à toi et bravo pour ton travail.
 
Re : Releve d'heure et affectation

Bonjour Xhudi, bonjour le forum,

[Alt]+[F11] pour ouvrir Visual Basic Editor. J'ai mis du code dans :
• le composant Feuil1 (FORMULAIRE)
Code:
Private Sub CommandButton1_Click() 'bouton "Formulaire"
Range("A1").Select 'enlève le focus au bouton
li = 0 'réinitialise la variable publique li
UserForm1.Show
End Sub
• le composant ThisWorkbook
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) 'à l'activation d'un onglet
If li = 0 Then Exit Sub 'si li = 0 sort de la procédure
If Sh.Name = "QUI_QUOI" Or Sh.Name = "HORAIRES" Then 'condition : 'si le nom de l'onglet est "QUI-QUOI" ou "HORAIRES"
    ActiveWindow.ScrollRow = li 'place la ligne li en haut de la fenêtre
    Sh.Cells(li, 1).Activate 'active la cellule de la colonne A
End If 'fin de la condition
End Sub
• la feuille UserForm1
Code:
Option Explicit 'oblige à déclarer toutes le variables

Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Me.TextBox1.Value = Format(Date, "dd/mm/yyyy") 'affiche la date du jour dans la TextBox1
With Sheets("RESSOURCES") 'prend en compte l'onglet "RESSOURCES"
    Me.ComboBox1.List = .Range(.Cells(2, 1), .Cells(Application.Rows.Count, 1).End(xlUp)).Value 'alimentation dynamique de la ComboBox1
    Me.ComboBox3.List = .Range(.Cells(2, 2), .Cells(Application.Rows.Count, 2).End(xlUp)).Value 'alimentation dynamique de la ComboBox3
End With 'fin de la prise en compte de l'onglet "RESSOURCES"
With Sheets("AFFAIRES") 'prend en compte l'onglet "AFFAIRES"
    'alimentation dynamique de la ComboBox2
    Me.ComboBox2.List = Application.WorksheetFunction.Transpose(.Range(.Cells(1, 1), .Cells(1, Application.Columns.Count).End(xlToLeft)))
End With 'fin de la prise en compte de l'onglet "AFFAIRES"
End Sub

Private Sub CommandButton1_Click() 'bouton "Date"
UserForm1.Hide 'masque l'UserForm "Formulaire"
UserForm2.Show 'affiche l'UserFrom "Calendier"
End Sub

Private Sub CommandButton2_Click() 'bouton "Valider"
Dim i As Byte 'déclare la variable i (Incrément)
Dim ca As Byte 'déclare la variable ca (Colonne Affaires)
'Dim li As Integer 'déclare la varaible li (Ligne) - li est déclarée publique dans le module 1 (Voir ThisWorkbook/SheatActivate)
Dim col As Byte 'déclare la variable col (COLonne)
Dim tc As Date 'déclare la variable tc (Temps de la Cellule)
Dim tf As Date 'déclare la variable tc (Temps du Formulaire)
'test sur le renseignement du formulaire
If Me.TextBox1.Value = "" Then 'condition : si la date n'est pas renseignée
    MsgBox "Vous devez indiquer la date ! " 'message
    Me.TextBox1.SetFocus 'aplce le curseur dans la TextBox1
    Exit Sub 'sort de la procédure
End If 'fin de la condition
For i = 1 To 3 'boucle sur les 3 ComboBoxes
    If Me.Controls("ComboBox" & i).Value = "" Then 'condition : si la ComboBox n'est pas renseignée
        MsgBox "Vous devez renseigner le champ '" & Split(Me.Controls("Label" & i + 1).Caption, " ", -1)(0) & "' !" 'message
        Me.Controls("ComboBox" & i).SetFocus 'place le curseur dans la Combobox
        Exit Sub 'sort de la procédure
    End If 'fin de la condition
Next i 'prochaine ComboBox de la boucle
ca = Me.ComboBox2.ListIndex + 1 'définit la colonne des affaires
With Sheets("AFFAIRES") 'prend en compte l'onglet "AFFAIRES"
    'place le temps dans la première ligne vide de la colonne de l'affaire correspondante
    .Cells(Application.Rows.Count, ca).End(xlUp).Offset(1, 0).Value = Me.ComboBox3.Value
End With 'fin de la prise en compte de l'onglet "AFFAIRES"
col = Me.ComboBox1.ListIndex + 2
With Sheets("QUI_QUOI") 'prend en compte l'onglet "QUI_QUOI"
    li = .Columns(1).Find(CDate(Me.TextBox1.Value), , xlFormulas, xlWhole).Row
    'place l'affaire (concatène) à l'intersection de la date et du nom
    .Cells(li, col) = IIf(.Cells(li, col).Value = "", Me.ComboBox2.Value, .Cells(li, col).Value & "/" & Me.ComboBox2.Value)
End With 'fin de la prise en compte de l'onglet "QUI-QUOI"
With Sheets("HORAIRES") 'prend en compte l'onglet "HORAIRES"
    If .Cells(li, col).Value = "" Then 'condition : si la cellule est vide
        .Cells(li, col).Value = Me.ComboBox3.Value 'place le temps dans la cellule
    Else 'sinon
        tc = Format(CDate(.Cells(li, col).Value), "hh:mm") 'définit le temps de la cellule
        tf = Format(CDate(Me.ComboBox3.Value), "hh:mm") 'définit le temps du formulaire
        .Cells(li, col).Value = Format(tc + tf, "hh:mm") 'place la somme des temps dans la cellule
    End If 'fin de la condition
End With 'fin de la prise en compte de l'onglet "HORAIRES"
Unload Me 'vide et ferme l'UserForm "Formulaire
End Sub

Private Sub CommandButton3_Click()
End 'arrête tous les code
End Sub
• dans la feuille UserForm2
Code:
Private Sub Calendar1_Click()
UserForm1.TextBox1.Value = Me.Calendar1.Value
Unload Me
UserForm1.Show
End Sub
• et dans le module Module1 (j'ai modifié le code déjà existant)
Code:
Public li As Integer 'déclare la variable li

Sub AjoutRessource()
Dim rgCol As Range
With Worksheets("RESSOURCES")
    Set rgCol = Nothing
    Set rgCol = .Columns(1).Find(UCase(Range("E7").Value), .Cells(1, 1), xlValues, xlWhole)
    If Not rgCol Is Nothing Then
        MsgBox "LA RESSOURCE ' " & Range("E7").Value & " ' EXISTE DEJA."
     Else
        .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = UCase(Range("E7").Value)
    End If
    Range("E7").ClearContents
End With
End Sub
Pour déplacer le bouton il te faut afficher la barre d'outil Boîte à outils Contrôles. Là, tu cliques sur le premier boluton de la barre pour passer en Mode Création. Tu peux désormais déplacer le bouton sans lancer le code qui l'accompagne. Pense à recliquer sur le premier bouton de la barre d'outils Boîte à outils Contrôles pour sortir du Mode création.
Pour les couleurs, clique sur l'élément et regarde la propriété BackColor et, en fonction de l'élément sélectionné, la propriété BackStyle.
Pour le reste je regarde ce que je peux faire...
 
Re : Releve d'heure et affectation

bonsoir le forum,
grace à MAPOMME, ROBERT et bien d'autres que je salue, mon petit log de prod évolue, il me reste 2 bricoles.
En feuille ADMIN, je voudrais mettre en E11 le N° d'affaire et appuyer sur GO et avoir en E13 le temps cumulé qui se trouve sur la ligne 2 de l'onglet AFFAIRES.
Puis mettre en E17 le N° d'affaire et appuyer sur GO et avoir en E19:E39 le nom des ressources ayant participées.
ce log me permettrais de suivre en direct l'évolution des affaires, la recherche en feuille ADMIN est primordiale car il y aura plus de 3000 affaires sur l'année.

un grand merci à vous.
 

Pièces jointes

Re : Releve d'heure et affectation

Bonjour, le forum
pour parfaire mon petit log, il me manque un élément,
avec le formulaire de l'onglet du même nom, il faut aussi renseigner l'onglet QUI_QUAND, pour savoir le temps passé pour une ressource sur une affaire, et une personne peut travailler en fractionné sur la même affaire, donc pouvoir additionner les temps.j'ai essayé avec les macros de ROBERT (que je remercie), mais je me suis ramassé 🙁

puis je ferais une recherche en onglet ADMIN (en mettant le N° d'affaire en E17) j'aurais les ressources ayant participés en G19:G33 puis leur temps respectif en regard.

Merci pour votre travail.
 

Pièces jointes

Re : Releve d'heure et affectation

Bonsoir le forum,

j'ai lu dans un autre fil que ROBERT n'avait pas pris le melon, mais là c'est moi qui me prends la courge à analyser les excel-lentes macro qu'il m'a fait. grace à lui et à HAONV mon petit log de prod serait très bien tel qu'il est, mais je n'arrive pas à intercaler une macro pour remplir l'onglet QUI_QUAND, ce fichier fonctionne en abscisse/ordonnée et je n'ai pas vu sur le forum des exemples que je pourrais étudier.
merci pour votre aide.
 
Re : Releve d'heure et affectation

Bonjour, Robert, le forum,

j'ai lu deci-delà sur le forum que tu avais énooormement d'humour (notament le fichier du LOTO, à quand le prochain opus ?), je te joint mon fichier, savament remanié par HAONV au niveau des formules, pourrais-tu me dire comment faire pour transformer l'onglet ADMIN en USERFORM, peut-on traduire des formules en macro ?.
autre question: dans mon entreprise je voudrais mettre ce fichier sous serveur pour que quelques personnes puisse y accéder, es-ce possible? (si tu pouvais penser à ma petite macro supplémentaire pour l'onglet QUI_QUAND...)

un grand merci à toi.
 

Pièces jointes

Re : Releve d'heure et affectation

Bonsoir le FORUM

Un grand merci à ROBERT, qui au travers de ces codes VBA, m'a appris à terminer mon log de prod.
au début je ne savais même pas ce que c'était une variable (en vba) de plus publique (je croyait que c'était une de ces dames.....), mais à force de me taper la tête contre le radiateur, j'ai finis par trouver à toute vapeur, moi qui n'y connaissais rien.
Alors voilà, en pièce jointe le petit log de prod, à qui il pourra servir.

les macros sont en grande partie de ROBERT
les formules sont en grande partie de HAONV
le reste est de moi et du net
merci à vous tous.
 

Pièces jointes

- 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

L
Réponses
10
Affichages
2 K
lumat83
L
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…