XL 2016 Automatiser la mise en page d'un planning de travail sous excel (par VBA ?)

neim

XLDnaute Junior
Bonjour à tous,
Je dois automatiser la mise à jour d un planning, actuellement fait à la main (couper/coller…)
Dans la feuille "Données" j ai saisie quelques reseignement dont je me sers pour remplir les effectifs dans la feuille "liste personnel".
J'aimerai qu'une fois la mise à jours des effectifs terminée, en cliquant sur un bouton la mise en page se ferait dans les feuilles "Lundi", "Mardi"…
J'ai fai un exemple de ce qui pourrait etre fait dans la feuille "Lundi"
La mise en page peut être modifier, ce n'est pas un probleme. Les 5 jours de la semaine peuvent aussi être sur le même onglet avec 1 journée par page….
Je ne sais pas ce qui serait le plus simple.
J'ai testé quelques enregistrements de macros qui ne sont pas vraiment satisfaisant
Je demande donc votre aide si vous le voulez bien.
Je vous remercie
 

Pièces jointes

  • test planning.xlsm
    32.2 KB · Affichages: 15

neim

XLDnaute Junior
bien sur, merci de prendre le temps :)

AB : prenom et nom du poste equipe 1 (liste personnel)
EF : prenom et nom du poste equipe 2
cd : prenom et nom de tous les autres horaires

Inserer les effectifs affectés au magasin rouge sous la ligne "ROUGE"...

Redis moi si tu veux plus de precision
merci
 

Pounet95

XLDnaute Occasionnel
Bonsoir,
J'ai fait chauffer l'enregistreur de macro un peu, mes méninges beaucoup plus, et je propose le délire associé.
Je pense avoir compris le problème.
Ne pas hésiter à me dire
 

Pièces jointes

  • test planning version Pounet95.xlsm
    58.2 KB · Affichages: 18

neim

XLDnaute Junior
bonsoir...et merci
Peux tu m expliquer comment cela fonctionne ?
Je vois 4 macros mais un seul bouton dans la feuille donnees.
Est ce que ce bouton active les 4 macros ? Faut il se mettre sur une journee et activer la macro "export jour semaine" ?
 

Pounet95

XLDnaute Occasionnel
Re Bonsoir,
A l'ouverture il y a recalcul des tables pour la validation des données.
Le bouton sert à recalculer les tables en cas de changement.
La feuille liste personnel est activée.
Il suffit de cliquer sur le nom du jour dans la ligne de titre pour exporter les données correspondantes.

Si besoin, je peux commenter plus dans les macros
 

neim

XLDnaute Junior
Merci, je comprend un peu mieux :)
par contre, par exemple : QH Isidore apparait tous les jours, il ne devrait apparaitre que mardi et jeudi ?
Re Bonsoir,
A l'ouverture il y a recalcul des tables pour la validation des données.
Le bouton sert à recalculer les tables en cas de changement.
La feuille liste personnel est activée.
Il suffit de cliquer sur le nom du jour dans la ligne de titre pour exporter les données correspondantes.

Si besoin, je peux commenter plus dans les macros

ghIsidore
 

Pounet95

XLDnaute Occasionnel
Bonjour,
Effectivement, je n'avais pas fait attention à cela. Je corrige
Par contre il y a aussi une chose qui ne fonctionne pas : la recopie des couleurs de la feuille Liste Personnel car associées à une MFC. Apparemment s'il ne s'agit pas d'une couleur "standard", pas de recopie ???
Je vais tenter d'y remédier
 

Pounet95

XLDnaute Occasionnel
Bonsoir,
Corrigé le bug pour les absents ou plage horaire vide.
Pour la recopie des MFC j'ai parcouru le ouaib toute la journée. J'y ai trouvé des tas de codes mais n'ai pas réussi à en faire fonctionner un seul : bug, incompréhension.
Peut-être faudrait-il intégrer le contrat (CDD, CDI, etc) avec les données exportées ???
PJ : version corrigée
 

Pièces jointes

  • test planning version Pounet95.xlsm
    58.1 KB · Affichages: 19

neim

XLDnaute Junior
Bonjour...et un grand merci, ca semble bien fonctionner. Je regarderai plus tard pour les MFC.

Par contre j essai de modifier le fichier pour mettre les noms reel et là, les macro bloquent.

Je change le nom dans tous les onglets.

Ca me surligne en debogage :

Columns("A:F").Select
ligClient = Selection.Find(What:=client, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row + 1

Je dois modifier aussi la macro je suppose ?
 

Pounet95

XLDnaute Occasionnel
Bonsoir,
Non la macro n'a pas besoin d'être modifiée !!!!
Il faut que les noms de la feuille MODELE soient dans la liste des CLIENTS de la feuille DONNEES.
Ne pas oublier de valider les changements de la feuille DONNEES ( bouton MAJ Données Listes)
Ensuite dans la feuille LISTE PERSONNEL changer les noms dans la colonne L ( si beaucoup utiliser Rechercher Remplacer dernier menu en haut à gauche de l'onglet Accueil )
 

Pounet95

XLDnaute Occasionnel
Bonsoir,
La suppression de la colonne HORAIRE impacte la position des colonnes suivantes, donc Lundi, mardi,etc) ainsi que la colonne CLIENT
Pour y remedier, remplacer le code de la feuille liste personnel par celui-ci
1584043084154.png
 

Pounet95

XLDnaute Occasionnel
Le code a disparu ???
Code:
[CODE=vb
]Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim feuille     As String
    Dim colClient   As Integer
    
    If Target.Row <> 8 Then Exit Sub
    'colonne nommée Client
    colClient = Range(Cells(8, 1), Cells(8, 26)).Find(What:="Client", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Column
        
        
    Select Case Target
    Case "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi"
        feuille = Cells(8, Target.Column)
        
        Sheets(feuille).Select
        rep = MsgBox("Effacer les données existantes ,", vbYesNo)
        If rep = vbYes Then
            ActiveSheet.Cells.Select
            Application.CutCopyMode = False
            Selection.Delete Shift:=xlUp
            ActiveSheet.Range("A1").Select
            Sheets("Modèle Jour").Cells.Copy
            Sheets(feuille).Select
            ActiveSheet.Paste
            ActiveSheet.Cells(1, 1) = UCase(feuille)
        End If
        'Export du jour
        Application.ScreenUpdating = False
        Export_Jour_Semaine Target.Column, colClient
        Sheets("liste personnel").Select
    Case Else
    End Select
End Sub
[/CODE]
 

Discussions similaires

Réponses
8
Affichages
495

Statistiques des forums

Discussions
315 096
Messages
2 116 171
Membres
112 676
dernier inscrit
little_b