Tri

Bonjour tout le monde,

Je viens vers vous pour m'aider à trouver une solution à mon problème et j'espère pouvoir trouver l'aide dont j'ai besoin ici.

J'ai un fichier Excel ou je met l'affectation de tous nos employés jour par jour (voir pièce jointe1)

Exemple:

employee1 ==> Projet 213

employee2 ==> Projet 417

employee3 ==> Projet 413

.........

et à la fin du mois je fait un autre manuellement qui affiche chaque employée à part (voir pièce jointe2)

et ça me prend beaucoup de temps.

Exemple:

employée1 01/03/2015 ==> Projet213

employée1 02/03/2015 ==> Projet213

employée1 03/03/2015 ==> Projet417

Ma question: existe-il une formule automatique avec lequel je peux faire la 2eme Fiche à partir de la 1er.

Merci d'avance pour votre aide et compréhension.

Bonjour,

Est-il nécessaire de faire une feuille par jour dans la pièce jointe N°1.

Perso, je saisirais tout sur la même feuille, et je récapitulerais avec un tableau croisé dynamique.

Il y a sans doute d'autres méthodes. A suivre....

Bonjour,

Est-il nécessaire de faire une feuille par jour dans la pièce jointe N°1.

Perso, je saisirais tout sur la même feuille, et je récapitulerais avec un tableau croisé dynamique.

Il y a sans doute d'autres méthodes. A suivre....

Désolé, message envoyé en double, je ne sais comment le supprimer

Est-il nécessaire de faire une feuille par jour dans la pièce jointe N°1.

Oui, parceque je dois l'envoyer quotidiennement à la Direction Genéral

Mais la la pièce jointe N°2 je dois le faire seulement à la fin du mois.

Bonsoir

En utilisant un filtre sur la date du jour, vous ne pourriez envoyer à la DG que les lignes concernées.

Pour une autre solution, on va attendre d'autres contributions.

Bon courage

Bonsoir

En utilisant un filtre sur la date du jour, vous ne pourriez envoyer à la DG que les lignes concernées.

Pour une autre solution, on va attendre d'autres contributions.

Bon courage

Bonjour et bienvenue sur le forum

ci joint une proposition

a la fin de l’exécution une fenêtre s'ouvre pour demander ou enregistré le nouveau document

restera a mettre a la fin la couleur sur l’entête du nouveau document j'ai eut la flemme de la faire en VBA

pour lancer la macro combinaison de touche : ctr+maj+L

Fred

7pj-1.xlsm (98.04 Ko)

Bonjour Fred et merci pour l'accueil,

Bravo c'est ça exactement que je cherchai, mais pouvez vous

me montrer la méthode comme ça je peux l'utiliser pour d'autre document.

Thanks a lot

Re bonjour

deux possibilités :

1) garder ce fichier source et copier tous les onglets d'un mois dans ce fichier et lancer la macro toujours avec le même raccourci clavier

2) ouvrir le fichier fourni + le fichier de destination

Ouvrir l'editeur VBA (ALT+F11) aller dans le module 1 et le copier dans le nouveau document (drag and drop marche)

capture

enregistrer le nouveau document au format xlsm.

puis attribuer la raccourcis clavier a la macro

capture2

aller sur afficher les macros puis options :

capture3

choisir le raccourci voulu ici j'ai mis ctr + maj + L

capture4

fred

Une petite contribution, mais elle fait double emploi !

Je pars d'un fichierPJ 2.xlsx vierge et je compile les différents onglets dePJ 1.xlsx

Sub compiler()

Const col_deb = 11
Const col_fin = 31
Const lig_deb = 5
Dim classeur As String

ligne = 2

Set wb1 = ThisWorkbook
classeur = "PJ 2.xlsx"
ouvrir classeur
Set wb2 = Workbooks(classeur)
Set ws2 = wb2.Sheets("POB")

For i = 1 To Sheets.Count
    Set ws1 = wb1.Sheets(i)
    ws1.Select
    madate = ws1.Range("A1")
    lig_fin = Range("A" & lig_deb).End(xlDown).Row
    For j = lig_deb To lig_fin
        For K = col_deb To col_fin
            If ws1.Cells(j, K) = 1 Then
                ws2.Cells(ligne, 1) = ws1.Cells(j, 1)
                ws2.Cells(ligne, 2) = ws1.Cells(j, 2)
                ws2.Cells(ligne, 3) = ws1.Cells(j, 3)
                ws2.Cells(ligne, 4) = madate
                ws2.Cells(ligne, 5) = ws1.Cells(3, K)
                ligne = ligne + 1
            End If
        Next K
    Next j
    Set ws1 = Nothing
