Code VBA - Récupérer des valeurs entre diverses feuilles

Trunk

XLDnaute Nouveau
Bonjour à tous,

Je tiens tout d'abord à vous remercier car j'ai pu réussir à trouver un petit bout de code que je cherchais grace aux divers échanges que j'ai pu lire sur ce forum...vous contribuez à aider les personnes, telles que moi, qui ne sont pas expertes en Excel et en développement et qui nécessitent parfois des petits coups de pouce pour parvenir à leurs fins !

Néanmoins, j'ai encore besoin d'aide... Je vous expose mon besoin :

J'ai mis en place dans un fichier excel un petit bout de code VBA qui affiche une feuille spécifique après qu'une personne ait entré un mot de passe (inputbox).

J'aimerais désormais pouvoir afficher à cette personne de manière automatique ce qu'elle est censée voir sur sa feuille dédiée.

--> Nous avons dans ma société un système de gestion électronique de clés contrôlée par des badges, et les personnes qui l'utilisent ont accès à plein de clés et ne savent pas à quoi toutes ces clés correspondent... J'aimerais donc leur montrer au sein d'une feuille l'intitulé des emplacements, mais seulement ceux auxquels ils ont accès.

J'ai fait un fichier excel exemple très raccourci que je joins à ce message, pour imager un peu ...

J'ai une feuille nommée "Accès" où j'ai comme colonnes :

- une colonne avec le mot de passe de la personne,
- ensuite une colonne avec son Prénom NOM,
- ensuite 5 colonnes correspondant à numéros de groupes qui sont en fait les numéros d'emplacements des clés. Sur la ligne de cette personne sont cochées des croix sous les groupes, indiquant les accès qu'a la personne.

Ensuite j'ai une feuille nommée "Emplacements" où l'on retrouve les numéros d'emplacements et en face de chacun d'entre eux l'intitulé des bureaux.

Ce que j'aimerais réaliser :

- Une personne ouvre le fichier, l'invite de commande lui demande un mot de passe. Elle entre le mot de passe et cela lui affiche la feuille qui lui a été réservée dans le code VBA (feuille "Agent1" ou "Agent2" dans mon fichier),

- la feuille contient un tableau comme celui déjà présent qui va alors lui afficher les numéros et intitulés de clés relatives aux accès qu'il a.

--> Pour cela, il faudrait que le code ait le comportement suivant : Le mot de passe est entré, le fichier cherche dans la colonne mot de passe du fichier "Accès", il vérifie les croix cochées sur la ligne de la personne et fait la relation avec les emplacements de la feuille "Emplacements". Puis les numéros et intitulés de clés sont récupérés et s'affichent les uns après les autres dans le tableau de feuille vue par l'agent.

J'ai simulé le fonctionnement de cet automatisme au sein du fichier excel joint.

Les mots de passe pour accéder au fichier sont "test" et "test2" ("test" affiche la feuille 1 et "test2" affiche la feuille 2).

Je ne sais pas si mes explications sont claires, mais j'ai cogité pendant un petit moment avant de me lancer dans l'écriture de ce message en essayant de clarifier au maximum ... Vous me répondrez peut-être que c'est utopique ce que je demande, ou critiquerez peut-être aussi code déjà en place (vous pouvez bien sur! :)), quoiqu'il en soit je suis ouvert à toute proposition ou aide, même si partielle, du moment que cela peut me permettre d'avancer...

Merci d'avance à tous ceux qui prendront le temps de me répondre.
 

Pièces jointes

  • Exemple simulé.xls
    27 KB · Affichages: 209

Trunk

XLDnaute Nouveau
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Skoobi, si tu passes par là, j'aurais besoin de toi ! :s

Sur le fichier, si je fais une modification sur la page "emplacements" par exemple, que j'enregistre le fichier, puis que je le ferme ensuite, une fenêtre s'affiche demandant si je veux enregistrer les modifications faites aux fichiers.

Si je mets oui, aucun souci, par contre si je mets non, à la réouverture l'inputbox s'affiche avec comme feuille de fond "emplacements" au lieu de "accueil" qui devrait normalement prendre systématiquement le pas à l'ouverture.

Malgré mes diverses insertions de codes, je n'arrive pas à résoudre ce bug ...

Pourrais-tu y jeter un oeil si tu as 5 minutes s'il te plait ?:eek:

Voici ce que j'ai essayé de remettre pour forcer la page accueil à se remettre en fond et les onglets disparaitre au début du Workbook open, mais en vain :

If Sheets("ACCUEIL").Visible = False Then Sheets("ACCUEIL").Visible = True
Sheets("ACCUEIL").Select
 

skoobi

XLDnaute Barbatruc
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Bonjour Trunk,

ce n'est pas le cas chez-moi (en tout cas pas avec le dernier fichier que tu as envoyé).
Mais comme tu as fais des adaptations depuis... merci de nous l'envoyer à nouveau.
 
Dernière édition:

Trunk

XLDnaute Nouveau
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Salut Skoobi ! :)

Effectivement, j'aurais du l'uploader...

Le voici en PJ.

Mot de passe admin (protection + accès au code VBA) : admin

Pour être plus clair sur le problème rencontré : Si j'enregistre une modification en tant qu'admin sur la page emplacements en cliquant sur l'icône en forme de disquette, puis que je ferme le fichier via la croix en haut à droite, ensuite je reviens sur la page accueil avec un message me demandant si je veux enregistrer les modifications : Si je clique sur "oui", aucun souci, si je clique sur "non", à la prochaine ouverture l'inputbox sera vue avec comme fond la page "emplacements".

Ce que je souhaiterais en fait, c'est qu'à la fermeture (plutôt, car à l'ouverture il y a le temps de traitement du code, mais pas essentiel), la page d'accueil soit de nouveau mise par défaut pour la future ouverture du fichier.

J'ai ajouté un petit bout de code, qui l'alourdit certainement...et que j'ai commenté dans le fichier que je joins. Cela permet à l'ouverture de remettre la page accueil par défaut sous l'inputbox, MAIS, il y a un temps de traitement et l'utilisateur a le temps de voir rapidement cette page...
Et puis clairement, le code n'est pas trop propre ... J'ai passé mon après-midi d'hier à tenter de trouver THE astuce, mais en vain.

Le cas est valable également pour la feuille Accès...
 

Pièces jointes

  • DEV.zip
    36.6 KB · Affichages: 37
  • DEV.zip
    36.6 KB · Affichages: 36
  • DEV.zip
    36.6 KB · Affichages: 33

skoobi

XLDnaute Barbatruc
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Salut Trunk,

Je te suggère d'utiliser l'événement BeforeSave plutôt que BeforeClose (à supprimer).
Comme ça, avant chaque enregistrement, la feuille "accueil" sera toujours active.
Et en fermant le fichier, excel ne te demandera plus si tu veux enregistrer alors que tu l'a fais auparavant;).

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ProtectSheet ("")
Sheets("ACCUEIL").Activate
End Sub

Bon test.
 
Dernière édition:

Trunk

XLDnaute Nouveau
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Salut Skoobi !

Excellente alternative ! Fonctionne parfaitement effectivement ... je préciserai par contre aux personnes qui vont modifier le fichier qu'ils ne s'étonnent pas à l'enregistrement d'être redirigés directement sur la page d'accueil.

Merci mille fois Skoobi, ton aide est toujours précieuse !!! :cool:

PS : Je cherche, mais strictement rien d'urgent, seulement "au cas où", comment faire pour mettre l'inputbox avec des "*" plutôt que de voir la saisie...si tu sais? Mais j'avais regardé sur divers forums et apparemment ce n'était pas si simple que ça d'après les réponses que je voyais...
 

Trunk

XLDnaute Nouveau
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Oui bien sur !

Le voici ci-dessous, mot de passe admin : "admin" (idem pour accès au code VBA).
 

Pièces jointes

  • DEV.zip
    32.3 KB · Affichages: 70
  • DEV.zip
    32.3 KB · Affichages: 65
  • DEV.zip
    32.3 KB · Affichages: 66

skoobi

XLDnaute Barbatruc
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Re,
bonjour nat54,

Salut Skoobi !

PS : Je cherche, mais strictement rien d'urgent, seulement "au cas où", comment faire pour mettre l'inputbox avec des "*" plutôt que de voir la saisie...si tu sais? Mais j'avais regardé sur divers forums et apparemment ce n'était pas si simple que ça d'après les réponses que je voyais...

Effectivement, c'est pas simple, je l'ai déjà vu sur ce forum mais je ne le trouve plus, bonne recherche ;).
 

skoobi

XLDnaute Barbatruc
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Encore moi.

Une autre alternative est d'utiliser un userform avec un textbox en utilisant la propriété PassWordChar à la place de l'inputbox, moins compliqué, à toi de voir.
 

Trunk

XLDnaute Nouveau
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Je pense avoir trouvé la réponse dont tu parles et il me semble que c'était en partie ce qui était évoqué ... mais là tu me parles de choses qui me dépassent un peu ... pour ne pas dire beaucoup.

Tant pis, ça restera comme ça pour le moment, je ferai des recherches complémentaires sur la base de ce que tu me dis pour essayer de trouver comment faire cela...

Merci en tous cas Skoobi ! :)
 

Trunk

XLDnaute Nouveau
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Bonjour,

Après une présentation aujourd'hui du fichier, je me suis fait piéger sur un point !

En ouvrant le fichier avec wordpad (clic droit/ouvrir avec), on peut récupérer le mot de passe admin, ainsi que les codes PIN qui ont été définis pour les utilisateurs ........ :|

Y'a-t-il une possibilité d'empêcher cela ?
 

skoobi

XLDnaute Barbatruc
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Bonjour Trunk,

Ah bon :eek:.
Je suis curieux de voir à quand ressemble ce fichier si tu veux bien.
Y'a-t-il une possibilité d'empêcher cela ?
Désolé, là je vois pas du tout...:eek:.
Peut-être en passant pas du VBScript mais je n'y connais rien car on entre dans le domaine de windows...
Celà dit quel intérêt de vouloir ouvrir un fichier excel avec wordpad:confused:
Cela montre bien que les "fouineurs" ont des intentions non louables non?:mad:
Une preuve de plus qu'il ne faut pas utiliser excel si l'on veut protéger ses fichiers, données quelconques, un petit malin arrivera toujours à "cracker" les mots de passe.
Bon courage.
Bonne soirée.
 
Dernière édition:

Trunk

XLDnaute Nouveau
Re : Code VBA - Récupérer des valeurs entre diverses feuilles

Arf, oui, même avec tous ces verrouillages, le fichier reste aisément "crackable" ... abusé quand même ! :s

Voilà une copie d'écran en PJ, tu verras le mot de passe en clair (exemple, j'ai remplacé par "admin" pour ne pas afficher notre vrai mot de passe ... ;) ), même au dessus il s'y trouve encore ... et à trois autres endroits dans le fichier. En fait, le code VBA est traduit en clair ... forcément ... :mad:
 

Pièces jointes

  • Wordpad.jpg
    Wordpad.jpg
    16.9 KB · Affichages: 72

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
295
Réponses
2
Affichages
155
Réponses
8
Affichages
148

Statistiques des forums

Discussions
312 176
Messages
2 085 965
Membres
103 069
dernier inscrit
jujulop