IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Lien hypertexte automatique [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 23
    Points
    23
    Par défaut Lien hypertexte automatique
    Bonjour,
    Je suis entrain de créer un tableau de bord,

    j'ai créé l'interface, et les autres fichiers excels que je veux y accéder, sont dans un autre dossier:

    l'interface sur excel est comme suit :

    Nom : Sans titre.png
Affichages : 462
Taille : 20,6 Ko


    pour chacune des formes, je veux affecter des macros pour l'accès à chacun des classeurs.
    par exemple si je clique sur " tableau de bord d'activité", le classeur de ce dernier s'ouvre automatiquement mais après avoir saisi un mot de passe d'accès.
    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Points : 412
    Points
    412
    Par défaut
    Bonjour à toi,

    Tout d'abord, sais-tu utiliser l'éditeur VBA ? Tu ne nous donnes aucune info sur tes connaissances en la matière, il est donc difficile de savoir par où commencer... Quoi qu'il en soit :

    La manière la plus basique est, selon moi, d'utiliser une InputBox, qui est une boîte de dialogue demandant à l'utilisateur d'entrer du texte.
    On pourrait également créer un formulaire pour le mot de passe, mais peut-être que la première solution de suffira.

    Cette solution est très basique et représente beaucoup d'inconvénients, mais dans un premier temps ça répondra à ton problème, je pense.

    Donc pour commencer, ouvre ton fichier Excel que tu nous as montré, puis ouvre l'éditeur VBA à l'aide du raccourci ALT-F11.
    Insère ensuite un module dans ton projet et assure-toi de travailler dedans (il doit être sélectionné dans l'aborescence projet sur la gauche)
    Ensuite, copie-colle ce qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub TdBActivités()
     
    Dim CheminCible As String
    CheminCible = "C:\...\tonfichieràouvrir.extension"
     
    Dim MdP As String 
    MdP = "1234AZERTY" 'ton mot de passe entre guillemets
     
    Dim Réponse As String
    Réponse = InputBox("Entrez le mot de passe afin de continuer")
     
    If Réponse <> MdP Then 
        MsgBox "Mot de passe incorrect ! Impossible de continuer...",vbExclamation,"Erreur"
    Else
        MsgBox "Mot de passe correct ! Le classeur choisi va maintenant s'ouvrir",vbInformation,"Réussite"
        Workbooks.Open CheminCible
    End If
     
    End Sub
    Ensuite, tu cliques droit sur ta première forme et tu affectes la macro "TdBActivités"...

    Tu n'as plus qu'à copier-coller en changeant le nom de la macro, le chemin et éventuellement le MdP et d'affecter ces macros aux formes et le tour est joué !
    Ce n'est pas très très pro mais c'est une solution

    Quentin

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 23
    Points
    23
    Par défaut
    Merci beaucoup pour ton aide, mais il reste un problème; le macro que tu m'a fourni, je le mets dans un module et j'enregistre et ça marche, mais moi , je veux personnaliser le formulaire,
    Nom : Sans titre.png
Affichages : 387
Taille : 90,0 Ko
    comme celui là

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Points : 412
    Points
    412
    Par défaut
    Je pense que tu peux "simplement" faire un seul formulaire au lieu d'en faire autant que de boutons que tu as.

    Je ne suis pas expert là-dedans, mais à mon avis en passant par une variable globale au niveau du module, cela fera l'affaire.

    Rebonjour,

    J'ai une solution à te proposer (si quelqu'un a mieux, n'hésitez pas à me le dire !)

    NOTA : Je pars du principe que ton module s'appelle Module1, ton formulaire UserForm1, ta zone de texte TextBox1, tes boutons respectivement CommandButton1 et 2. Si ce n'est pas le cas, il te faudra adapter le code...

    Premièrement, ce que tu pourrais faire est de mettre ceci dans ton Module1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Public Choix As String 'déclarer une variable publique que ton UserForm pourra lire
     
    Sub TdBActivités()
     
    Choix = "Activités" 'Affecter au choix une valeur que tu reconnaîtras à l'ouverture du formulaire pour définir quel fichier ouvrir, adapter le texte du formulaire et préciser quel mot de passe, par exemple
    UserForm1.Show 'Afficher le formulaire
     
    End Sub
     
    Sub GrillePolyvalence()
     
    Choix = "GrillePolyvalence" 'Affecter au choix une valeur que tu reconnaîtras à l'ouverture du formulaire pour définir quel fichier ouvrir, adapter le texte du formulaire et préciser quel mot de passe, par exemple
    UserForm1.Show 'Afficher le formulaire
     
    End Sub
     
    'Etc pour toutes les formes
    Ensuite, dans le code de ton Formulaire, marque ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Dim MdP As String 'Déclare une variable globale qui pourra être lue/modifiée d'une macro à une autre
    Dim FichierCible As String 'Déclare une autre variable globale, celle-ci contiendra le lien vers le fichier et dépendra de la variable Choix du module1
     
    Private Sub UserForm_Initialize()
    MdP = "1234AZERTY" 'tu affectez le mot de passe à la variable MdP 
    TextBox1.PasswordChar = "*" 'si tu ne l'as pas fait par défaut, cela mettra des * au lieu d'afficher le mdp tapé
     
    Select Case Module1.Choix 'là tu vas analyser la variable publique Choix du module1
        Case "Activités"
            Me.Caption = "Accès au tableau de bord d'activités" 'ceci changera le texte en haut du formulaire
            FichierCible = "C:\...\TableauActivités.xls" 'bien sûr, mets ici ton lien !
            'Tu pourrais également changer ici le mdp pour qu'il soit spécifique à ce fichier
        Case "GrillePolyvalence"
            Me.Caption = "Accès à la grille de polyvalence"
            FichierCible = "C:\...\GrillePolyvalence.xls" 'bien sûr, mets ici ton lien !
        'Case ... fais de même pour tous les cas qui t'intéressent
     
        Case Else 'si aucun des cas précédents a été rempli, alors marquer une erreur et fermer le formulaire
            MsgBox "Une erreur s'est produite, contactez XXX", vbCritical, "Erreur"
            Me.Hide
            Unload Me
     
    End Select
     
    End Sub
     
    Private Sub CommandButton1_Click() 'Bouton de connexion
        Select Case TextBox1.Text
            Case MdP
                MsgBox "Mot de passe correct ! Le fichier va maintenant s'ouvrir...", vbInformation, "Réussite"
                Workbooks.Open FichierCible
                Me.Hide
                Unload Me
            Case Else
                MsgBox "Mot de passe incorrect ! Veuillez réessayer", vbExclamation, "Erreur"
                TextBox1.Text = ""
                TextBox1.SetFocus
        End Select
     
    End Sub
     
    Private Sub CommandButton2_Click() 'Bouton "Annuler"
    Me.Hide
    Unload Me
    End Sub

    Ceci devrait fonctionner... Je ne sais pas si les experts apprécieront beaucoup l'utilisation d'une variable publique mais je ne sais pas trop comment mieux faire

    Quentin

    EDIT : Bien sûr, ensuite il te faudra faire les liens entre les formes et les Sub du Module1

    D'ailleurs, tu pourrais t'affranchir de tout ça et simplement faire que l'interface de ton tableau de bord principal... soit un userform

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 23
    Points
    23
    Par défaut
    svp, si le contenu que je veux débloquer avec mot de passe est une feuille dans le meme classeur et non pas un autre classeur, comment faire?

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Points : 412
    Points
    412
    Par défaut
    Alors tu peux jouer avec la propriété Sheets(XXX).Visible = xlSheetVeryHidden qui la cache complètement, tu peux uniquement l'afficher de nouveau par macro

    Donc pour la cacher à l'utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(XXX).Visible = xlSheetVeryHidden
    Pour la cacher "simplement" (l'utilisateur peut l'afficher en faisant un clic droit dans les onglets en bas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(XXX).Visible = xlSheetHidden
    Pour l'afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(XXX).Visible = xlSheetVisible

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/03/2014, 14h44
  2. Liens hypertexte automatique dans un index
    Par Yvette dans le forum Word
    Réponses: 5
    Dernier message: 10/01/2011, 09h48
  3. [XL-2003] Lien hypertexte automatique entre 2 feuilles d'1 même fichier
    Par pretor dans le forum Excel
    Réponses: 6
    Dernier message: 12/10/2010, 13h37
  4. Lien Hypertexte Automatique
    Par zenzolarticho dans le forum Excel
    Réponses: 1
    Dernier message: 06/05/2009, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo