Code VBA pour de la gestion d'heure
Bonjour à tous,
Etant assez novice sur Excel et surtout en VBA, je me tourne vers vous pour avoir de l'aide.
Je voudrais créer un Excel où je pointe mes heures de travaille par activité et sous activité. L'idée est de créer une première feuille "Bilan" où je résume toutes les heures effectués et ensuite de créer une feuille par semaine de travail.
Avec l'exemple en pièce jointe. J'ai listé les activités et sous activités dans la colonne A.
Est ce que vous pouvez m'aider a faire les 2 points suivant :
- Dans un premier temps, j'aurai aimé avec le bouton "avancement" de la feuille "Bilan" remplir la colonne C (Nombre d'heure effectué). C'est-a-dire calculer le nombre d'heure passé sur une sous activité sur l'ensemble des semaines. Etant donné que je vais créer de nouvelles feuilles pour les semaines à venir, j'aimerais que le calcul prenne en compte toutes les feuilles.
- Dans un second temps, j'aimerais aussi que le code prenne en compte les activités non listés dans la feuille bilan. Par exemple, à la "semaine 2", ligne 5, j'ai rajouté une activité "Formation" et sous activité "Formation Excel". J'aimerais que le bouton "avancement" rajoute dans la feuille "Bilan" ces nouvelles activité et calcul le nombre d'heure passé dessus a la suite de la ligne 15 "Autres".
N'hésitez pas à me dire s'il y a des choses qui ne sont pas claires.
Merci pour votre aide,
Cordialement,
Bonjour Barclay bienvenu sur le forum !
Voici un code à essayer:
Sub Avancement()
Set original = Sheets(1)
original.Range("C2:C60000").ClearContents
Dim Feuil As Worksheet
For Each Feuil In ActiveWorkbook.Worksheets
If Feuil.Name <> original.Name Then
For i = 2 To Feuil.Cells(Feuil.Rows.Count, 1).End(xlUp).Row
activite = Feuil.Range("B" & i)
heures = Feuil.Range("I" & i)
For j = 2 To original.Cells(original.Rows.Count, 1).End(xlUp).Row
If original.Range("B" & j) = activite Then
original.Range("C" & j) = original.Range("C" & j) + heures
Exit For
End If
If original.Range("A" & j) = "Autres" Then original.Range("C" & j) = original.Range("C" & j) + heures
Next j
Next i
End If
Next Feuil
End SubPour que le code détecte les sous activités il faut les retranscrire à la lettre !
Dans l'onglet semaine 1 tu as marqué "Omage" au lieu de "Omega"
Pour le bon fonctionnement du programme, attention de bien laisser l'Activité "Autres" à la fin du tableau.
A+
Bonjour Gabon,
Merci beaucoup pour ta réponse. J'ai réussi à l'appliquer à mes activités.
Par contre j'ai remarqué deux choses.
*J'ai plusieurs sous activités "Qualification" dans des activités différentes. J'ai remarqué que ton code additionnait le temps mais les regroupait dans la sous la première activité. J'ai modifié l'exemple pour l'illustrer (voir feuille 3). J'ai pas réussi a ajouter une condition dans le code pour prendre ça en compte. Est ce que tu peux encore m'aider ?
*Pour les activités non listés, est ce que tu pense qu'il serait possible d'ajouter a la suite de "autres" feuille "bilan" les activités non listés?
Par exemple qu'a la suite de "autres" feuille '"Bilan", on retrouve une liste :
Colonne A -> Formation // colonne B-> Formation excel // Colonne C ->18h
->Visite client -> Visite client A ->1h
Merci par avance,
Bonjour Barclay,
Voici le nouveau fichier avec le code modifier.
Malheuresement pour que cela fonctionne j'ai du supprimer la fusion des cellules en colonne A j'espère que cela n'est pas génant...
J'attend ton retour !
A+
Salut Gabin,
Merci pour ton aide. Je suis très pris par le boulot la semaine prochain. Je pourrais que tester ton code fin de semaine prochaine.
Merci,