Next i
Set ws2 = Nothing
Set wb2 = Nothing
Set wb1 = Nothing

End Sub
Sub ouvrir(fichier As String)

    Dim actuel As String

    actuel = ThisWorkbook.Name

    If IsOpen(fichier) = False Then
        Reponse = MsgBox("Ouverture du fichier ""PJ 2.xlsx"" !", vbOKOnly, "Information ...")
        Workbooks.Open Filename:=ThisWorkbook.Path & "\" & fichier
        Windows(actuel).Activate
    End If

End Sub
Function IsOpen(classeur As String) As Boolean

    On Error Resume Next
    IsOpen = Not Workbooks(classeur) Is Nothing
    Err.Clear

End Function
3pj-1.xlsm (88.65 Ko)

bonsoir Steelson

Faut vraiment que je force a utiliser les

Set wb1 = ThisWorkbook

et autre c'est bien plus pratique que de faire allusion au fichier ou la feuille....

fred

reBonsoir Fred,

J'ai opté pour la première possibilité et j'ai copié tous les onglets (31)

et j'ai exécuté le Macro mais elle prend beaucoup de temps , ce n'est

pas encore fini.

Merci Steelson pour la contribution.

re

j'ai repris une idée de steelson

maintenant dans le fichier joint tu clique sur le bouton bleu et tu va choisir le fichier contenant les onglets par jour.

et la suite c'est comme avant, a la fin je demande de choisir l'emplacement et le nom du fichier a enregistré

edit :

c'est normal que cela prenne du temps, en fonction du nombre de jours dans le mois et le nombre de lignes dans chaque jour..... cela va faire un fichier avec quelques centaines (milliers) de lignes....

on peut rajouter si tu veux un message indiquant combien de feuilles ont été traitées ....

je vais peut-être encore modifié le code pour éviter les copy car cela risque de saturer le presse papier et peut etre planter...

fred

Edit2 a tester la V2 pour voir si c'est plus rapide

1compilateurv2.xlsm (21.77 Ko)

fred

4compilateur.xlsm (21.72 Ko)

reBonsoir Fred,

Je l'ai testé ça marche mais le résultat n'est pas exacte 100% par

exemple dans le fichier généré on trouve que ALEX ==> Training

alors que dans le fichier d'origine ALEX ==> Rotation

Thanks

bonsoir

je viens de vérifié en effet cela ne marche pas a tous les coups.... et pour cause je test la dernière colonne vide pour chaque ligne....

et en regardant de plus près le fichier pour la premiere ligne par exemple (Najem,) ma macro me renvoi la colonne 7 (celle de trainning) alors que cela devrait etre non allocated... et en vérifiant il y a une espace dans la cellule G6 du jour 01/03,

je vais modifier la macro pour tester si il y a un 1 dans la cellule et non tester la dernière colonne vide...

je suppose que cela doit arrivé en certain nombre de fois d'ou les erreurs...

fred


ci joint donc une Version 3 qui test la présence du 1 dans la colonne et qui ne récupère plus la dernière colonne non vide... car si il y a une espace c'est considéré comme non vide...

a tester donc

fred

5compilateurv3.xlsm (21.85 Ko)

ça m'affiche:

Erreur d’exécution 1004

Impossible de lire la propriété Match de la classe WorksheetFunction

bizarre chez moi ça marche ....

et je suis sous office 2007

tu as bien essayé avec ton fichier test envoyé plus tot ??? (PJ 1.xlsx ???) ou ton fichier complet ?

fred2406 a écrit :

tu as bien essayé avec ton fichier test envoyé plus tot ??? (PJ 1.xlsx ???) ou ton fichier complet ?

c'était à cause de ça lorsque j'ai utilisé le fichier de test (PJ 1.xlsx ) ça a marché.

Je veux faire des tests et je vous tiens au courant

une idée comme ça

peut être que dans une de tes lignes tu n'as pas de 1, et cela plante certainement la fonction si c'est bien cela on pourra contourner le problème, regarde dans le fichier générer ou il s’arrête...

mais demain soir....

là c'est l'heure d'allé se coucher

bonne soirée

fred

Bonne soirée Fred en tout cas merci infiniment pour ton et ta compréhension

See you

Rechercher des sujets similaires à "tri"