Matrice de tri aléatoire
Bonjour à tous,
Prêt pour un petit challenge?
Avant toute chose une petite explication sur le contexte:
J'ai un listing avec un ensemble des dossiers à contrôler
, 1 nombre de d'utilisateurs (dans mon cas 2 superutilisateurs et 18 utilisateurs) possédant chacun un fichier d'autocontrôle.
Chaque mois, j'ai besoin de contrôler des dossiers du listing de façon aléatoire selon la répartition que j'ai faite dans une matrice de tri.
J'ai réussi (très péniblement) à faire une grossière ébauche de macro, mais je ne suis de loin pas satisfait. Grâce à votre aide, je souhaiterais pouvoir automatiser le processus et surtout rendre plus sûr ce tri. En effet, je voudrais que le tri se fasse une fois par mois pour tous les utilisateurs.
Par exemple si l'on prend l'utilisateur1 (U1) pour le mois de janvier cela signifie qu'un de ses dossier du listing (filtré selon la colonne AX du fichier listing) sera choisi de manière aléatoire et que les cellules C:F;K;N;Y;AD;BE de la ligne choisie seront copiées sur le fichier d'autocontrôle de l'utilisateur1 (U1) et qu'un autre de ses dossiers du listing........ seront copiées sur le fichier d'autocontrôle du SuperUtilisateur1 (SU1). Et ainsi de suite pour le mois de janvier pour arriver au 38 dossiers du mois. Et le mois de février, on reprend les mêmes, et on recommence en croisant les SuperUtilisateur1 et 2. Dans le monde parfait dans lequel j'aimerai vivre, bien sûr on ne peut pas retirer des numéros de dossiers qui ont déjà été tirés les mois précédants.
Alors qu'en dites-vous, possible ou pas possible? Pour ma part, je suis un peu sceptique mais, j'ai déjà été surpris par le passé des réponses obtenues sur ce forum (n'est-ce pas Curulis
Bonnes Fêtes de Pâques et surtout n'abusez pas du chocolat.
Bonjour,
Ayant eu un moment avant lever du jour, je me suis un peu penché sur tes documents, je m'y perds un peu dans la mesure où les mentions permettant de cibler ta question ne figurant pas, j'ai quelques doutes sur la nature de celle-ci.
La matrice laisse entendre que les propriétaires des dossiers sont les Utilisateurs ? On devrait donc les retrouver en AX du classeur dossiers mais là une seule mention (différente) sur 800 lignes ne permet pas de s'y retrouver.
L'autre document étant sans intérêt pour la question, revenons à la matrice. 2 choses me chagrinent :
- le SU1 échapperait à tout contrôle ? Aucun dossier contrôlé !
- les 2 dossiers par Utilisateur sont répartis pour contrôle à un SU et à lui-même ? Curieuse méthode de contrôle.
Sinon, il semble qu'il faille tirer 24 dossiers par utilisateur sur l'année. Pas de difficulté particulière pour ça.
Reste l'incertitude sur la répartition des contrôles ?
Bonjour MFerrand,
Tout d'abord merci d'avoir déjà passé du temps à étudier mon problème et, désolé que cela ne soit pas aussi clair que je le pensais.
La matrice laisse entendre que les propriétaires des dossiers sont les Utilisateurs ? On devrait donc les retrouver en AX du classeur dossiers mais là une seule mention (différente) sur 800 lignes ne permet pas de s'y retrouver.
C'est bien sur la colonne AX du fichier "BD SCI" qui regroupe tous les dossiers des différents utilisateurs. Dans le cas présent, il y a 11 utilisateurs différents (mais je te l'accorde vu qu'il commence tous par T7 ou TY, cela ne saute pas au yeux!)
L'autre document étant sans intérêt pour la question, revenons à la matrice. 2 choses me chagrinent :
- le SU1 échapperait à tout contrôle ? Aucun dossier contrôlé !
Le SU1 n'a effectivement pas de dossier contrôlé puisqu'il n'a aucun dossier! Il effectue simplement du contrôle des dossiers des autres utilisateurs
- les 2 dossiers par Utilisateur sont répartis pour contrôle à un SU et à lui-même ? Curieuse méthode de contrôle.
Il y a une partie de contrôle par les SU1 et SU2 et d'autocontrôle. Les SU1 et SU2 ayant la possibilité de contrôler les autocontrôles si beson était. Par contre, dans le cas présent, on part sur une idée de contrôler 2 dossiers par Utilisateur et par mois réparti équitablement entre l'Utilisateur concerné et l'un des 2 SU mais, on pourrait très bien imaginer demander 3 dossiers avec 1 autocontrôle (par l'Utilisateur) et 2 contrôles par les SU.
Sinon, il semble qu'il faille tirer 24 dossiers par utilisateur sur l'année. Pas de difficulté particulière pour ça.
Ravi de lire cela
Reste l'incertitude sur la répartition des contrôles ?
J'espère avoir pu lever ces dernières. Le cas échéant, je reste à disposition
Il me faut donc identifier les utilisateurs, je regarderai donc de plus près... Par contre il faut également identifier les dossiers par utilisateur. Quel élément doit être pris en compte pour cela ?
J'ai déduit de la matrice que l'on faisait le plan de contrôle en une seule fois pour l'année. Le tirage est donc particulièrement simplifié. Si l'on devait tirer mois par mois, il suffirait de relister les dossiers par utilisateur, en éliminant ceux tirés les mois précédents...
Il faut par ailleurs que j'identifie les super-utilisateurs, du moins celui qui est contrôlé, et l'autre aussi sans doute pour ne pas le confondre avec un utilisateur s'il figure dans la liste.
Pour les utilisateurs, pas de distinction à faire, sauf si tu as établi une correspondance à respecter avec ta numérotation U1, U2...
Les utilisateurs ne contrôlant qu'eux-mêmes, il n'y a donc pas d'autre tirage à effectuer. (Dommage !
En tout cas si l'on devait tirer une répartition des dossiers contrôlés aux autres utilisateurs que leur propriétaire, de façon que chacun ait le contrôle d'un dossier qui ne soit pas sien, c'est bien sûr tout à fait réalisable.
Ave Gladiator,
Bonsoir MFerrand,
je te laisse entre de meilleures mains encore, et de loin, que les miennes!
Par contre, y a-t-il des améliorations ou perfectionnements à apporter au fichier précédent (resserrage d'affichage et tout autre aménagement auquel tu aurais pu penser ?)
Bien à vous deux,
A+
Hello curulis ! ya de la place...! J'étais capté par le tirage ! Mais surtout celui qu'on va pas faire !!
Hélàs, MFerrand! Hélàs!
Tu n'as pas une formule magique?
Je me verrais bien au soleil, moi aussi, à deviser à propos d'Excel, VBA et de formules!
T'inquiète pas pour la place! J'achève, enfin, un gros truc et je me replonge dans l'histoire de Mxgan et ses colonnes asynchrones de dates et de rendement! Te souviens-tu? Encore une belle prise de tête!
Je vous suis du coin de l'oeil! J'apprends beaucoup à lire la prose des as!
A+
ReBonjour MFerrand,
Il me faut donc identifier les utilisateurs, je regarderai donc de plus près...
Tu parles bien de l'identification par la colonne AX?
Par contre il faut également identifier les dossiers par utilisateur. Quel élément doit être pris en compte pour cela ?
Dans la vraie vie
J'ai déduit de la matrice que l'on faisait le plan de contrôle en une seule fois pour l'année. Le tirage est donc particulièrement simplifié. Si l'on devait tirer mois par mois, il suffirait de relister les dossiers par utilisateur, en éliminant ceux tirés les mois précédents...
Effectivement, la matrice (ou clé de répartition) n'est faite qu'une seule fois, et ensuite il y a 12 tirages (un par mois
Il faut par ailleurs que j'identifie les super-utilisateurs, du moins celui qui est contrôlé, et l'autre aussi sans doute pour ne pas le confondre avec un utilisateur s'il figure dans la liste.
Pour les utilisateurs, pas de distinction à faire, sauf si tu as établi une correspondance à respecter avec ta numérotation U1, U2...Cela veut dire aussi que le fichier Utilisateur1.xlsm comprendra des données provenant du listing avec un ensemble des dossiers à contrôler (fichier BD SCI.xlsx) avec la clé Utilsateur1 dans la colonne AX.
En tout cas si l'on devait tirer une répartition des dossiers contrôlés aux autres utilisateurs que leur propriétaire, de façon que chacun ait le contrôle d'un dossier qui ne soit pas sien, c'est bien sûr tout à fait réalisable.
Je garde ça précieusement dans un coin de ma tête puisque que c'est quelque chose qui pourrait effectivement se passer.
J'espère avoir pu éclairer ta lanterne.
Salut Curulis57,
Merci pour ton message. Au sujet de ta demande de proposition, après avoir testé ta solution dans la vraie vie! Il y a quelque possibilité d'amélioration:
- Quand l'on lance une recherche, il est possible que l'on veuille couvrir une plage de métier. Par exemple si l'on cherche un automaticien, on voudrait chercher comme automaticien, monteur-électricien, électricien. Ma demande serait donc d'avoir 2 ComboBoxMétiers supplémentaires avec 2 cases à cocher pour permettre une recherche ET (la combinaison de recherche se faisant en OU). De cette façon on pourrait combiner les recherches, Automaticien ET monteur-électricien OU Electricien.
Toujours dans une amélioration de l'efficience de la recherche. Tu te rappelles que sur ta macro d'écrémage le champ métier comprend 5 colonnes. Je voudrais pouvoir rajouter les colonnes 2 (Qualification) et 5 (Expérience) grace à des 2 ComboBox. Le but? Pour l'instant (et les macros ne peuvent rien pour ça!) les nombres que tu as vu sur la base de données correspondent à des niveau de qualification (type de diplôme) et du nombre d'année d'expérience. Grace à cela, je pourrais chercher des électricien avec un niveau de qualification défini et un nombre d'année d'expérience.
Tu regrettes d'avoir posé la question non?
Donc c'est un tirage par mois... on y reviendra.
Les mentions SU1, SU2, U1, U2... ne sont utilisables que si tu dresses une table de correspondance.
La seule identification des utilisateurs est celle de la colonne AX, celle-là est obligatoire. Ils seront donc placés au hasard dans un tableau réaménagé s'il n'y a pas de correspondance.
Plus: les tirages à partir de février devront reprendre les résultats des mois antérieurs. si donc le placement en janvier peut être aléatoire, il sera préférable de le perpétuer les mois suivants, et donc prévoir un dispositif pour les cas d'utilisateurs aui apparaissent ou disparaissent.
Seconde donnée obligatoire : l'identification des dossiers ; s'il y a un dossier par ligne, il doit nécessairement y avoir une colonne qui les identifie de façon unique, et qui sera porté dans le tableau de tirage.
Le reste n'est pas obligatoire pour réaliser le tirage. Les éléments dont je ne dispose pas ne figureront pas dans les résultats. C'est à toi de savoir ce que tu veux obtenir.
Re,
Les mentions SU1, SU2, U1, U2... ne sont utilisables que si tu dresses une table de correspondance.
La seule identification des utilisateurs est celle de la colonne AX, celle-là est obligatoire. Ils seront donc placés au hasard dans un tableau réaménagé s'il n'y a pas de correspondance.
Les mentions SU1, SU2, U1, U2... correspondent au 17 identificateurs (puisque le SU1 n'a pas de dossiers à contrôler) que l'on retrouve dans la colonne AX du fichier "BD SCI"). Elles correspondent également au 18 fichiers (indiqué sur la nouvelle matrice ci-après) SuperUtilisateur1.xlsm, SuperUtilisateur2.xlsm, Utilisateur1.xlsm qui sont tous identiques (à l'exemple du SuperUtilsateur1). La répartition des tris aléatoires selon la matrice permet simplement
Plus: les tirages à partir de février devront reprendre les résultats des mois antérieurs. si donc le placement en janvier peut être aléatoire, il sera préférable de le perpétuer les mois suivants, et donc prévoir un dispositif pour les cas d'utilisateurs aui apparaissent ou disparaissent.
Heureusement pour moi, il n'y a pas beaucoup de changement dans les utilisateurs. Mais, il est vrai qu'un nouvel utilisateur est envisageable et donc que le système doit le prévoir.
Seconde donnée obligatoire : l'identification des dossiers ; s'il y a un dossier par ligne, il doit nécessairement y avoir une colonne qui les identifie de façon unique, et qui sera porté dans le tableau de tirage.
C'est la colonne C "Nr_personnel" du listing avec un ensemble des dossiers à contrôler qui identifie chaque dossier à contrôler
Le reste n'est pas obligatoire pour réaliser le tirage. Les éléments dont je ne dispose pas ne figureront pas dans les résultats. C'est à toi de savoir ce que tu veux obtenir.
Ce que j'aimerai c'est une macro qui me permette d'obtenir chaque mois les 38 numéros de lignes correspondant à 38 dossiers choisis de manière aléatoire selon le critère des 2 dossiers par utilisateur (SU1, SU2, U1, U2...) et que sur ces fameux 2 dossiers l'on puisse savoir quel est le dossier pour l'autocontrôle (les données allant être copiée dans le dossier de l'utilisateur correspondant) et quel est le dossier qui sera contrôlé par les SuperUtilisateurs (1 ou 2). Une fois que j'ai cette répartition, mes modestes connaissances VBA devraient (j'ai appris à utiliser le conditionnel) me permettre de copier les données dans les différents fichiers des utilisateurs (SuperUtilisateur1.xlsm, SuperUtilisateur2.xlsm, Utilisateur1.xlsm,...).
Voilà, j'espère avoir pu te donner une idée plus claire de ma question.
Avant Démo Tirage, je ne reviens que pour question réclamant choix d'une option.
question relative au déroulemen global du processus : réinitialisation annuelle complète en début d'année ou réinitialisation mensuelle tournante ?
C'est à dire : on est cadré sur l'année civile, on tire mois par mois, on ne reprend pas les dossiers des mois antérieurs de l'année. Pour l'année suivante, on efface tout et on repart à zéro.
Ou bien : à chaque tirage mensuel on réinitialise le mois seulement, on ne reprend pas les dossiers des 11 mois précédents. On boucle ainsi d'une année sur l'autre (évidemment au démarrage, il n'y a rien dans les 11 mois précédents...)
Bonjour MFerrand,
Concernant ta dernière question, je préférerai que l'on parte sur une réinitialisation mensuelle tournante. En effet, en janvier 2017, les fichiers des utilisateurs seront remis à zéro par contre, il ne faut pas que l'on tombe sur des dossiers ayant été contrôlé en décembre 2016.
Rapport d'étape : c'est en principe terminé, mais il faudra attendre que je teste et élimine les erreurs [il y a toujours des erreurs
Bon, il y a 9 procédures à tester (j'ai modularisé), quelques préparatifs pour tester dans de bonnes conditions, et je dois renouveler quelques provisions alimentaires, ça va prendre un peu de temps mais tu devrais l'avoir demain.
Bonne journée.
Bonjour MFerrand,
Merci pour le retour, je me réjouis de demain pour pouvoir tester ta solution. Encore merci pour ta collaboration et bonne journée également
Bonjour,
On va pouvoir commencer par quelques explications.
J'ai naturellement modifié sensiblement ta matrice. La structure demeure semblable : 12 mois, mois sur 3 colonnes, 2 lignes par utilisateur, cellules fusionnées pour le nom utilisateur.
Je travaille sur les éléments figurant dans la base et qui y seront prélevés, donc : les U1, U2 etc. n'ont pas cours. Les identifiants à partir desquels se fait le tirage par utilisateur figureront en première colonne. En 2e colonne les indicatifs des dossiers tirés à contrôler (issus également de la base). Et en 3e colonne les noms des contrôleurs, soit des 2 contrôleurs externes, pour le cas d'auto-contrôle, la mention "Auto" figurera à cet emplacement.
Je règle tout de suite la question des "super-utilisateurs" jouant le rôle de contrôleur externe. Le SU2 traitant des dossiers devrait donc figurer dans la base (le SU1 n'en traitant pas, non en principe). Ne connaissant pas le SU2 je ne peux l'identifier au départ.
Donc, j'ai prévu son identification lors de la constitution du plan de contrôle.
Pour cela 2 constantes sont définies en tête de module : SU1 et SU2 ; les valeurs "SuperUtilisateur1" et "SuperUtilisateur2" leur sont pour l'instant attribuées. Il faudra les remplacer par les identifiants correspondants.
Lors de la mise en place du plan, on contrôle que l'on n'attribue pas au SU2 son dossier qui doit être contrôlé par le SU1.
Pour en finir avec le tableau, aux noms de mois a été rajoutée l'année (2015 puisqu'on part de l'état antérieur) qui sera modifiée lors de l'initialisation du mois pour l'année en cours. (Une apostrophe devant ces noms, pour éviter leur transformation automatique en dates par Excel.)
En A3, figure le numéro du mois en cours. Cette cellule est nommée (le nom sert en particulier à l'adressage sur la feuille pour opérer indépendamment du nom de la feuille). Il convient donc de ne pas toucher à cette cellule et de conserver le positionnement relatif de l'ensemble du tableau par rapport à elle (sans quoi plus d'adressage possible).
Au-dessus un bouton : Tirage mois suivant, qui sert à lancer la procédure. Le mois en cours étant à 0, il va lancer la proc. pour Janvier 2016 (2016 parce que 2015 figure en Janvier et sera incrémenté).
Si tu veux commencer en Avril, tu tapes 3 dans la cellule mois en cours, et la proc. tirera le mois suivant soit 4 = Avril. (Il faudra alors remplacer 2015 par 2016 pour les mois antérieurs, sinon après décembre 2016, la proc. voudra faire Janvier 2016 ! Sauf pour sauter des mois donc, il n'y a pas lieu de toucher à cette cellule, après 12 elle passera à 01...
Pour épuiser les généralités, autre constante figurant en tête de module : base, qui accueille le nom du classeur (au cas où BD SCI ne serait pas le bon, ou s'il change).
Ne sont par contre pas prévus deux éléments :
• les chemins de dossiers : on a supposé un seul dossier dans lequel se trouverait également le classeur Matrice. Les chemins sont donc tous définis par ThisWorkbook.Path & "\".
Si le chemin est différent mais commun à tous les classeurs concernés, on pourra rajouter une constante pour le chemin.
S'il est différent pour tous les classeurs : une constante pour la base, mais il faudra alors une procédure spécifique pour ouvrir les classeurs de contrôle.
Un point éventuellement à revoir ultérieurement.
• j'ai vu au passage la présence d'une macro dans le classeur contrôle, destinée à verrouiller les feuilles. Il n'était pas question de verrouillage au départ et je m'en suis aperçu fortuitement car elle ne fonctionnait pas en raison d'une erreur...
Il n'est pas prévu actuellement de déverrouiller les classeurs pour écrire et les reverrouiller. Ce sera donc le cas échéant une nouvelle procédure à créer.
Pause café.
On reprend.
Le débogage s'est assez bien déroulé au départ, 3 erreurs seulement. De ce point de vue j'étais plutôt content, mais 2 erreurs triviales : une substitution de numéros de lignes de la base aux indices de tableau et la seconde (j'en rougis encore !
Une fois réglé ces points, est apparue une erreur que je n'avais pas individualisée au départ, se produisant de façon intermittente, une fois sur 2 ou 3. Erreur 424 (Objet requis). Là où elle se produisait, pas de problème de qualification a-priori, j'en suis tout de même venu à supprimer une instruction With... End With pour n'avoir que des qualifications directes d'objets. Mais rien à faire, retour régulier de l'erreur. Je me suis alors rendu compte que le classeur base était toujours au premier plan au moment de l'erreur bien qu'il n'intervenait plus dans la procédure en cours. Cela devait troubler Excel par moments ! J'ai donc anticipé juste avant la fermeture de la base, et il semble que cela ait réglé ce dernier problème.
Toutefois, comme l'erreur était intermittente, il y a lieu de le noter au cas où elle ressurgirait...
Je ne documente en principe pas mon code. Les commentaires ont plutôt tendance à me gêner qu'à m'aider quand je le reprend. J'ai toutefois introduit des commentaires dans la procédure principale de façon que tu puisses t'y retrouver.
La programmation est modulaire : la proc. principale lance tour à tour les autres procédures accomplissant chacune une phase du processus global. Simple, car il n'y a pas de chevauchement et cela reste donc assez linéaire, on ne perd donc pas le fil du déroulement.
J'espère que tu n'es pas un adepte des noms de variables longs, car avec moi, plus un nom de variable est court, meilleur il est !
Utilisant toujours et depuis longtemps à peu près les mêmes noms pour les mêmes types, je n'ai pas de difficulté particulière avec, mais cela peut déstabiliser...
4 variables de niveau module, pouvant ainsi être utilisées par plusieurs procédures, dont 3 tableaux : un pour recueillir les noms des utilisateurs (on recueille en même temps leur position dans la base, lignes début et fin, pour y revenir plus rapidement ensuite, et ces indications seront remplacées lors du tirage par les lignes occupées par les 2 dossiers tirés pour chaque utilisateur) ;
le 2e pour y recueillir les identifiants des dossiers de chaque utilisateur (est réinitialisé pour chacun) avant tirage, on y note aussi les numéros de lignes pour y revenir directement ensuite ;
le 3e sert à accueillir les dossiers tirés, c'est à partir de lui que sera servie la matrice, les données à recueillir pour chaque dossier y sont également consignées, et il est donc également utilisé pour servir les classeurs.
La dernière variable est destinée à recueillir les dossiers tirés pour contrôle antérieurement dans l'année. C'est fait sous forme de chaîne dans laquelle on recherchera si une occurrence d'un dossier listé avant tirage apparaît (pour le supprimer de la liste dans ce cas).
Dernier point général sur lequel je voulais appeler ton attention : en situation de dossiers stables (mais tu m'as dit que ce n'était pas le cas... toutefois...) la rotation annuelle exige un minimum de 24 dossiers par utilisateur pour se faire (sans déclenchement d'erreur) ou alors que au moins 2 nouveaux dossiers apparaissent par mois et par utilisateurs. Pour la majorité (dans ton échantillon) dont le nombre de dossiers va de 49 à 120, pas de problèmes. Mais il y en a deux dont ce nombre se limite à 12 et 15, ce pourquoi je signale le point.
J'ai bien gagné une nouvelle pause !
Bonjour MFerrand,
Merci pour le retour détaillé. Je l'ai parcouru attentivement, et bien que n'ayant pas l'objet sous les yeux je n'ai pas vu de problème dans ta solution.
Au sujet de tes questions sur les éléments non prévus:
• les chemins de dossiers : on a supposé un seul dossier dans lequel se trouverait également le classeur Matrice. Les chemins sont donc tous définis par ThisWorkbook.Path & "\".
L'arborescence est la suivante: le classeur matrice et le classeur BD_SCI se trouve dans un dossier commun et tous les dossiers d'utilisateurs se trouvent dans un sous-dossier (2016) de ce dossier. Chaque année, on crée un nouveau sous-dossier (2017, 2018, ....) avec des classeurs utilisateurs vierges.
j'ai vu au passage la présence d'une macro dans le classeur contrôle, destinée à verrouiller les feuilles. Il n'était pas question de verrouillage au départ et je m'en suis aperçu fortuitement car elle ne fonctionnait pas en raison d'une erreur...
Effectivement, il y a une macro qui permet de combiner l'utilisation du mode plan et du verrouillage des feuilles. Si cela ne fonctionne pas avec ta solution alors je supprimerai le mode plan pour garder le verrouillage des feuilles (les cellules où l'on inscrit les données n'étant pas protégées.
Il n'est pas prévu actuellement de déverrouiller les classeurs pour écrire et les reverrouiller. Ce sera donc le cas échéant une nouvelle procédure à créer.
Pas de problème, pour copier les données tu dois passer par un "workbooks.open" je rajouterai le password des différents utilisateurs.
Dernier point général sur lequel je voulais appeler ton attention : en situation de dossiers stables (mais tu m'as dit que ce n'était pas le cas... toutefois...) la rotation annuelle exige un minimum de 24 dossiers par utilisateur pour se faire (sans déclenchement d'erreur) ou alors que au moins 2 nouveaux dossiers apparaissent par mois et par utilisateurs. Pour la majorité (dans ton échantillon) dont le nombre de dossiers va de 49 à 120, pas de problèmes. Mais il y en a deux dont ce nombre se limite à 12 et 15, ce pourquoi je signale le point.
Le turn-over des utilisateurs est stable, mais pas celui des dossiers
Bon café! Pour moi aussi
Je vais modifier tout de suite le chemin pour le dossier des classeurs contrôle avant de te mettre le fichier. Avec ton information c'est bénin : j'ai juste à envoyer à la procédure une variable qui existe déjà et qui contient l'année.
Pour les mots de passe, ce sera un peu plus compliqué (si tu ne veux pas en être réduit à le faire à la main). Les utilisateurs vont se trouver classés par ordre alpha suite au tri. En cas de mouvements, il y a toujours risque de perdre la coincidence (cas où tu établirait une variable contenant les mots de passe). Il faut donc pouvoir les prélever dans une table, à partir du nom utilisateur, de façon à les avoir dans l'ordre pour opérer dans la boucle d'ouverture-fermeture de chaque classeur.
Mais teste d'abord avec des classeur déverrouillé, on pourra régler rapidement ça ensuite.
Je crois que c'est tout ! Je me refais un café et j'envoie le fichier après dernière modif.
Voilà qui est fait (pour le fichier / pas mon café). Je reviens pour t'indiquer les différentes phases...
J'ai bien reçu ton fichier, je vais regarder et essayer de comprendre ta méthode pour l'implémenter dans mon environnement de travail. Je reviens vers toi dès que possible. Déjà un immense merci pour tout le travail