Macro récupération de noms de dossiers
Bonjour,
J'ai mis en place, l'an passé grâce à Yvouille, un fichier recap de l'ensemble des calendrier de congés des salariés.
Je dois renseigner à la main le nom de l'équipe et le nom de la personne de la même manière que la rédaction du nom de dossier afin que la macro fonctionne et qu'elle ailles chercher le fichier avec le bon chemin.
Je me demande si il ne serait pas possible de renseigner les noms avec une macro directement depuis les dossiers équipe afin de ne pas avoir d'écart d'orthographe de rédaction des noms des personnes.
Le chemin est E:\DOC SERVICES\Equipe A\Nom1 prénom1
J'ai quatre équipes et environ vingt personnes par équipes.
Serait-il possible de renseigner en colonne A depuis A3 : Equipe A autant de fois qu'il y a de nom et en colonne B depuis B3 Nom 1 Prénom 1
Une fois l'équipe A terminée, la même pour équipe B à la suite sans ligne vide en colonnes A et B
En boucle jusqu'à ce que tout les noms soient reportés dans le fichier !!!
Ce qui devrait donner comme ci-dessous.
En voilà une question qu'elle est bonne
Je ne sais pas si je suis clair dans ma demande, je ne sais pas si c'est réalisable... Je tente !
Bonne année à toutes et à tous !
Cordialement,
Leakim
Salut Leakim et bonne année à toi aussi
Merci de citer tes sources, c'est bien sympa.
J'ai été revoir notre discussion "Mise a jour d'un fichier multi sources", mais je ne sais pas si c'est de cette discussion dont tu parles ou non.
Dans tous les cas il me semble que ta demande n'est pas très claire et il vaudrait mieux nous fournir un fichier exemple ou ton fichier réel plutôt qu'une image.
Comment pouvons-nous savoir quand se termine l'équipe A ?
Mais très certainementleakim a écrit :je ne sais pas si c'est réalisable
A te relire.
Bonjour Yvouille,
Yvouille a écrit :Merci de citer tes sources, c'est bien sympa.
C'est normal !!! mais c'est pas forcément pour te mettre dans l’embarras
Tu as bien remis la main sur le bon post.
Je te joins le doc. Je l'ai mis à jour une fois, pour récupérer les données des collègues et cela fonctionne toujours aussi bien, même si tu pourras constater que j'ai inclus une variable de plus: le nom de l'équipe.
Ce qui me permet d'avoir une recap globale de toutes les équipes sur un seul document plutôt qu'un doc pour chacune des équipes.
La question de savoir comment ou quand se termine l'équipe ? reste entière...
Merci pour ton encouragement,
Cordialement,
Leakim
Re,
J’étais très sincère lorsque je te remerciais de citer tes sources, ça ne me met absolument pas dans l’embarras
Tu indiques le nom d’un chemin (E:\DOC SERVICES\Equipe A\Nom1 prénom1) mais dans ton fichier exemple tu as une feuille ‘données’, alors je ne suis pas certain d’avoir bien compris ton besoin.
Donc d’après ce que j’ai compris, tu as une liste de base (sur ta feuille ‘données’, colonnes F et G ??? donc le chemin est inutile ???) et tu désires reporter ces données sur la feuille ‘RECAP’, dès la ligne 6 ???? Ou dès la ligne 4 comme sur l’image de ton premier message ?????
Et puis ce transfert tu veux le faire à quels moments ? Une fois par année, à chaque déclenchement d’une macro (laquelle ??) ???
Actuellement, tu as des formules sur ta plage A6:B46 de ta feuille RECAP’. Si c’est bien sur cette plage que tu voudrais automatiser quoi que ce soit, en quoi cette solution ne te convient pas ?
La difficulté pour réaliser un tel travail n’est pas la macro à réaliser en elle-même, mais de se comprendre. Essaie alors d’être exact dans tes explications, précise à chaque fois de quel fichier, de quelle feuille, de quelle plage, de quelle cellule, de quelle macro tu parles.
A te relire.
Bonjour,
Ok, je me doutais bien que cela aller demander un peu de clarté.
Oui, dans les colonnes A et B de l'onglet recap il y a une formule, je l'ai mise pour construire l'exemple. Elle ne me convient pas car que ce soit sur un onglet ou sur l'autre il me faut être très vigilant à la rédaction des noms.
Dans les colonnes A et B à partir de la ligne 6 (tu as raison) il ne devrait il avoir que le nom de l'équipe et l'identité de la personne, importé par macro, donc sans formules.
L'idée est que cette macro ce lance à l'ouverture de la feuille. De sorte que la liste des noms soit renseignée à chaque fois, que j'utilise le document.
La macro va dans le dossier E:\DOCS SERVICES\ trouve le nom d'une équipe puis ouvre ce dossier et copie de nom de chaque dossiers. Les dossiers portant le noms et prénoms des personnes.
Une fois la liste faite elle ferme le dossier équipe A et ouvre équipe suivante, une fois les dossiers équipe suivant et ouvre elle copie le noms des dossiers.
J'aimerai pouvoir faire ceci en raison des changements de nom dans les équipes. Lorsqu'un nouveau salarié arrive il me faut créer une bonne dizaine de dossier à son nom, alors si dans ce fichier je pouvais me dispenser de le faire à nouveau ... Cela m'éviterait une nouvelle source d'erreur et m'assurerait le bon fonctionnement de la macro d'importation.
Si tu as d'autres questions n'hésites pas .
Cordialement,
Leakim
Afin de ne pas construire ma macro sur du vent, il me faudrait alors un fichier modèle de l’un de ces fichiers à visiter afin de voir quel est leur nom, combien de feuilles ils comportent, quel est le nom de la feuille sur laquelle se trouvent les informations à relever, quelle est la plage sur laquelle se trouve ces informations, etc.
De plus peux-tu déjà me dire si ces fichiers à visiter sont dans le même dossier que le fichier dans lequel se trouve le fichier ‘Planning 2014.xlsm’ (ou autrement demandé, est-ce que le fichier Planning 2014.xlsm se trouve également au bout du chemin ‘E:\DOCS SERVICES\’) ?
Mais également est-ce que dans le dossier où se trouvent les fichiers à visiter se trouvent d’autres fichiers à ne pas visiter ?
A te relire.
Re,
Comme une photo vaut mille mots ...
Donc, je vais tenter de le dire autrement, j'aimerai importer arborescence du dossier, de chaque équipe.
Le document final étant traité par la macro d'importation. A mon sens, mais je peux me tromper, pas besoin du doc final...
En espérant que cela éclaire tes lumières
Merci, de ta sollicitude.
Leakim
Ok, je crois que je commence à comprendre.
Tu as au bout du chemin E:\DOCS SERVICES\ 4 dossiers dont les titres sont des noms d’équipes. Dans chacun de ces dossiers tu as plusieurs sous-dossiers dont les titres sont les noms des collaborateurs de cette équipe – sous-dossiers que tu voudrais répertorier - et dans ces sous-dossiers aux noms des collaborateurs tu as des fichiers Excel qui ne nous intéressent pas pour ce travail. Est-ce bien ça ?
Si oui, quelques questions quand même, puisque tes images ne sont pas si nettes : Chaque dossier d’équipe à visiter commence bien par le mot ‘Equipe’ et aucun dossier à ce chemin - et à ne pas visiter - ne comporte le mot ‘Equipe’ en premier ?
Chaque dossier d’équipe ne comporte que des sous-dossiers aux noms des collaborateurs et aucun sous-dossier dans un dossier d’équipe doit être ignoré ?
Je crois que suite à ces dernières réponses, je vais vraiment pouvoir te présenter quelque chose qui correspondra à tes besoins.
A te relire.
Re,
Yvouille a écrit :Tu as au bout du chemin E:\DOCS SERVICES\ 4 dossiers dont les titres sont des noms d’équipes. Dans chacun de ces dossiers tu as plusieurs sous-dossiers dont les titres sont les noms des collaborateurs de cette équipe – sous-dossiers que tu voudrais répertorier - et dans ces sous-dossiers aux noms des collaborateurs tu as des fichiers Excel qui ne nous intéressent pas pour ce travail. Est-ce bien ça ?
Oui c'est tout à fait çà.
Yvouille a écrit :Si oui, quelques questions quand même, puisque tes images ne sont pas si nettes : Chaque dossier d’équipe à visiter commence bien par le mot ‘Equipe’ et aucun dossier à ce chemin - et à ne pas visiter - ne comporte le mot ‘Equipe’ en premier ?
Exactement !
Yvouille a écrit :Chaque dossier d’équipe ne comporte que des sous-dossiers aux noms des collaborateurs et aucun sous-dossier dans un dossier d’équipe doit être ignoré ?
C'est çà.
Je suis désolé d'avoir été aussi flou dans ma requête.
Cordialement,
Leakim
Salut,
La macro inscrite dans le fichier ci-joint devrait te permettre de reporter les données voulues, pour autant que ce fichier 'Planing 2014' soit placé dans le même dossier que les (sous-)dossiers des équipes.
Cordialement.
EDIT DE JEUDI MATIN
Le fichier placé hier soir sur ce message comportait une erreur ; il a été remplacé par le nouveau fichier ci-dessous.
Attention : Si un sous-sous-dossier est placé dans le sous-dossier d'un collaborateur, il est également répertorié (dans mon exemple ci-joint, voir "Sous-dossier chez Julie").
Bonjour Yvouille,
Merci de ta proposition. J'étais sur le point de te répondre qu'il y avait un hic... Lorsque tu as edité.
Ta macro fonctionne nickel.
Elle fonctionne tellement bien qu'elle copie tout les sous dossiers... ce dont je n'ai pas besoin chacun fait ce qu'il veut dans son dossier...
Mais c'est ce que tu évoques dans ton edit.
Est-il possible de restreindre le champ d'action de cette macro ?
Cordialement,
Leakim
Ps: Je suis en déplacement, je verrais ce soir
Salut,
Afin de ne pas traiter les sous-sous-dossiers dans les sous-dossiers des collaborateurs il faudrait absolument pouvoir les distinguer les uns des autres.
On pourrait alors soit indiquer une marque devant ou derrière le nom des uns ou des autres. Une marque devant est toujours plus facile à traiter qu’une marque derrière le nom.
Par exemple, si tous les sous-dossiers des collaborateurs commençaient par xx- (exemple xx-Duchamp Jules, xx-Delabrosse Alberte, etc.), on pourrait dire dans la macro qu’il faut ignorer les sous-sous-dossiers ne commençant pas par xx-. Le xx- pourrait alors être effacé lors de l'inscription du nom dans la colonne B. Mais un yy- devant le nom des sous-sous-dossiers ne devant pas être traité conviendrait par exemple également.
Mais peut-être qu’une telle marque distinctive existe déjà dans le nom des sous-dossiers des collaborateurs ou dans le nom des sous-sous-dossiers ?
Un autre exemple : dans la macro que je t’ai donnée, il est indiqué de ne traiter – à ce niveau là – que les dossiers dont le nom commence par «Equipe» et d’ignorer tous les autres dossiers de ce niveau (ou plus exactement – si tu as étudié la macro au pas à pas - d’effacer les données des autres dossiers juste avant la fin de la macro pour les garder que les données des dossiers commençant par «Equipe»).
Si cette identification des différents dossiers à traiter ou à ne pas traiter ne pouvait absolument pas se faire par une marque dans les noms, il y a probablement la possibilité de la faire dans la macro en détaillant le niveau des dossiers, sous-dossiers et sous-sous-dossiers concernés, mais ça risque d’être assez compliqué.
A te relire.
Pour certain la nuit porte conseil, pour d’autres c’est la pause de midi
Finalement j’ai trouvé un moyen assez simple de ne pas tenir compte des sous-sous-dossiers sans devoir modifier leur titre.
Cordialement.
Bonjour,
entre deux réunions...
Je remercie le génie de la cantine
C'est simplement, formidable !!!
A un grand merci.
Leakim
Ps: Le moyen assez simple c'est quoi ?
Le moyen assez simple est d’écrire une série de données en parallèle dans la colonne 677 (colonne ZA) par l’instruction
Cells(Numéro_de_ligne, 677).Value = Right(Flder, Len(Flder) - Len(ThisWorkbook.Path) - 1) Puis de diviser ces données – à chaque signe \ - dans les colonnes suivantes par le passage
For m = 6 To DerLig_ZA
Tableau_spécial_Split = Split(Range("ZA" & m), "\", -1)
On Error Resume Next
For k = 1 To 1000 'Afin d'être sûr de couvrir tous les cas possibles
Cells(m, k + 677) = Tableau_spécial_Split(k)
Next k
Next mAfin de pouvoir voir – par le passage ci-dessous - si une ligne ainsi créée et dispatchée en colonne ZA et suivantes atteint la colonne ZC (il y a un sous-sous-dossier) ou seulement la colonne ZB (il y a qu’un sous-dossier).
If Left(Range("ZA" & i), 6) <> "Equipe" Or Range("ZC" & i) <> "" Then Range("A" & i & ":B" & i).Delete Shift:=xlUpAmicalement.
Bonsoir,
L'astuce est judicieuse !
Merci beaucoup pour ton temps passer à te creuser les méninges pour moi.
Leakim