Bonjour,
J'apprends à utiliser les add-in d'Excel. Jusqu'à présent j'avais un fichier qui a pris du volume, voilà pourquoi cela me conduit à utiliser le concept de Add-in. Concrètement, je divise mon programme en deux fichiers, l'un comme add-in regroupant les feuilles modèles et l'essentiel des fonctions, l'autre étant la solution générée par l'add-in et ayant le moins de fonctions possibles de manière à ce que le fichier soit le moins volumineux !
Dans le classeur non add-in, je mets une référence VB de manière à ce que les appels des fonctions qui y figurent soient reconnus par le compilateur.
C'est là que le bât blesse : l'ensemble de deux fichiers se trouvent être dans deux endroits distincts sur une clé USB ; Le programme se veut être prévu pour travailler indistinctement depuis la clé sur différent postes de travail sans pour autant configurer ou laisser quelconques traces du programme après son utilisation et la clé retirée.
Cela conduit à ce que le chemin de la référence ne soit pas fixe : non pas que les fichiers vont changer de place dans la clé, mais la lettre de la clé peut, elle, changer.
Cela signifie, par exemple, que sur un poste particulier la clé n'est plus sur f:, mais sur g:, la référence de mon classeur ne pointe plus l'add-in.
A défaut d'avoir trouvé une solution à cette référence volatile, sans changer tout les excel des postes sur lequel le programme viendrait à être exécuté, je tolère que la plupart du temps la lettre de la clé soit bien celle reconnue par mon add-in, f:...
Mais dans le cas où cela n'est pas, je ne voudrais pas que le programme chante à chaque démarrage, ou clique sur une feuille que l'add-in est absent !
En effet, l'absence de l'add-in conduit à ce que les fonctions, les définitions dans le classeur ou les feuilles ne soient plus reconnues et Excel le rappel à chaque lecture des lignes de codes.
Je cherche à faire une sorte de mode lecture, une sorte de lecture seule, où les cellules ne sont plus sélectionnables, seulement lisibles (y compris les cellules non verrouillées). Concrètement, en tête, mon programme détecte que l'add-in est absent, il passe en mode lecture en prévenant l'utilisateur, et toutes les erreurs de fonctions ou définitions non reconnues sont oubliées et non rappelées!
J'ai pensé pour cela à diverses solutions, comme l'utilisation de fonction conditionnée à une variable 'ModeLectureEnCours', mais cela ne fonctionne pas pour les définitions (notamment dans les feuilles), puis sinon à suspendre les événements. Cette dernière solution me paraissait intéressante, mais je ne veux pas que mon fichier ne bloque le fonctionnement d'autres fichiers succeptibles d'être ouverts. En effet, si j'ouvre mon classeur, qui suspend les évenements, comment détectera-t-il alors que le focus s'est déplacé sur un autre classeur de manière à ce qu'il réactive les événements...
Bon voilà mon impasse, si quelqu'un pourrait me faire avancer, merci d'avance!
PS :
Activer un mode lecture suppose que l'on détecte intentionnellement l'absence de l'add-in. Comment faire, si l'add-in n'est pas volontairement défini dans les add-in d'excel ; il apparait comme classeur dans VBE, mais n'est pas lisible comme Workbooks... Décidemment Excel donne du fil à retordre, ou bien c'est moi?
J'apprends à utiliser les add-in d'Excel. Jusqu'à présent j'avais un fichier qui a pris du volume, voilà pourquoi cela me conduit à utiliser le concept de Add-in. Concrètement, je divise mon programme en deux fichiers, l'un comme add-in regroupant les feuilles modèles et l'essentiel des fonctions, l'autre étant la solution générée par l'add-in et ayant le moins de fonctions possibles de manière à ce que le fichier soit le moins volumineux !
Dans le classeur non add-in, je mets une référence VB de manière à ce que les appels des fonctions qui y figurent soient reconnus par le compilateur.
C'est là que le bât blesse : l'ensemble de deux fichiers se trouvent être dans deux endroits distincts sur une clé USB ; Le programme se veut être prévu pour travailler indistinctement depuis la clé sur différent postes de travail sans pour autant configurer ou laisser quelconques traces du programme après son utilisation et la clé retirée.
Cela conduit à ce que le chemin de la référence ne soit pas fixe : non pas que les fichiers vont changer de place dans la clé, mais la lettre de la clé peut, elle, changer.
Cela signifie, par exemple, que sur un poste particulier la clé n'est plus sur f:, mais sur g:, la référence de mon classeur ne pointe plus l'add-in.
A défaut d'avoir trouvé une solution à cette référence volatile, sans changer tout les excel des postes sur lequel le programme viendrait à être exécuté, je tolère que la plupart du temps la lettre de la clé soit bien celle reconnue par mon add-in, f:...
Mais dans le cas où cela n'est pas, je ne voudrais pas que le programme chante à chaque démarrage, ou clique sur une feuille que l'add-in est absent !
En effet, l'absence de l'add-in conduit à ce que les fonctions, les définitions dans le classeur ou les feuilles ne soient plus reconnues et Excel le rappel à chaque lecture des lignes de codes.
Je cherche à faire une sorte de mode lecture, une sorte de lecture seule, où les cellules ne sont plus sélectionnables, seulement lisibles (y compris les cellules non verrouillées). Concrètement, en tête, mon programme détecte que l'add-in est absent, il passe en mode lecture en prévenant l'utilisateur, et toutes les erreurs de fonctions ou définitions non reconnues sont oubliées et non rappelées!
J'ai pensé pour cela à diverses solutions, comme l'utilisation de fonction conditionnée à une variable 'ModeLectureEnCours', mais cela ne fonctionne pas pour les définitions (notamment dans les feuilles), puis sinon à suspendre les événements. Cette dernière solution me paraissait intéressante, mais je ne veux pas que mon fichier ne bloque le fonctionnement d'autres fichiers succeptibles d'être ouverts. En effet, si j'ouvre mon classeur, qui suspend les évenements, comment détectera-t-il alors que le focus s'est déplacé sur un autre classeur de manière à ce qu'il réactive les événements...
Bon voilà mon impasse, si quelqu'un pourrait me faire avancer, merci d'avance!
PS :
Activer un mode lecture suppose que l'on détecte intentionnellement l'absence de l'add-in. Comment faire, si l'add-in n'est pas volontairement défini dans les add-in d'excel ; il apparait comme classeur dans VBE, mais n'est pas lisible comme Workbooks... Décidemment Excel donne du fil à retordre, ou bien c'est moi?