VBA: macro-planning du personnel par année
Fermé
TeddyF
-
3 janv. 2017 à 11:34
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 15 janv. 2017 à 05:50
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 15 janv. 2017 à 05:50
A voir également:
- VBA: macro-planning du personnel par année
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Vba dépassement de capacité ✓ - Forum Excel
4 réponses
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
7 janv. 2017 à 09:18
7 janv. 2017 à 09:18
Bonjour
Dans la feuille "Macro-planning" en cellule A1, sélectionnez l'année parmi la liste proposée.
Lancez la macro "Importer les périodes"
j'ai renommé la feuille "données" en "données 2016", j'ai créé "données 2017". Pour les années suivantes il suffira de recopier l'année précédente dans une nouvelle et de la renommer "données 2019" , etc ..
https://www.cjoint.com/c/GAhilpWHibw
Cdlt
Dans la feuille "Macro-planning" en cellule A1, sélectionnez l'année parmi la liste proposée.
Lancez la macro "Importer les périodes"
j'ai renommé la feuille "données" en "données 2016", j'ai créé "données 2017". Pour les années suivantes il suffira de recopier l'année précédente dans une nouvelle et de la renommer "données 2019" , etc ..
https://www.cjoint.com/c/GAhilpWHibw
Cdlt
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
9 janv. 2017 à 09:47
9 janv. 2017 à 09:47
Bonjour
Puisque l'accès à cjoint vous est interdit, je vais tacher de l'expliquer;
-Dans la feuille "macro-planning", en cellule A1, créez une liste des années à l'aide d'une "validation de données" de 2016 à 2030 par exemple.
Les feuilles "données" devront s'appeler "données 2016", "données 2017" etc..
Recopier le code ci-dessous à la place du code existant.
Vous n'avez plus qu'à choisir l'année en A1 de la feuille "macro-planning", et cliquer sur le bouton "Importer les données".
Cdlt
Puisque l'accès à cjoint vous est interdit, je vais tacher de l'expliquer;
-Dans la feuille "macro-planning", en cellule A1, créez une liste des années à l'aide d'une "validation de données" de 2016 à 2030 par exemple.
Les feuilles "données" devront s'appeler "données 2016", "données 2017" etc..
Recopier le code ci-dessous à la place du code existant.
Sub PlanningAuditeur() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual On Error GoTo Sortie Set F1 = Sheets("macro-planning") FeuilDonnees = "Données " & F1.[A1] Set F2 = Sheets(FeuilDonnees) F1.Select DerColF1 = F1.[B2].End(xlToRight).Column DerLigF1 = F1.[A10000].End(xlUp).Row DerColF2 = F2.[B2].End(xlToRight).Column DerLigF2 = F2.[A4].End(xlDown).Row Range(Cells(4, 2), Cells(DerLigF1, DerColF1)).Clear ReDim Auditeur(DerColF2 - 1 / 2) As String ReDim Deb(DerLigF2, DerColF2) As String ReDim Fin(DerLigF2, DerColF2) As String ReDim Audit(DerLigF2, DerColF2) As String For c = 2 To DerColF2 Step 2 Auditeur(c / 2) = F2.Cells(1, c) For l = 4 To DerLigF2 If F2.Cells(l, c) <> 0 Then Deb(l, c) = F2.Cells(l, c) Fin(l, c) = F2.Cells(l, c + 1) Audit(l, c) = F2.Cells(l, 1) Set a = F1.Columns("A").Find(Auditeur(c / 2), LookIn:=xlValues) a.Select For i = CInt(Deb(l, c)) To CInt(Fin(l, c)) If F1.Cells(ActiveCell.Row, i + 1) = "" Then F1.Cells(ActiveCell.Row, i + 1) = Audit(l, c) F1.Cells(ActiveCell.Row, i + 1).Interior.ColorIndex = 6 F1.Cells(ActiveCell.Row, i + 1).AddComment F1.Cells(ActiveCell.Row, i + 1).Comment.Visible = False F1.Cells(ActiveCell.Row, i + 1).Comment.Text Text:=Audit(l, c) Else: F1.Cells(ActiveCell.Row, i + 1).Interior.ColorIndex = 3 F1.Cells(ActiveCell.Row, i + 1) = F1.Cells(ActiveCell.Row, i + 1) & Chr(10) & Audit(l, c) F1.Cells(ActiveCell.Row, i + 1).Comment.Text Text:=F1.Cells(ActiveCell.Row, i + 1).Comment.Text & Chr(10) & Audit(l, c) End If With F1.Cells(ActiveCell.Row, i + 1).Comment.Shape .Height = 312# .Width = 425.25 .TextFrame.Characters.Font.Size = 14 .OLEFormat.Object.Font.FontStyle = "Bold" End With Next i End If Next l Next c Range(Cells(1, 1), Cells(DerLigF1 + 1, DerColF1 + 1)).Borders.LineStyle = xlContinuous Range(Cells(4, 2), Cells(DerLigF1, DerColF1)).ClearContents Application.Calculation = xlCalculationAutomatic F1 = Nothing F2 = Nothing Exit Sub Sortie: End Sub
Vous n'avez plus qu'à choisir l'année en A1 de la feuille "macro-planning", et cliquer sur le bouton "Importer les données".
Cdlt
Merci pour ton explication,
Mais je ne peut faire des sheets de données séparées, toutes mes données étant concaténées dans une même feuille.
Je dispose en effet d'une macro qui vient m'alimenter un tableau recap de tous mes audits.
Il faudrait sinon que je change toute ma macro pour me faire un tableau recap par année mais ce n'est pas le but...
Mais d'ailleurs je ne comprend même pas ma macro car normalement elle est censé allé chercher les infos dans une sheet appelé ""planning auditeur" or elle ne figure nul part dans ma macro...
C'est à ni rien comprendre
Mais je ne peut faire des sheets de données séparées, toutes mes données étant concaténées dans une même feuille.
Je dispose en effet d'une macro qui vient m'alimenter un tableau recap de tous mes audits.
Il faudrait sinon que je change toute ma macro pour me faire un tableau recap par année mais ce n'est pas le but...
Mais d'ailleurs je ne comprend même pas ma macro car normalement elle est censé allé chercher les infos dans une sheet appelé ""planning auditeur" or elle ne figure nul part dans ma macro...
C'est à ni rien comprendre
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
15 janv. 2017 à 05:50
15 janv. 2017 à 05:50
Bonjour
Voici avec les années sur la même feuille
https://www.cjoint.com/c/GApeW3t3Jow
A tester
Cdlt
Voici avec les années sur la même feuille
https://www.cjoint.com/c/GApeW3t3Jow
A tester
Cdlt
9 janv. 2017 à 09:02
Merci pour ta réponse !!!
Le problème étant que la feuille donnée comprend uniquement des infos tel que le nom de personnes mais ne contient pas les données relatives au calcul.
Je me rend compte que ca devient compliqué à expliqué quand on ne peut avoir accès au fichier.
De plus je ne peux pas avoir accès a cjoint sur mon poste pour voir tes modifs :/
Mais je pense que je vais tanté de faire une macro qui me permet de sélectionner une année souhaité et d'allé me faire les mêmes actions mais en ne prennant en compte que les lignes pour lesquelles l'année est celle renseigné.
Le problème étant toujours que je ne comprend pas cette macro.
Donc difficile pour exploiter...