Gestion du temps de travail

langa68

XLDnaute Junior
Bonjour,
Je suis en plein projet de gestion de temps de travail.
J’aimerais à l’aide d’un bouton multiplier les feuilles de calcul comme suggéré dans l’exemple ci-joint.
Les feuilles devront comprendre chacune 3 semaine et la date devra s’ajuster automatiquement.
Les onglets devront se nommer automatiquement d’après la cellule M1.
Pour moi ceci est impossible à réaliser. Je n’ai pas assez de connaissances. Mais j’espère y parvenir avec votre aide.
Pour une meilleure compréhension il serait pour moi intéressant que les différentes fonctions soient commentées.
Je remercie d’avance la ou les personnes qui trouveront le temps de s’occuper de mon problème.
langa68
 

Pièces jointes

  • Gestion du temps de travail.xlsm
    41.6 KB · Affichages: 79

CHALET53

XLDnaute Barbatruc
Re : Gestion du temps de travail

Bonjour,

Un essai
J'ai un peu modifié ta présentation pour :
Inscrire en colonne A : Semaine
En colonne B : le numéro de la semaine
Je calcule les dates à partir du numéro de semaine (du lundi au Dimanche) Regarde la formule en B6 par exemple

Le numéro de semaine saisi fait l'objet d'un contrôle : s'il existe sur une feuille : rejet

Il faut sûrement encore des contrôles

a+
 

Pièces jointes

  • langa68.xlsm
    58.7 KB · Affichages: 100
Dernière édition:

langa68

XLDnaute Junior
Re : Gestion du temps de travail

Merci encore Chalet53

J'ai adapté ton fichier au mien. Cela marche au poil.
Je pense que j'ai réussit plus ou moins à déchiffrer le macro. (Voir le fichier joint).

Cependant j'ai encore quelques questions:
Je ne comprends pas
- La boucle For Each de la ligne 9
- La boucle For Next de la ligne 12 (pourquoi les valeurs 13, 29 et 8)
- J'ai fait avec l'outil enregistrer une macro une petite macro me permettant une mise en page de ma feuille. Comment faire pour l'intégrer dans le code ci dessus??

J'aimerais aussi me lancer dans le VBA, pourrais-tu me conseiller pour l'achat de livres traitant le sujet??

Merci encore pour le temps que tu a pris pour m'aider

langa68
 

Pièces jointes

  • Macro Langa68.docx
    19.7 KB · Affichages: 71

CHALET53

XLDnaute Barbatruc
Re : Gestion du temps de travail

Bonjour

Boucle : For Each ....Next
Je veux m'assurer que le n° de semaine que tu as saisi n'est pas déjà présent dans une feuille. D'ailleurs si tu as essayé de saisir une semaine existante, tu as un message.
For Each sh In ActiveWorkbook.Sheets : j'analyse toutes les feuilles du fichier (sauf la feuille Menu)

A l'intérieur de cette boucle, une autre boucle sur chaque feuille analysée : For i = 13 To 29 Step 8
13 est la ligne sur laquelle se trouve la première semaine (1ère colonne : semaine et deuxième colonne : N° de semaine). Je compare ce dernier au n° saisie dans le userform : s'il est identique Refus
Step 8 : on trouve ces infos dans chaque feuille toutes les 8 lignes (donc la boucle doit sauter 8 lignes pour accéder à l'info suivante: et ainsi contrôler si le n° de semaine n'est pas égal à celui saisi dans le userform

29 : c'est la dernière ligne de la feuille

Important : ne pas insérer de lignes dans la feuille sinon Problème (nécessité de modifier le programme)

Si tu veux lancer ta macro à partir de celle-ci : sans juste derrière Unload Me, tu inscris : Call suivi du nom de ta macro

Les cours de VBA : Sans doute 75% de ce que je sais faire, je l'ai appris sur ce site. Je te joins deux fichiers à partir desquels j'avais fait 3 jours de formation à des débutants pour initiation

a+
 

Pièces jointes

  • INITIATION VBA.zip
    18 KB · Affichages: 56
  • INSTRUCTIONS ET OBJETS LES PLUS UTILISES.xls
    47.5 KB · Affichages: 107

langa68

XLDnaute Junior
Re : Gestion du temps de travail

Salut Chalet53,
C'est encore moi.

J'ai bien avancé dans mon projet, mais j'ai encore un "petit problème" quant aux macros.
J'ai rattaché plusieurs petites macros à ton code :
Call Oter_protection - Ote la protection de la feuille
Call Accueil - Formate les cellules
Call Affichage - Regle les diff. Paramètres (Titres, zoom etc.)
Call Mise_en_page - Regle la mise en page
Call Cacher_les_formules - Cache les formules
Call Validation_des_données - Paramètre la valeur des données
Call Protection - Remet la protection
Lorsque j’appelle ton code tout fonctionne à merveille. Sauf que dans la première feuille les formules ne sont plus protégées. (Dans les suivantes elles le sont).
Pourras-tu me dire ce que je dois faire pour pouvoir protéger les formules de ma première feuille. La cerise sur le gâteau serait de pouvoir protéger les feuilles contre l’effacement.
Je te joins mon fichier. (Il est en allemand, mais ça ne doit pas poser de problèmes pour le fonctionnement).

Merci.

Langa68
 

Pièces jointes

  • langa68 test02_02_13.xlsm
    52.5 KB · Affichages: 86

CHALET53

XLDnaute Barbatruc
Re : Gestion du temps de travail

Re,

je ne vois pas le problème : un moyen de le contourner en modifiant comme suit tes deux programmes :

Déprotection

Sub Oter_protection()
'
' Oter_protection Macro
'
For Each sh In ActiveWorkbook.Sheets
'
a = sh.Name
Sheets(a).Activate
ActiveSheet.Unprotect
Next
End Sub

Protection

Sub Protection()
'
' Protection Macro
'
For Each sh In ActiveWorkbook.Sheets
'
a = sh.Name
Sheets(a).Activate
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True

Next
End Sub


Que veux-tu faire exactement avec la cerise sur le gâteau ?

a+
 

langa68

XLDnaute Junior
Re : Gestion du temps de travail

Merci pour ton aide,


En fait, ce que je voudrais faire c’est une première feuille ou il est impossible de changer les formules, puis faire une deuxième feuille ou il est également impossible de changer les formules et ainsi de suite…
Si je protège la première feuille ma Macro ne fonctionne plus, si j’enlève la protection, mes formules peuvent être effacées. Pourras-tu m’indiquer une solution ?
Mais j’ai peur d’abuser de ta patience

Langa68
 

CHALET53

XLDnaute Barbatruc
Re : Gestion du temps de travail

Re,

pourquoi ne pas protéger ta feuille à l'exception des cellules dans lesquelles tu autorises l'intervention (comme je l'ai fait dans le petit exemple que je te joins (mot de passe: toto)
Les cellules déprotégées correspondent aux cellules C6:D28 , G6:H28, K6:L28 de la feuille (A généraliser)
Quand tu recopies la feuille témoin, tu déprotèges au préalable et tu re protèges à la fin

A+

les 2 points sont remplacés par un smiley !!!!!!
 

Pièces jointes

  • langabis.xlsm
    15.5 KB · Affichages: 63

langa68

XLDnaute Junior
Re : Gestion du temps de travail

Salut Chalet 53,

C'est encore moi.
Pourrai tu m'expliquer un peu la formule que tu a mis dans les cellules B6 à B12. En particulier le 4 de la formule suivante DATE($A$1;1;4)-JOURSEM(DATE($A$1;1;4);2)+1+7*(B$13-1)
 

CHALET53

XLDnaute Barbatruc
Re : Gestion du temps de travail

bonjour,

je repasse par là (par hasard)

c'est pour retrouver le 4 Janvier de l'année : ceci permet de retrouver la semaine 1 d'une année (selon que le 1er janvier tombe avant un jeudi (4ème jour de la semaine) ou après un mercredi : le numéro de la semaine où se situe le 1er janvier est 53 ou 1)

DATE($A$1;1;4) = 4 Janvier (de l'année en A1)

JOURSEM(DATE($A$1;1;4);2) : donne le jour de la semaine correspondant au 04/01/201X si la semaine commence un lundi. Le 2 signifie que la semaine commence un lundi

+1 : si je cherche un lundi (+2 si je cherche un mardi ....)

7*(B$13-1) : nombre de jours pour les semaines écoulées
Décompose la formule (comme ci-dessus) en 3 ou 4 cellules et rassemble-les ensuite, tu comprendras plus facilement

A+
 

Discussions similaires

Réponses
19
Affichages
4 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 922
Messages
2 093 644
Membres
105 774
dernier inscrit
Tibenjah