écrire une macro avec code d'accès

Résolu
yapluka14 Messages postés 20 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 20 janvier 2007 - 6 janv. 2007 à 19:52
yapluka14 Messages postés 20 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 20 janvier 2007 - 7 janv. 2007 à 16:41
Bonjour
j'ai réalisé un petit programme sur excel. Une douzaine de personnes doivent pouvoir ouvrir ce classeur ( pas en même temps) en ayant les mêmes droits et en libérant les mêmes accès à certaines cellules. 
Ma demande est la suivante: puis je le faire en attribuant une macro à chaque personne et un mot de passe,  est ce possible? Sinon comment faire. je ne suis pas programmateur mais volontaire et décidé à réaliser ce projet. Merci pour vos réponses
Jean Yves

16 réponses

yapluka14 Messages postés 20 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 20 janvier 2007
7 janv. 2007 à 16:41
Bonjour
Merci pour votre aide , j'ai déjà eu ma réponse à ma question, c'est vrai que j'ai d'autres questions qui seront dans un autre post. je cliq donc su réponse acceptée
merci et à bientôt
jean yves
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 janv. 2007 à 19:58
Salut,

tu peux faire du code et un identifiant pour chaque personne (dans le Module ThisWorkbook, évènement WorkBook_Open), mais sache que si les macros sont désactivés, n'importe qui pourra accéder au fichier.
Et le problème du mot de passe à l'ouverture du classeur (mot de passe Excel), tu ne peux en mettre qu'un.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
yapluka14 Messages postés 20 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 20 janvier 2007
6 janv. 2007 à 20:19
Salut
merci pour la réponse mais il faut un code différent pour chaque personne. Peux ton s'opposer à la déactivation des macros? le module dont tu ma parlé on le trouve ou? est ce compliqué? l'application developpée est un petit programme de prescriptions médicales, chaque medecin doit avoir son code, c'est la preuve que c'est bien lui qui a rédigé les prescriptions. Avec quels logiciels le faire si la sécurité sur excel est aussi faible?
Ce serait dommage que je m'a  rrete là car c'est le seul point qui ma bloque, le reste est fait et fonctionne trés bien.  il me manque la sécurité d'accès. Merci pour vos futurs conseils
Jean Yves
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 janv. 2007 à 20:23
Non, tu ne peux pas t'opposer à la désactivation des macros.
Tu peux cacher ton code (et donc les mots de passe ne seront pas visibles) mais si qqun met la sécurité à élevé, ton classeur s'ouvrira.

Si cela te conveint malgrè tout, je te fais un bout de code.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yapluka14 Messages postés 20 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 20 janvier 2007
6 janv. 2007 à 20:40
resalut
J'ai réservé une douzaines de cellules une pour chaque médecin, j'y pense mettre une macro par personne, il faut un code pour chacun Le but losrque le medecin cliq sur son nom, il doit faire un code qui lui inscrit son nom sur la prescription et ouvre les champs de prescription. Merci pour le bout de code mais si tu peux joindre quelques explications car je débute  mais j'espère un jour  y arriver tout seul... C'est surtout la mise en place des codes d'accès dans la macro qui me pose problème
Du moins me mettre les endroits ou je peux apprendre à faire les codes et les mettre en place.
si tu as besoin du fichier excel ou d'autres explications,...
Merci encore
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 janv. 2007 à 20:47
Tu peux faire un seul code pour les douzes personnes, par contre ce que je ne comprends pas, c'est ce qui doit se passer lorsque le medecin clique sur son nom !
Peux-tu me donner plus de précisions stp ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
yapluka14 Messages postés 20 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 20 janvier 2007
6 janv. 2007 à 21:24
Un seul code pour les douzes personnes  ne me convient pas, on obtient si j'ai bien compris la même chose que s'il y avait un mot de passe commun pour déprotégé certaines cellule du fichier excel. Est il possible de réaliser une macro avec code de connection?  si oui comment faire?si non je crois que je vais faire un menu déroulant avec tous les noms de medecins et un code d'accés commun connu d'eux seul pour acceder à certaines cellules d' excel. ça je sais le faire. Ce que je désirai faire c'est aprés connection grace à un code, le nom du médecin s'inscrivait dans une cellule qui serait visible sur l'impression de la prescription. une macro banale (copier/ coller). c'est la protection qui me pose problème.
merci pour ta réponse. est ce qu'Acess  pourrait m'apporter plus de solutions?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 janv. 2007 à 21:35
Concernant Access, pas forcémment.

Pour un début de code, en voici un :
(le coup de la connection, pas trop suivi ce que ça doit faire. par contre je vais pas tardé à partir, si après moi personne ne t'aide, t'en fais pas, je repasse demain)

' Il faut faire, dans Excel, Alt + F11 (éditeur VB s'ouvre). A
gauche, tu as une fenêtre _
"Projet - VBAProject", avec le nom de ton classeur, des Modules
comportant le nom de tes _
feuilles, et en dernier, "ThisWorkBook". Double Clique sur
celui-ci, a droite de cette _
fenêtre doit aparaitre une page blanche. Colle ce code
:

Private Sub Workbook_Open()

'Cette procédure
s'exécute à chaque fois que ton classeur est ouvert !

    Dim sName As String
' ici on déclare une
variable (c'est sName, elle contiendra une information _
en l'occurence, le nom du
médecin). Cette variable est déclarée de type String _
ce type est un type pour
accueillir une chaine de caractères.

sName = InputBox("Veuillez saisir votre nom
:", "Identification")
' InputBox c'est une boite de message, recueillant une information
que _
l'utilisateur va
saisir lui même. sName réceptionnera le résultat

Select Case sName
' Select Case : c'est pour étudier plusieurs résultats possible
:
    Case "Yapluka14"  'si Yapluka14 est
saisie
        ' ici les actions à faire si c'est
cette personne
        
    Case "Mortalino"  'si Mortalino est
saisie
        ' ici les actions à
faire si c'est cette personne

    Case "Jules Tartempion"  'si Jules Tartempion est
saisie
        ' ici les actions à faire si c'est cette
personne
    
    '
Etc...
    
    Case Else
        MsgBox "Vous n'êtes pas autorisé à
rentrer dans ce fichier, celui-ci va se fermer !"
        ThisWorkbook.Close False  'ferme le classeur sans enregistrer
End Select

End Sub


~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
yapluka14 Messages postés 20 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 20 janvier 2007
6 janv. 2007 à 21:59
merci pour tes réponses et ta proposition de code, c'est vraiment sympa.
de toute façon  je  te tiens au courant de ma réflexion nocturne et matinale.
Je vais essayer ta proposition
a+
Jean Yves
0
yapluka14 Messages postés 20 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 20 janvier 2007
6 janv. 2007 à 23:12
resalut encore moi
J'ai essayé de programmer ce que tu m'as indiqué.
le programme se bloque.
voilà ce que j'ai mis dans visual basic
Private Sub Workbook_Open()         se colore en jaune
 Dim sName As String
sName = "Identification"
Case "Fruchart"
Case "Musafiri"
Case "Delcambre"
 Case Else
 ThisWorkbook.Close False
 End Select
End Sub

s'ajoute à cela un pavé : erreur de compilation case sans select case
je pense avoir oublié quelquechose
j'ai hate de continuer, tu dois connaitre l'erreur que j'ai fait
Merci pour ta réponse
si j'ai bien compris cela va réduire l'accés au fichier.
 une idée si à la place du nom du médecin je met  un code,  le médecin se connecterai avec son  code justifiant  qu'il est accrédité  pour utilisé le logiciel?
Bon j'arrete pour ce soir, a demain j'espère
Cordialement
Jean Yves
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
6 janv. 2007 à 23:28
Ce que tu as codé

Private Sub Workbook_Open()        
    Dim sName As String
    'sName = "Identification" 'ici tu lui donnes une valeur "Identification" par défaut. Il faut                 enlever cette ligne.
                Tu dois procéder comme Mortalino t'a expliqué avec le InputBox
                C'est là que l'utilisateur rentrera son mot de passe
    sName = InputBox("Entrez votre code d'accès")
    'Ici, il manque le Select Case
    Select Case sName
        Case "Fruchart"
             'code
        Case "Musafiri"
             'code
        Case "Delcambre"
             'code
        Case Else
             ThisWorkbook.Close False
    End Select
End Sub

MPi
0
yapluka14 Messages postés 20 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 20 janvier 2007
7 janv. 2007 à 06:35
Bonjour
Merci ça fonctionne, j'avais pas tout compris. Si j'abuse, maintenant il faudrait que ce code d'accès me  libère  l'accés à certaine  cellule dans excel,  comment faire le lien? est ce possible? et comment le faire?  quel bouquin conseillez vous pour un débutant voulant comprendre ce type de programmation? ëtre autonome c'est bien.
Merci pour vos réponses
Jean Yves
0
yapluka14 Messages postés 20 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 20 janvier 2007
7 janv. 2007 à 07:23
Bonjour
Ce matin ça fonctionne, un de tes collègues m'a aider, j'avais pas tout compris........
merci pour ton aide.
si j'abuse encore quelques questions:
au lieu de mettre le nom du médecin dans identification je vais mettre un ensemble de caractères qui constituera le code de chacun ex::"Fruchart" peut devenir: "fruch_1" , "Musafiri" peut devenir "Musaf_2" de façon à ce que chaque médecin aie un code perso.
Question
Puis je progammer lorsque par exemple "fruch_1" se connecte, que le nom Fruchart s'inscrive dans une cellule d'excel automatiquement? Si c'est Musafiri qui se connecte que ce soit le nom Musafiri qui s'incrive dans une cellule?
Quel premier bouquin concernant ce type de programmation conseillerai tu?
Merci  monsieur Mortalino pour ton aide
Cordialement
Jean Yves
0
yapluka14 Messages postés 20 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 20 janvier 2007
7 janv. 2007 à 07:58
Encore moi et une question bien sûr:
peux t'on cacher la programmation VBA , en effet si une personne fait ALT et F11 elle peut lire les clés?
merci messieurs Mortalino et MPi pour votre aide, en plus ça commence à me plaire de commencer à  programmer et d'arriver à concevoir un  outil facilitant le travail de chacun.
jean Yves
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 janv. 2007 à 14:04
Salut,

pour cacher un projet VBA (et donc les codes) il faut aller (dans VB) dans le Menu Outils, propriétés de VBAProject, et tu mets un mot de passe pour l'affichage du projet.

Concernant les cellules protégés, je ne suis pas calé la dedans mais il faudra me semble t-il protégé ta feuille, regarde dans l'aide de VBA ceci : AllowEditRange, cela devrait te mettre sur la voie.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
7 janv. 2007 à 14:20
Le mieux serait que tu démarres de nouveaux "post" lorsque tu as de nouvelles questions.

Pour inscrire le nom de l'utilisateur, il te faudrait un onglet qui servent de base
Colonne A, tu mets le UserName  (fruch_1)
Colonne B, tu mets le nom que tu veux afficher (Fruchart)

Donc, lorsque l'utilisateur entre son Username, soit tu mets une RechercheV pour trouver/afficher son nom, son tu codes une Recherche avec Find et tu l'affiches en valeur.

Voici 2 manières de procéder. Je préfère la première...
Tu dois créer une feuille nommée Noms dans laquelle tu entres les UserName (en minuscules) en colonne A et les vrais noms en colonne B

Sub Connecter1()
    Dim sName  As String
    Dim Recherche As Range
   
    sName = InputBox("Entrez votre code d'accès")
   
    'LCase pour forcer la recherche sur minuscule, même si le nom est entré en majuscule
    Select Case LCase(sName)
        Case "fruch_1"
            Set Recherche = Sheets("Noms").Columns("A:A").Find(sName)
            If Not Recherche Is Nothing Then
                Range("B2") = Sheets("Noms").Range(Recherche.Address).Offset(0, 1)
                'reste du code ici ou en bas du End Select
            Else
                MsgBox "Le nom entré n'a pas été trouvé"
                Exit Sub
            End If
        Case Else
            MsgBox "Vous n'avez pas accès"
    End Select
End Sub

Sub Connecter2()
    Dim sName  As String, sNom As String
    Dim Recherche As Range
   
    sName = InputBox("Entrez votre code d'accès")
   
    Select Case LCase(sName)
        Case "fruch_1"
            Range("B2").Formula = "=VLOOKUP(""" & sName & """,Noms!A:B,2,FALSE)"
            If IsError(Range("B2")) Then
                Range("B2") = ""
                MsgBox "Le nom n'a pas été trouvé"
                Exit Sub
            End If
        Case Else
            MsgBox "Vous n'avez pas accès"
            Exit Sub
    End Select
End Sub

MPi
0
Rejoignez-nous