Microsoft 365 Copier des données par VBA dans différentes feuilles

Aloha

XLDnaute Accro
Bonjour,

Dans une situation réelle, représentée par l'exemple ci-joint, un administrateur distribue des avances à des agents (P1 à P3).
Il inscrit les avances distribuées dans la feuille "Avances".

Ce que je recherche:
un bout de code VBA qui copie, chronologiquement dans les feuilles P1 à P3, les avances distribuées, comme je l'ai fait manuellement, de préférence automatiquement, càd que dès que l'administrateur saisit une avance dans la feuille "Avances" elle est copiée de suite dans la feuille respective..

Merci d'avance pour toute aide
Aloha
 

Pièces jointes

  • Distribution avances.xlsx
    11.6 KB · Affichages: 7

Aloha

XLDnaute Accro
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
 

Jacky67

XLDnaute Barbatruc
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
Re..
J'ai modifié la façon de créer un nouvel agent (par insertion et non plus par ajout)
Néanmoins les ajouts et suppressions doivent se faire par les boutons,
c'est pour cela que la plage(colonne D:H) de cette feuille est protégé. Elle ne doit pas être modifiée manuellement.
Il faudra faire des tests avant de passer à l'utilisation réelle. (en long et en large) ;)
Ce sera peut-être fastidieux s'il y a beaucoup d'agents déjà inscrits, j'en suis désolé, mais c'est le prix à payer.
Je ne suis pas un très grand expert, et le classeur n'est pas avec une structure facile, un bug est toujours possible.

Par la suite,, je pense que l'utilisation en sera facilitée.

Nb: je n'ai toujours pas compris l'utilité des colonnes U:AC des feuilles des agents. Mais il y a certainement une bonne raison.
 

Pièces jointes

  • Octobre 2019 10.12.2019 ter.xlsm
    141.2 KB · Affichages: 7
Dernière édition:

Aloha

XLDnaute Accro
Bonjour,

Ce sera peut-être fastidieux s'il y a beaucoup d'agents déjà inscrits

Ce n'est pas un gros problème puisqu'il ne s'agit que des noms.

je n'ai toujours pas compris l'utilité des colonnes U:AC des feuilles des agents

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
 

Pièces jointes

  • Octobre 2019 13.12.2019.xlsm
    139.6 KB · Affichages: 6
Dernière édition:

Jacky67

XLDnaute Barbatruc
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...
Bon, A force de rajouter supprimer modifier, cela ne ressemble plus à rien
Cela va devenir une usine à gaz ingérable
Cela me conforte ce que j'ai déjà dit/écrit ==> constituer une base de donnée correcte alimentée au file de l'eau,
sur laquelle on ne pourra écrire qu'a travers des userform() et ou l'on pourra extraire ce que l'on veut.
A toi de voir
Exemple


Par exemple
 

Pièces jointes

  • Nouvel proposition.xlsm
    35.7 KB · Affichages: 15
Dernière édition:

Aloha

XLDnaute Accro
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
 
Dernière édition:

Jacky67

XLDnaute Barbatruc
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
Re..
Je vois cela un peu différemment
-La base de donnée complète n'est visible que par le concepteur, il faut en construire tous les entêtes.
-Y implanter les formules dans les plages (seulement si absolument nécessaire)
-Les différentes données de cette base sont introduites par extraction dans des userformes selon ce que doivent saisir les différentes personnes
-Un tableau des agents avec nom prénom, solde initiale, etc..
-Un tableau des personnes avec leurs codes d'accès
-Eventuellement avec mot de passe (sachant que la protection excel est illusoire pour un initié)
-Une page de démarrage (la seule visible) comportant les différents boutons pour accéder à ces userformes personnalisés


Voila , y a du boulot
Je suis prêt à te donner un coup de pouce si tu souhaites te lancer dans ce projet, il faudra du temps.
Il t'appartient ;
- de construire les deux premières lignes de la base de donnée (complète et définitive) et leurs formules si nécessaire.(format tableau structuré excel)
- De construire les userformes pour chaque personne ayant besoin de saisir des données avec les "titres" de saisie, je ne charges des "box" de saisie et de leurs codes
-Il sera important d'indexer les saisies par des n° uniques, je n'en charge.
- 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.

Nb: Si ce n'est pas indiscret, c'est pour quelle institution ?., N'a t'elle pas les moyens de s'offrir un logiciel de compta.?
.
Sur ce, je te souhaite une bonne nuit
 
Dernière édition:

Aloha

XLDnaute Accro
Bonjour,
Pour l'instant je réponds à ta question: il s'agit d'une institution oeuvrant dans le social. Elle a un logiciel de compta très performant, mais aussi très compliqué (et très coûteux!).

Ce que je fais ici c'est essayer d'améliorer la petite compta des personnes travaillant dans les différentes maisons et qui est intégrée dans le logiciel de compta par le service compta.

Je répondrai plus tard au reste de ton message.
Bonne journée
Aloha
 

Aloha

XLDnaute Accro
Bonjour,

Eventuellement avec mot de passe (sachant que la protection excel est illusoire pour un initié)
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.

de construire les deux premières lignes de la base de donnée (complète et définitive)
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.

et leurs formules si nécessaire.(format tableau structuré excel)
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)

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.
Tu veux dire de te donner ces explications à toi ou aux usagers?

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.

Les différentes données de cette base sont introduites par extraction dans des userformes selon ce que doivent saisir les différentes personnes
Là je ne comprends pas: comment une saisie peut-elle être introduite par extraction et non pas par inscription?

Un tableau des agents avec nom prénom, solde initiale, etc..
Un tableau des personnes avec leurs codes d'accès
Cela peut être un tableau unique, nom, prénom, code d'accès, solde initial au 1er janvier

Une page de démarrage (la seule visible) comportant les différents boutons pour accéder à ces userformes personnalisés
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
 

Pièces jointes

  • Compta alternative 15.12.2019.xlsm
    158.6 KB · Affichages: 11

Jacky67

XLDnaute Barbatruc
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..
Pour que les choses soient claires…..
Il t'appartient de créer ce projet, je suis d'accord pour donner un coup de pouce, que se soit sur la création ou sur l'exécution des codes si des problèmes sont rencontrés.
Je n'ai nullement l'intention d'exécuter un cahier de charges.

Je m'arrête là aussi
Bonne journée
 
Dernière édition:

Aloha

XLDnaute Accro
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
 

Jacky67

XLDnaute Barbatruc
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
Re..
Remettre en ligne la version utilisée.
[I]Ce qui manque, puisque ça ne fonctionnait plus, c'est de copier les données ensemble[/I]
Si l'on parle de la feuille "Tout", je n'avais pas constaté ce problème.
 
Dernière édition:

Aloha

XLDnaute Accro
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
 

Pièces jointes

  • Compta 16.12.2019 ter.xlsm
    148.7 KB · Affichages: 4

Jacky67

XLDnaute Barbatruc
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
Re..
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é!
Il avait été demander un tri sur les dates....alors tri il y a

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.
Les fiches individuelles en place sont à revoir ou à refaire.

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//


Je ne vois que des #VALEUR! sur cette feuille
Les avances sont saisies sur cette même feuille, il n'est donc pas indispensable de les chercher ailleurs
Néanmoins et si j'ai bien compris, j'ai modifier quelque peu les formules sur cette feuille,
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.
Les Noms et Prénoms de la colonne F de la feuille liste sont maintenant incrits par vba, la formule sera inutile
 

Pièces jointes

  • Compta 16.12.2019 ter.xlsm
    139.9 KB · Affichages: 7
Dernière édition:

Aloha

XLDnaute Accro
Bonjour,

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.
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.
D'ailleurs, les saisies s'inscrivent maintenant tout en bas du tableau dans TOUT. Un simple tri y remédiera.

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//
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.

Je ne vois que des #VALEUR! sur cette feuille
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.

Les avances sont saisies sur cette même feuille, il n'est donc pas indispensable de les chercher ailleurs
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.

Néanmoins et si j'ai bien compris, j'ai modifier quelque peu les formules sur cette feuille,
Elles ont l'air de faire leur service comme il faut.

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.
C'est parfait!

Les fiches individuelles en place sont à revoir ou à refaire.
Pas nécessaire puisqu'il s'agit de fiches fictives; la seule fiche qui importe, c'est MODELE.

A+
Aloha
 

Pièces jointes

  • Compta 17.12.2019.xlsm
    193.9 KB · Affichages: 8

Jacky67

XLDnaute Barbatruc
Re..
A tester le classeur en Pj
Modifications apportées
-Remise en place des plages des fiches individuelles à copier
-Protection des feuilles à l'ouverture du classeur et à la création d'une nouvelle feuille avec autorisation de modifier par vba (inutile de déprotéger)
-Suppression des avances de l'agent en cas de suppression de celui-ci
-Déplacement de "Maintenant()" des feuilles individuelles vers X1
 

Pièces jointes

  • Compta 17.12.2019.xlsm
    181.7 KB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
312 046
Messages
2 084 848
Membres
102 686
dernier inscrit
Franck6950