Extraction de feuillets Excel

Fermé
Daes75 Messages postés 13 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 14 avril 2015 - 26 févr. 2013 à 12:20
Daes75 Messages postés 13 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 14 avril 2015 - 28 févr. 2013 à 13:41
Bonjour la communauté,

C'est la première fois que je poste un appel à la générosité et au savoir faire de certains pour m'aider à réaliser une certaine manipulation sur Excel. Et je remercie par avance les personnes qui prendront le temps de lire et de répondre à ce post.

Mon problème:

Je travail sur un planning concernant l'emploi du temps de formateurs. L'objectif de ce te tableau est d'avoir une vision assez globale concernant l'emploi du temps de formateurs afin de pouvoir les répartir en fonction des formations demandées. Ce classeur excel est constitué de plusieurs feuilles représentant les semaines. Un classeur Excel représente un trimestre.

Nous avons donc en colonne :
1ere colonne : Nom du formateur
2eme colonne : Lundi
3eme colonne : Mardi
4eme colonne : Mercredi
et ainsi de suite jusqu'à vendredi

En ligne j'ai :
Ligne 1 : formateur 1
Ligne 2: formateur 2
Ligne 3: formateur 3
ainsi de suite...

en feuillets nous avons donc :
1ere feuille : semaine 1
2eme feuille : semaine 2
etc ...

J'ai donc par ligne le planning des différents formateurs.

Exemple : Ligne 3 le formateur 3 travaille jeudi et vendredi.

Mon objectif est de pouvoir extraire les données sur tous les feuillets concernant un seul formateur.
Par exemple ca serait de pouvoir extraire sur un nouveau feuillets (idéalement sur un nouveau classeur) l'emploi du temps du formateur 3 pour chaque semaine. Comment faire pour avoir un résumé du planning d'une seule personne ? L'idéale serait de pouvoir lire la feuille récap comme ca : en ligne sem1, sem2, sem3... et en colonne lundi, mardi,mercredi... et ainsi voir en une seule feuille la totalité de son emploi du temps du trimestre afin de lui envoyer sans qu'il voit le planning des autres.

Si je n'ai pas été assez clair merci de me le préciser.

Merci de votre soutien et j'écoute toutes idées afin de réaliser ce processus.



A voir également:

6 réponses

eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
26 févr. 2013 à 12:52
Bonjour,

Déposer le fichier xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.

eric

0
Daes75 Messages postés 13 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 14 avril 2015
Modifié par Daes75 le 26/02/2013 à 14:18
Bonjour et merci pour votre réponse.

Ci-joint le lien d'un exemple de tableau (je l'ai refait brièvement sans les noms des formateurs).
http://cjoint.com/data/0BAodVKOOi9.htm

Pour récapituler, nous avons
en ligne les noms des formateurs (formateur1...)
en colonne les jours (lundi, mardi...)
et feuille/onglet les semaines (c'est un fichier qui correspond au trimestre) donc environ 12 onglets pour 12 semaines différentes. dans l'exemple je n'ai ai mis que 3.

Le dernier onglet qui me permet de résumer le planning pour un seul formateur sur le trimestre.
Donc si on prend le dernier onglet "recap", il apparaitra par exemple pour le formateur 4 qu'il est à l'endroit A le mardi de la sem1.

Je reste à votre disposition si je ne suis pas clair.
Merci



edit :

l'exemple n'est pas très pertinent car je pourrai le faire manuellement pour chaque formateur mais l'idée serait d'automatiser le processus car le vrai tableau comporte une douzaine d'onglet et une 20 aine de formateurs.
0
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
27 févr. 2013 à 09:44
Bonjour,

https://www.cjoint.com/?CBBjQGdN1wv
Pour la liste déroulante j'utilise la plage nommée en feuille Sem1.
Tu pourrais la mettre dans une feuille Liste masquée.

eric
0
Daes75 Messages postés 13 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 14 avril 2015
27 févr. 2013 à 10:11
Merci beaucoup Eric!

Le problème c'est qu'au bureau j'utilise un mac et lorsque j'ouvre le fichier il me dit que les macros visual basic ne fonctionne pas sur mac office 2008. Du coup je vois tout de même le petit menu déroulant mais lorsque je switch de formateur rien ne bouge.

En tout cas, c'est exactement ce que je désirais d'un point de vue pratique et ergonomie. Le système à l'air très ingénieux.

Le problème c'est que je ne sais pas du tout comment tu as fait ça. Si tu pouvais me décrire le processus sans que ca te dérange et si ça n'est pas trop fastidieux, ca serait génial.
Par contre on est obligé d'utiliser visual basic pour ce genre d'opération ?
0
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
27 févr. 2013 à 10:40
Ben c'est mort pour toi.
Excel 2008 a été livré sans vba et j'ai du mal à imaginer ça par formules.
Pour sortir tes feuilles il faut que tu te trouves un PC avec windows, ou une autre version d'excel sur Mac.

eric
0
Daes75 Messages postés 13 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 14 avril 2015
27 févr. 2013 à 12:01
ok je vais pouvoir trouver çà.
Chez moi j'ai excel 2010 sur pc je vais regarder ca attentivement.
Dernière requête comment puis je regarder "ta programmation" ? Qd j'ouvrirai le fichier chez moi sur pc comment puis je voir comment tu as procédé ? y a un module à ouvrir ?

Encore merci
0
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
Modifié par eriiic le 27/02/2013 à 13:16
Clic-droit sur le nom d'onglet 'Recap' et choisir 'Visualiser le code' :
Private Sub Worksheet_Change(ByVal Target As Range)  
    Dim derlig As Long, lig As Long, erreur As String  
    Dim sh As Worksheet, c As Range  
    If Intersect(Target, [B3]) Is Nothing Then Exit Sub  
    derlig = Cells(Rows.Count, "A").End(xlUp).Row  
    'Application.ScreenUpdating = False  
    Application.EnableEvents = False  
    [B8].Resize(derlig, 5).ClearContents  
    If Target = "" Then Exit Sub  
    For lig = 8 To derlig  
        If LCase(Left(Cells(lig, "A"), 3)) = "sem" Then  
            If existSheet(LCase(Cells(lig, "A"))) Then  
                Set sh = Worksheets(LCase(Cells(lig, "A")))  
                Set c = sh.[A:A].Find([B3], LookIn:=xlValues, lookat:=xlWhole)  
                If Not c Is Nothing Then  
                    c.Offset(, 1).Resize(1, 5).Copy  
                    Cells(lig, "B").PasteSpecial Paste:=xlPasteValues  
                End If  
            Else  
                erreur = erreur & ", " & Cells(lig, "A")  
                Err.Clear  
            End If  
        End If  
    Next lig  
    [B3].Select  
    Application.EnableEvents = True  
    Application.ScreenUpdating = True  
    If Len(erreur) > 0 Then MsgBox "Feuilles " & Mid(erreur, 3) & " non trouvées"  
End Sub  

Sub reinit()  
    Application.EnableEvents = True  
End Sub  

Function existSheet(nomFeuille As String) As Boolean  
    On Error Resume Next  
    existSheet = Sheets(nomFeuille).Index  
End Function

Profites-en pour enlever l'apostrophe devant 'Application.ScreenUpdating = False
Si jamais le code plante les évènements risque de ne plus être détectés. Lancer la macro Réinit dans ce cas (ou fermer et réouvrir le fichier).
Tes noms d'onglet et la liste des semaines doivent correspondre au modèle fourni : commencer par "sem" et être identiques.

eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Daes75 Messages postés 13 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 14 avril 2015
27 févr. 2013 à 14:41
Et bien c'est impressionnant pour un novice comme moi!!

Encore merci d'avoir passé du temps dessus. Très bonne fin de journée.
0
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
27 févr. 2013 à 14:50
règle n°1 : ne pas se laisser impressionner ;-)
0
Daes75 Messages postés 13 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 14 avril 2015
28 févr. 2013 à 12:08
J'ai vérifié chez moi hier soir en rentrant et c'est exactement ce genre de système que je cherchais. Par contre je me demandais si ca arrivait à conserver la mis en forme des cellules initiales et si ca prenait en compte si les cellules sont fusionnées ?

C'est à dire si j'ai une ligne ou j'ai 2 cellules fusionnées (exemple lundi et mardi) est ce que la macro comprend qu'il faut aussi fusionner les deux cellules dans l'onglet récap ? Et si une cellule a un remplissage de couleur, est ce que la macro conserve la couleur dans l'onglet récap ?

Désolé de t'embêter :p
0
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
28 févr. 2013 à 12:36
Bonjour,

Les cellules fusionnées sont une plaie à fuir le plus possible. A réserver pour un titre et c'est tout.
Préférer 'centrer sur plusieurs colonnes' dans le format de cellule.

Sinon tu peux.
Remplacer :
Cells(lig, "B").PasteSpecial Paste:=xlPasteValues
par :
Cells(lig, "B").PasteSpecial Paste:=xlPasteAllExceptBorders

eric
0
Daes75 Messages postés 13 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 14 avril 2015
28 févr. 2013 à 13:41
Encore un grand merci pour ta transmission de savoir!!! :)
0