Transfert de lignes entre onglets et/ou entre fichiers
Bonjour,
Je me suis bien pris la tête à développer un outil qui mélange un workflow et un list manager.Il permet de transférer une ligne d’un onglet à un autre au sein d’un même fichier et de transférer une ligne d’un fichier à un autre dans l’onglet voulu.
Dans un premier temps toutes les macros se trouvaient dans chacun des fichiers mais il devenait très long de passer en revue chaque fichier lorsque je devais ajouter un collaborateur.
D’où l’idée de constituer un fichier « source » contenant les macros nécessaires et de les appeler depuis les fichiers de travail. L’inconvénient venant là d’un temps de réaction incroyablement long.
Continuant sur la lancée, j’essaye à présent de charger le fichier source et de le masquer pour pouvoir exécuter les fonctions dans un délai acceptable mais là je bloque… J’arrive à charger le fichier pour tout le module 1 (transfert dans le même fichier) mais je ne parviens pas à le faire cohabiter avec le module 2 (transfert vers un autre fichier) qui lui fonctionne encore en appelant les macros depuis l’emplacement du fichier « source ».
Quelqu’un peut-il m’aider à faire cohabiter les modules ou (mieux encore) qui aurait une solution pour faire fonctionner le module 2 en chargeant et en masquant le fichier « source ».
Question subsidiaire : y a-t-il un moyen d’appeler les macros grâce à des variables plutôt que de devoir tout détailler dans chacun des fichier de travail ?
Ci-joint mes petits bébés : le fichier source :
et les fichiers de travail :
Voilà pour le défi !
D’ores et déjà merci de m’avoir lu et d’avance un tout grand merci pour vos réponses.
Bonjour Pierro,
J'ai tout lu, tout télécharger .... mais ma foi, je l'avoue : je m'y perds.
Les fichiers ont la même structures, donc pourquoi ne pas appliquer l'option d'un formulaire qui peut fonctionner sur tous les fichiers.
S'ils sont stocké au même endroit c'est en encore mieux.
Donc on pourrait collecter une informations d'un fichier et le coller dans autre, via ce formulaire.... et/ou modifier les informations.
Pour ma part je l'ai déjà développé la même procédure "formulaire" pour un grand nombre de fichiers, et tout fonctionne sans problème depuis des années....
Consulte mon blog https://cellulexcel.blogspot.fr/p/formulaire-pour.html tu trouveras déjà la procédure pour évoluer entre plusieurs onglets.... (Fichier téléchargeable en bas de page) la procédure est similaire entre fichier.....
Dis-moi si c'est envisageable.
Bonjour et1000lio,
Je retiens l'option du formulaire pour mettre en variable le nom des macros à appeler mais je ne vois pas comment l'appliquer à l'ensemble du système.
Il est impératif de pouvoir déplacer des lignes ou des groupes de lignes entre les fichiers et leurs onglets (pour info : je travaille dans un hôpital et le service dans lequel je suis s'occupe d'organiser les sorties des patients : transfert vers d'autres institutions, mise en place de structure à domicile ,... On est obligé de suivre les situations au jour le jour et de pouvoir les renvoyer au jour voulu), Ces classeurs fonctionnent comme un casier à fiches dans lequel on reclasse les fiches.
Est-ce que cela aide à la compréhension ?
Bonjour Pierroo,
J'ai avancé sur la programmation, tout n'est pas parfait... mais c'est déjà pas mal. Il y a surement des améliorations à apporter et cela va peut-être intéresser quelques développeurs ...
Donc :
1) Ouverture du formulaire à l'ouverture du fichier
2) Choix du JOUR via liste déroulante
3) Suppression ligne "Patient"
4) Nouveau Patient.... j'aurai quelque modif à apporter en autre supprimer la liste déroulante (A venir)
5) Modification d'une ligne patient
6) et le top transfert vers tous les fichiers "Ouvert" d'une ligne "Patient"
et etc.... bonne lecture du programme.
N'hésites pas si tu as des demandes d'améliorations ou me guider sur des manipulations que je n'aurai pas compris.
Salut et1000lio,
Tout d'abord merci pour ce développement, je découvre le userform grâce à toi et je vais me pencher plus à fond sur cet cet aspect du VBA (je suis encore un pur et simple débutant). J'ai examiné tes modifs hier soir et je me réveille ce matin à 4h avec pas mal de questions...
Il y a hélas plusieurs hics : au démarrage excel me signale une "erreur 91" et le userform ne se lance pas automatiquement (par contre il fonctionne bien en le lançant depuis l'éditeur VBA). Ensuite il est très important de conserver une interface utilisateur qui soit la plus simple possible : mes collègues qui sont pour la plupart de vraies manches de l'informatique. Elles utilisent déjà ces fichiers et auraient beaucoup de difficultés à comprendre un tel changement. Le formulaire que tu proposes tend à complexifier cette interface et il empêche aussi d'avoir une vision globale de chaque jour en se mettant en surimpression. Il me semble que le formulaire serait nettement plus adapté à une appli de type base de données.
Dans l'idéal : il faudrait un fichier "administrateur" qui contienne les macros et les données de type formulaire et de l'autre côté des fichiers "utilisateur" contenant les données des patients et les tâches à réaliser (les données des patients transitant uniquement entre les fichiers utilisateurs. L'équipe qui utilise cet outil change régulièrement et c'est pour cette raison que j'ai besoin de ce type de structure. En faisant de cette manière cela me permettrait de ne modifier que le fichier "administrateur" lors de l'arrivée ou lors du départ d'un collaborateur. Actuellement je suis obligé de modifier chaque fichier et cela prend un temps considérable (l'équipe compte une vingtaine de personnes). Le formulaire pourrait s'avérer utile afin de modifier ce ficher "administrateur".
Le noeud en ce moment est que je ne parviens pas à trouver le moyen de remplacer les 2 modules dans les fichiers utilisateurs par 2 macros qui lanceraient les macros du fichier administrateur. Il faudrait pouvoir les lancer en ayant des variables :
"jour de départ" et "jour de destination" pour le module 1 et
"jour de départ", "fichier de destination" et "jour de destination" pour le module 2.
Le "jour de départ" étant l'onglet depuis lequel les données sont copiées (puis supprimées),
Le "jour de destination" l'onglet dans lequel les données doivent être collées
Et le "fichier de destination" le classeur du collaborateur à qui l'on transmet le patient et les tâches à effectuer.
Est-ce plus clair ainsi ?
Bonjour,
Je continue dans mon idée de centraliser les macros et les données de formulaire (liste des collaborateurs, jour destination, ...)
Afin de lancer les macros du fichier "administrateur" voilà un début de code :
Sub report()
Dim jourdépart, jourdestination As String
jourdépart = Activesheets.Name
jourdestination = ?
Application.Run ("'Casier source test.xlsm'!jourdépart & jourdestination")
End SubPour ce qui est de la variable jourdestination, j'aimerais pouvoir réaliser 2 choses :
1. qu'une liste déroulante apparaisse dans le fichier "utilisateur" pour pouvoir faire la séléction voulue mais que cette liste soit stockée dans le fichier "administrateur".
2. et pouvoir ensuite appliquer la valeur choisie dans la liste à la variable jourdestination
Une idée ?
D'avance merci pour vos réponses
Bonjour,
J'ai mis un peu de temps à répondre parce que j'ai pas mal bricolé autour de ce fichier.
Dans le fichier joint, seuls les renvois de jour à jour, Attente ou Sorties sont traités.
J'ai partiellement traités la partie transferts, mais je ne l'ai pas finalisée car quelques points me semblaient nébuleux...
Par suite je n'ai pas traité les casiers collaborateurs, mais ce n'est pas bien différent.
Il faudra probablement une petite mise eu point téléphonique si on veut finaliser le truc, parce que tes macros... c'est un peu indigeste ! Heureusement on peut pas mal simplifier !
Tu verras que j'ai résolu le problème d'une manière très simple. Tout se passe dans l'onglet "Planning"
Hum... Une seule contrainte : Tout le monde doit posséder une version Excel 2010 ou plus récente.
Bon si ça te branche tu sais ce qu'il faut faire...
A+
Edit : Fichier modifié pour activer l'onglet "Planning"
Bonsoir,
Une version un peu plus finalisée avec les transferts et les casiers secondaires.
Pour l'instant seuls les casiers secondaires peuvent faire des transfert entre eux car je ne sais pas trop finalement si le fichier source doit également échanger des données...
Il reste sans doute des réglages à faire, mais pour l'essentiel tout y est.
L'ensemble ne nécessite pas de précaution particulière. Il sufffit de mettre tous les fichiers dans le répertoire par défaut d'Excel pour que ça fonctionne.
Pour travailler sur "'P..." ya juste une 'tite modif à faire mais c'est secondaire...
A+
Bonjour Galopin01,
Merci beaucoup pour tout ce boulot ! Pour répondre à ta question, non le fichier source n'a pas à échanger des données.
Je vais encore prendre un peu de temps pour regarder tout cela et je te recontacte.
Encore une fois merci !!!
Meilleures salutations
Bonjour,
Tu peux aussi essayer de travailler dans ton répertoire "P...Test" en remplaçant dans la macro "Transfert"
Workbooks.Open Filename:=ZSTR(1) & WbName
...remplacer le 1 par 99
A+
Encore un petit truc...
galopin01 a écrit :Il faudra probablement une petite mise eu point téléphonique si on veut finaliser le truc, parce que tes macros... c'est un peu indigeste ! Heureusement on peut pas mal simplifier !
Indigeste ? A qui le dis-tu ?!
Simplifier ? Oh oui !!!
A+
Bonjour,
Pierroo a écrit :Pour répondre à ta question, non le fichier source n'a pas à échanger des données.
Dans ce cas le fichier source n'à qu'un intérêt : Permettre d'exporter (sous forme de .csv) la base de donnée des différents collaborateurs stockés dans la feuille masquée "Param". Cet export doit être fait manuellement via le bouton Outils > Export > Envoyer.
Cette base de données est ensuite récupérée par les différents casiers lors de chaque ouverture.
Je te mets un fichier Casier00.xlsm
Ce fichier n'est pas opérationnel en l'état : Il permet seulement de générer les 19 casiers numérotés de 01 à 19 nécessaire au différents acteurs.
Il suffit d'ouvrir Casier00.xlsm et de faire successivement
Enregistrer sous... Casier01.xlsm
Enregistrer sous... Casier02.xlsm
... et ainsi de suite jusqu'à 19
pour obtenir tous les casiers de travail des intervenants. Ces fichiers étant ensuite attribués à chacun selon la logique de la feuille "Param"
Ce fichier (Casier00.xlsm) est le seul fichier sur lequel je travaille : Dorénavant je ne te transmettrai que ce dernier. A charge pour toi de générer les 2 ou 3 casiers qui te servent pour tes expérimentations. (et ultérieurement tous les casiers...)
Il faut absolument te servir du Casier00.xlsm pour écraser les fichiers Casier01.xlsm et Casier02.xlsm que tu possèdes et dont les macros ne sont pas à jour.
Je te donne aussi un nouveau fichier source expurgé des onglets et des macros dont tu n'as pas besoin puisque ce fichier n'est pas communicant.
J'ai également rajouté à ces fichiers un brin de commentaires.
Merci de bien vouloir éditer le titre de ce fil en donnant un titre pertinent.
(par exemple : Transfert de données de fichier à fichier)
Pour cela aller sur ton premier message et cliquer sur le bouton Editer...
A+
Bonjour Galopin01,
Super !
Comme je te le disais en MP je dois maintenant continuer de bosser sur ces fichiers avec le développeur de l'hôpital... Dès que j'aurai une version finale je la mettrai en partage dans la partie du forum dédiée aux applis.
Merci mille fois.
Meilleures salutations.