Re..Bonsoir,
Ce matin je voulais présenter la solution à la responsable, mais ça a beugué de tous les côtés, à commencer, côté non-VBA, par mes listes de validation qui ne voulaient pas fonctionner. En plus, comme j'ai copié des feuilles du fichier original dans celui sur lequel tu as travaillé (l'avant-dernier; je n'ai pas réussi à intégrer les modifications du tout dernier fichier), il y a des formules qui ont gardé la référence à leur fichier d'origine.
Côté VBA, les saisies des dépenses ne se sont pas inscrites dans TOUT. Qui plus est, la macro a bloqué à un certain endroit. La création de nouvelles fiches en ajoutant des agents fonctionnait, tout comme la suppression.
Bref, demain je vais recommencer en prenant ton dernier fichier et en y intégrant les agents réels, cette fois-ci en évitant de copier des feuilles d'un fichier dans l'autre.
J'espère que ça fonctionnera après.
Bonne nuit
Aloha
Ce sera peut-être fastidieux s'il y a beaucoup d'agents déjà inscrits
je n'ai toujours pas compris l'utilité des colonnes U:AC des feuilles des agents
Re...Bonjour,
Ce n'est pas un gros problème puisqu'il ne s'agit que des noms.
Dans le tableau principal il y a des colonnes qui servent seulement à répartir des dépenses communes entre les deux services F et S; la répartition faite, elles ne sont plus nécessaires; lorsque je veux imprimer une feuille individuelle elles sont superflues et elles dérangent même et, comme je ne suis pas capable de résoudre cette question par VBA (cacher "tout simplement" ces colonnes p.ex.) j'ai procédé de cette façon; cependant, une solution par VBA serait préférable, mais je pensais te solliciter assez avec le reste.
J'ai d'ailleurs ajouté, dans le fichier réel, dans AVANCES, un tableau "Solde des agents" permettant à la responsable de se rendre compte d'un coup d'oeil (sans avoir à consulter toutes les fiches individuelles: il y a plus de 12 agents) où ils en sont avec l'argent.
Dans ce tableau j'ai toujours, pour les chiffres, des #REF dans la première ligne dans laquelle il n'y a pas de nom. J'ai expérimenté pour trouver la raison des #REF, en ajoutant des noms, et les #REF pour les chiffres se déplacent dans la nouvelle première ligne vide.
Cependant, lorsque je supprime ces noms ajoutés, le tableau ne fonctionne évidemment plus, puisque les lignes sont effacées dans la liste des agents, et j'ai un #REF dans la cellule I11.
J'ai alors essayé de remplacer la formule en AVANCES I5:
=SI(LISTES!F3="";"";LISTES!F3)
par celle-ci:
=SI("LISTES!F"&LIGNE()-2="";"";"LISTES!F"&LIGNE()-2)
en me référant donc à une valeur qui reste, mais la formule ne fonctionne pas.
Pour la suite, il faudra faire attention de travailler tous les deux sur le même fichier, sinon il y aura deux fichiers différents si tu travailles encore en VBA.
En annexe ton dernier fichier + le nouveau tableau.
J'ai commencé à tester et constaté que les nouvelles saisies de dépenses ne s'inscrivent pas dans TOUT. Qui plus est, les anciennes restent. Les vider manuellement n'est pas la solution puisque cette feuille est remplie par VBA et qu'il n'y a pas de formules pour les totaux.
A+
Aloha
Re..Bonsoir,
Merci pour cette solution ingénieuse. Je la trouve bien intéressante. Si tu travaillais pour moi contre rémunération, je dirais allons-y, explorons cette idée jusqu'au bout, si c'est un échec, c'est pas grave, tu es payé quand-même. Mais tel n'est pas le cas et je ne veux pas trop abuser de ta générosité
Je pense que cette solution innovative serait difficile à mettre en oeuvre et à faire accepter par les gens dans la pratique (je sais de propre expérience comment ces gens fonctionnent), puisque chaque agent gère lui-même ses dépenses. Les gens sont habitués depuis des années à ce type de comptabilité et le but de ce projet est de faciliter le travail à la comptabilité en aval qui perd beaucoup trop de temps à tout décortiquer et à rendre les affaires plus transparentes et plus claires. P.ex., la personne qui distribue les avances et qui contrôle les petites comptabilités avant d’envoyer le tout au service compta copie pour l’instant toutes les dépenses, après vérification, dans sa propre feuille et dans la compta ils ne savent plus voir qui a engagé quelle dépense. C’était en fait pour cela que la responsable m’en a parlé pour que je voie comment améliorer le système. Mettre tout le monde dans la même feuille causerait un sacré chaos, puisque les agents qui doivent utiliser ce système ne sont pas des comptables; ils sont actifs dans l'éducation et leur petite comptabilité n'est qu'accessoire. Il arriverait bien souvent que la personne qui doit saisir des dépenses de sa petite compta est dérangé, n'arrive pas à se concentrer et choisit le mauvais nom et la dépense atterrit chez un collègue.
Pour éviter cela, (ci-dessous, pas trop ordonnées, les idées et réflexions qui me viennent à l’esprit concernant un tel système) il faudrait une clef (mot de passe) individuelle pour accéder et pouvoir uniquement faire des saisies dans son propre compte pour éviter qu'on puisse choisir par erreur le compte d'un collègue.
Passer par des userforms faciliterait cette tâche : si on veut saisir une opération on doit entrer son code qui ne doit pas trop ressembler à ceux des collègues : 123, 124, 125 etc ne fonctionnerait pas puisqu’au lieu de saisir 123 on peut facilement se tromper et écrire 124 ; par contre, un système comme p.ex. des initiales plus étendues DUPMAR pour Dupont Marie pourrait fonctionner.
Cependant, pour éviter de devoir saisir ce code pour chaque opération, il faudrait prévoir des sessions : j’entre le code, l’userform devient active pour les saisies, et il est actif jusqu’à la fermeture de l’userform (qui à défaut clôture automatiquement la session après un certain délai d’inactivité) et entretemps je peux saisir autant d’opérations que je veux.
Il faudrait qu’il comprenne les champs suivants :
• Date
• Montant, répartition (f, s, m [=mixte]) ; en cas de m deux nouveaux champs apparaissent pour pouvoir saisir le nombre pour f et celui pour s pour faire la répartition de la dépense; en cas de f et s ils ne sont pas visibles.
• Description (type de la dépense; p.ex.: Parking, Boissons, Aliments, etc) : choisir dans une liste ; la liste doit pouvoir être complétée
• Remarque
• Et peut-être d’autres qui m’échappent à l’instant
Puis, il faut des boutons pour déclencher certaines opérations :
• Saisir une ou des opérations
• corriger ou effacer une opération
• Montrer les opérations d’une personne déterminée, pour un mois déterminée ou pour tous les mois écoulés, avec solde initial, avances, dépenses, et solde final
• Imprimer une personne déterminée pour un mois déterminé ou toute l’année, et là j’aperçois à l’instant un avantage non négligeable d’un tel système : il suffirait d’un seul classeur pour l’année entière ce qui éviterait de devoir reporter manuellement les soldes d’un mois à l’autre, source d’erreurs.
• filtrer d’après les différentes descriptions ou même description & agent, permettant de vérifier combien d’argent un certain argent a dépensé pour telle description
• et d’autres sûrement
Les avances sont saisies uniquement par la responsable
Il est sûr que cette solution présenterait le grand avantage d’une seule feuille et les dépenses ne doivent plus être copiées dans une feuille commune. Un autre avantage : il est plus aisé de numéroter les tickets.
Je veux bien aller sur cette voie -au fil de ces lignes ma sympathie pour cette solution est allée en augmentant-, mais j'ai crainte de brûler ton énergie bénévole (!) là-dedans. A moins que ce genre de travail te passionne, là ce serait autre chose.
Mais ce serait un sacré boulot!
A+
ALoha
Je fais confiance aux gens; je ne pense pas qu'il y aura quelqu'un qui voudra "hacker" les mots de passe.Eventuellement avec mot de passe (sachant que la protection excel est illusoire pour un initié)
C'est donc dans cette base de données invisible à l'usager que sont stockées les saisies. La première ligne comprend les entêtes et la deuxième est la première ligne de la base de données dans laquelle est stockée la première saisie et qui s'étent automatiquement au fur et à mesure des saisies.de construire les deux premières lignes de la base de donnée (complète et définitive)
Donc tous les calculs pour une saisie spécifique (en fait il n'y en a qu'un seul, dans le cas où une dépense doit être répartie parmi f et s) se font une fois la sasisie inscrite dans la base. D'ailleurs, dans le cas où il y a une dépense mixte, il faut donc les participants f et s pour faire la répartition et il serait avantageux -si faisable- que si on entre un m et une clé de répartition, au prochain m consécutif, la même clé soit proposée (un détail, mais pratique et évitant une source d'erreur possible)et leurs formules si nécessaire.(format tableau structuré excel)
Tu veux dire de te donner ces explications à toi ou aux usagers?De données les explications* sur la correspondance des entêtes de la BD et les titres de saisie.
*Par exemple, je n'ai pas compris ce que fournisseur venait faire dans ce classeur, ni l'intérêt des abréviations des noms et prénoms.
Il faut le fournisseur d'une marchandise (ticket de caisse ou facture); les abréviations des noms étaient destinées à identifier la personne ayant fait une dépense dans TOUT, où toutes les dépenses étaient mélangées.je n'ai pas compris ce que fournisseur venait faire dans ce classeur, ni l'intérêt des abréviations des noms et prénoms.
Là je ne comprends pas: comment une saisie peut-elle être introduite par extraction et non pas par inscription?Les différentes données de cette base sont introduites par extraction dans des userformes selon ce que doivent saisir les différentes personnes
Cela peut être un tableau unique, nom, prénom, code d'accès, solde initial au 1er janvierUn tableau des agents avec nom prénom, solde initiale, etc..
Un tableau des personnes avec leurs codes d'accès
Donc une page d'agencement où il y a toutes les commandes en forme de bouton.Une page de démarrage (la seule visible) comportant les différents boutons pour accéder à ces userformes personnalisés
RE..Bonjour,
Je fais confiance aux gens; je ne pense pas qu'il y aura quelqu'un qui voudra "hacker" les mots de passe.
Le nieux serait de générer aléatoirement un mot de passe comprenant un minimum de caractères alphanumériques (4 ou, mieux, 6); si j'ai bien compris il est possible de générer des codes par VBA; par formules Excel (ALEA() et CAR() c'est aussi possible mais ils sont volatiles.
C'est donc dans cette base de données invisible à l'usager que sont stockées les saisies. La première ligne comprend les entêtes et la deuxième est la première ligne de la base de données dans laquelle est stockée la première saisie et qui s'étent automatiquement au fur et à mesure des saisies.
Donc tous les calculs pour une saisie spécifique (en fait il n'y en a qu'un seul, dans le cas où une dépense doit être répartie parmi f et s) se font une fois la sasisie inscrite dans la base. D'ailleurs, dans le cas où il y a une dépense mixte, il faut donc les participants f et s pour faire la répartition et il serait avantageux -si faisable- que si on entre un m et une clé de répartition, au prochain m consécutif, la même clé soit proposée (un détail, mais pratique et évitant une source d'erreur possible)
Tu veux dire de te donner ces explications à toi ou aux usagers?
Il faut le fournisseur d'une marchandise (ticket de caisse ou facture); les abréviations des noms étaient destinées à identifier la personne ayant fait une dépense dans TOUT, où toutes les dépenses étaient mélangées.
Là je ne comprends pas: comment une saisie peut-elle être introduite par extraction et non pas par inscription?
Cela peut être un tableau unique, nom, prénom, code d'accès, solde initial au 1er janvier
Donc une page d'agencement où il y a toutes les commandes en forme de bouton.
Pour accéder aux opérations il faut juste un champ pour saisir le code d'accès et le reste des données est appelé depuis la bas de données des agents.
Pour l'instant je ne vois pas comment faire pour les avances que le responsable prélève à la banque et distribue aux agents.
Et je me demande s'il faut
* ajouter une colonne dans la base de données
* ou bien travailler avec des chiffres négatifs pour les dépenses et des chiffres positifs pour les avances.
Je pense que la première solution est préférable: j'ajoute une colonne.
En tout cas le mieux c'est que les avances soient uniquement saisies par le responsable
A l'ouverture du fichier une seule feuille est visible: ENTREE
J'ai pris la dernière version de la compta actuelle sur laquelle tu as travaillé, j'ai caché les feuilles actuelles et j'en ai ajouté des nouvelles.
L'architecture du contenu des feuilles n'est que schématique et, si j'ai bien compris, l'usager ne verra pas des feuilles mais des boîtes avec les champs.
Si un agent saisit son code, il a accès à la feuille MENU AGENT où il peut
* saisir une dépense
* modifier ou supprimer une dépense
* consulter ses propres saisies
Si le responsable saisit le code du responsable, il a accès à la feuille MENU RESPONSABLE où il a accès à toutes les feuilles sauf la BASE DE DONNEES et il a le droit de procéder à toutes les opérations et consultations, à l'exception des modifications de la structure.
Pour l'instant j'arrête là
Bon dimanche
Aloha
Re..Bonsoir
A toi de décider jusqu'où tu veux m'accompagner. Tu arrêtes où tu veux et je te remercierai pour l'aide que tu m'auras prêtée.
Je me serais contenté de l'autre solution, dans laquelle j'ai d'ailleurs progressé un peu: les formules ayant donné des #REF fonctionnent.
Ce qui manque, puisque ça ne fonctionnait plus, c'est de copier les données ensemble; cela ne doit pas nécessairement se faire automatiquement; une possibilité plus simple à mettre en oeuvre: copier les données en appuyant sur un bouton à placer dans les feuilles individuelles.
Bonne soirée
Aloha
[I]Ce qui manque, puisque ça ne fonctionnait plus, c'est de copier les données ensemble[/I]
Re..Bonsoir,
J'ai revérifié: les inscriptions sont bien transférées dans TOUT! Je pensais qu'elles s'ajoutaient en bas, mais en réalité elles s'ajoutent en haut et je ne l'avais pas remarqué!
Sorry
Avec ça, il n'y a en réalité plus grand-chose à faire.
J'ai travaillé encore sur des formules, j'ai protégé toutes les cellules des fiches individuelles auxquelles les usagers n'ont pas d'intérêt à avoir accès. Bien évidemment ton code qui vide l'aire des avances et inscrit les avances a rouspeté. Je me suis alors permis d'ajouter un Unprotect au début et Protect à la fin de la procédure et ça marche.
J'ai aussi formaté la fiche modèle comme je la voudrais et ajouté un bouton lié à une macro enregistrée pour imprimer la fiche individuelle.
Une question:
Pour que le tableau AVANCES Soldes des agents affiche les chiffres actuels il faut d'abord sélectionner les fiches individuelles.
Y aurait-il moyen d'ajouter un bouton à côté du tableau pour le mettre à jour? Ce serait plus pratique pour le responsable qui vérifie dans le tableau qui a besoin d'une avance. S'il y a une douzaine d'agents ils doit passer par toutes les fiches pour avoir tous les chiffres actuels. Si c'est trop onéreux de faire fonctionner un tel bouton, c'est pas grave.
Je vais encore essayer de réaliser une méthode d'accès où à l'ouverture du fichier seule une feuille MENU est visible; cette feuille doit contenir un bouton donnant accès à toutes les feuilles au responsable (moyennant code) et un bouton pour chaque agent qui accède aussi seulement à sa feuille par code.
Bonne soirée
Aloha
En effet, je n'ai pas pensé à cela. J'avais découvert des incohérences, c'est pour cela que les colonnes ont changé; qui plus est, je viens de remarquer qu'il n'y avait pas l'agent dans la plage à copier (à l'origine je pensais sûrement qu'il serait pris, pour être copié dans toutes les lignes de TOUT le concernant, depuis le titre. J'ai ajouté (et caché pour les besoins de l'impression de ce tableau) une colonne Agent, de sorte que maintenant la plage à copier va de R à Y. J'ai corrigé dans le code. Les colonnes correspondent à nouveau avec TOUT. Seulement, la colonne Z est copiée aussi! En fait, la copie est déphasée d'une colonne.J'ai aussi formaté la fiche modèle comme je la voudrais et ajouté un bouton lié à une macro enregistrée pour imprimer la fiche individuelle.
Là.. attention les plages des fiches individuelles actuelles sont copy dans "TOUT" par ce code ==> .Range("u4:ac" & Derlg)
et si j'ai bien vu, maintenant ce serait==> .Range("r4:x" & Derlg)
Le nombre de colonne dans "TOUT" ne correspond plus, il faudra adapter ou supprimer des colonnes.
Oui, c'est vrai, mais comprends que mon tableau avec les soldes n'existait pas encore dans AVANCES et que je me rends compte qu'il n'est mis à jour qu'en faisant le tour de toutes les fiches individuelles.Pour que le tableau AVANCES Soldes des agents affiche les chiffres actuels il faut d'abord sélectionner les fiches individuelles.
Il me semble que ceci était la demande initiale NON?
//Copier des données par VBA dans différentes feuilles//
Se pourrait-il que cela dépend de l'environnement d'Excel? Chez moi il n'y en avait pas. En tout cas, maintenant il n'y en a pas.Je ne vois que des #VALEUR! sur cette feuille
En effet, il faut juste les dépenses. Et je me demande, s'il vaut mieux saisir les soldes initiaux dans le tableau dans AVANCES et les copier par formule dans les feuilles ou le contraire, comme c'est maintenant. A réfléchir; cela n'a pas d'incidence VBA.Les avances sont saisies sur cette même feuille, il n'est donc pas indispensable de les chercher ailleurs
Elles ont l'air de faire leur service comme il faut.Néanmoins et si j'ai bien compris, j'ai modifier quelque peu les formules sur cette feuille,
C'est parfait!les noms des agents sont inscrits sur cette feuille en même temps que lors de leurs création/supprimer sur la feuille "Listes".
à voir si c'est bien ce que tu souhaitais.
Pas nécessaire puisqu'il s'agit de fiches fictives; la seule fiche qui importe, c'est MODELE.Les fiches individuelles en place sont à revoir ou à refaire.