IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème pour que 12 fichiers actualisent une colonne de tableau située dans un autre fichier Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème pour que 12 fichiers actualisent une colonne de tableau située dans un autre fichier Excel
    Bonjour,

    Mon patron souhaite surveiller les heures que passe chaque collaborateur sur chaque projets.
    Il a donc créé un fichier pour chaque collaborateurs où ils rentrent leurs heures qui s'accumulent dans des synthèses par mois puis dans l'année (sur chaque projet sur lequel ils ont bossés).

    Il a ensuite créé un fichier direction, dans celui-ci, il y a un tableau qui résume tous les projets en cours, le nombre d'heures que l'on est censé effectuer en total sur le projet et le nombre d'heures réellement dépensées.

    Le problème est de lier les synthèses de chaque collaborateurs à la colonne du tableau 'heures dépensées'.

    Il faudra que 12 fichiers collaborateurs mettent à jour cette colonne du tableau.

    Je vous met ci-joint un fichier collaborateur et le fichier direction, (j'ai précisé des indications dans les fichiers et mis en rouge les zones concernées)

    En espérant que quelqu'un puisse m'aider, c'est assez urgent..

    Merci d'avance!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    J'ai une question : tu veux uniquement déplacer les termes "BOUYGUES_RAMBY", "N4D_TECHNIQUE" et "FORMAT_LDS_EASY LANGUES" du fichier exemple que tu as donnés ? Les autres lignes "Suivi technique projet", "Réunion", "Offre commerciale" et "Total général" ne devant pas être déplacé ?


    Est-ce que dans ton fichier destination tu as bien tous les noms que tu veux déplacer ou se peut-il qu'ils y en aient qui ne soient pas présent ?

    Voila le code que je te propose, dont certaines conditions sont à respecter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Sub MoveData()
    Dim cell_ori As Range
    Dim cell_des As Range
    Dim nom(1 To 12) As String
    Dim chemin As String
     
    nom(1) = "fichier collaborateur 1"
    nom(2) = "fichier collaborateur 2"
    'nom(3) =
    'nom(4) =
    'nom(5) =
    'nom(6) =
    'nom(7) =
    'nom(8) =
    'nom(9) =
    'nom(10) =
    'nom(11) =
    'nom(12) =
     
     
    With Worksheets("Feuil1")
     
        For dossier = 1 To 12
            'Set le chemin du dossier d'origine
            chemin = "C:\...\" & nom(dossier) & ".xlsx"
            'Open the destination workbook
            On Error Resume Next
            Set Wk = Workbooks(nom(dossier))
            If Err <> 0 Then
                Err = 0
                'MsgBox "Ce fichier est fermé"
                Workbooks.Open chemin
            Else
                'MsgBox "Ce fichier est ouvert"
            End If
     
            For i = 1 To .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
                Set cell_des = .Range("A1").Offset(i, 0)
                Set cell_ori = Workbooks(nom(dossier)).Worksheets("Feuil1").Range("V:V").Find(cell_des.Value, LookIn:=xlFormulas, lookat:=xlWhole)
     
                If Not cell_ori Is Nothing Then
                    cell_des.Offset(0, 2) = cell_des.Offset(0, 2) + cell_ori.Offset(0, 1)
                End If
     
            Next i
     
            Workbooks(nom(dossier)).Close
        Next dossier
     
    End With
     
     
    End Sub
    1) Il faut que TOUS tes fichiers collaborateurs soient au même endroit. J'entends par là "C:\Users\...\Desktop\" par exemple.
    2) Il faut que TOUS tes fichiers collaborateurs soient du même format. Pour le code que je te propose, je déplace ce que je trouve dans l'onget "Feuil1" (j'imagine que ça sera l'onget synthèse), sur la colonne V (met la colonne sur laquelle sont vraiment situé tes "BOUYGUES_RAMBY", "N4D_TECHNIQUE", "FORMAT_LDS_EASY LANGUES", etc...) et place la donnée qui se trouve à droite de ces cellules (12, 5 et 3 dans l'exemple que tu m'as donné) dans ton fichier "Fichier direction" depuis lequel tu actives ta macro. (/!\ => Ce point est important, mon code doit être executé depuis ton fichier direction /!\)
    3) Je réalise une recherche sur la colonne A de ton fichier direction. Ce qui signifie que si un nom n'est pas présent, il n'ira pas chercher la valeur dans tes fichiers collaborateurs.
    4) Place dans nom(1), nom(2), etc... les noms de tes fichiers collaborateurs qui doivent (je le répète) se trouver tous au même endroit.

    Dernière précision. J'ai fait en sorte que les résultats s'additionnent. Tu appliques deux fois ta macro => tes résultats seront doublés.

    Bref, j'espère que ca marchera pour toi. Tiens moi au courant !

    EDIT : Précisions complémentaires :
    * "With Worksheets("Feuil1")" est l'onglet dans ton fichier direction => à modifier
    * "chemin = "C:\...\" & nom(dossier) & ".xlsx"" est le chemin => place à la place de "C:\...\" l'endoit où se situent tes fichiers collaborateurs
    * "Set cell_ori = Workbooks(nom(dossier)).Worksheets("Feuil1").Range("V:V").Find(cell_des.Value, LookIn:=xlFormulas, lookat:=xlWhole)" est la recherche dans tes fichiers collaborateurs => place à la place de "Worksheets("Feuil1")" l'onglet que tu souhaites (je crois que c'est "synthèse") et corrige la colonne que tu veux à la place de "Range("V:V")"

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour ta réponse!

    Je suis en train de finaliser les fichiers collaborateurs avant de pouvoir enfin commencer la macro, parce que je me suis rendue compte que les synthèses des synthèses moi n'ont pas été faites.
    Du coup je bloque également un peu là dessus car les synthèses sont faites avec des tableaux croisés dynamiques et la synthèse des synthèses mois je n'arrive pas à faire le tableau croisé dynamique, afin qu'il se mette à jour automatiquement.. Est-ce qu'il faudrait également faire une macro, ou c'est un peu plus simple cette fois..?

    Pour ta question, c'est effectivement uniquement le nom des projets qui sont importants et non le nom des activités.
    Et il y aura bien effectivement tous les noms dans le fichier direction, il se peut même qu'il y en ait que le collaborateur n'aura pas dans ses synthèses puisque lui, personnellement ne travaille pas dessus..

    Je vais m'absenter jusqu'au 10 décembre, donc je ne pourrais certainement plus te répondre avant cette date, j'essayerais à nouveau de résoudre ce problème à mon retour.

    En tout cas, je te remercie beaucoup pour ton aide!

Discussions similaires

  1. [XL-2013] Copier cellules en ligne dans une colonne qui se trouve dans un autre classeur
    Par Wushugringo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2015, 09h07
  2. [XL-2003] Sélectionner une liste dans une colonne et la reporter dans un autre fichier
    Par bentor22 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 29/01/2013, 15h22
  3. Réponses: 6
    Dernier message: 29/02/2012, 09h00
  4. [VBA-E] Lancement d'une macro située dans un autre fichier
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 07/09/2006, 17h48
  5. Réponses: 1
    Dernier message: 13/06/2006, 18h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo