Empecher de saisir mot de passe dans excel

Résolu/Fermé
bruiz Messages postés 123 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 octobre 2022 - Modifié par Jeff le 16/03/2010 à 12:45
bruiz Messages postés 123 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 octobre 2022 - 16 mars 2010 à 18:05
Bonjour,
je voudrais savoir comment éviter de saisir un mot de passe pour l'exécution d'une macro excel.
Je m'explique: j'ai protéger volontairement un fichier excel dans lequel il y a des macros que l'utilisateur peut exécuter.
A chaque fois que je lance la macro je dois saisir le mot de passe; je voudrais que l'utilisateur puisque exécuter la macro sans être obliger de saisir ce mot de passe.

en fait il s'agit d'un fichier excel pour saisir un bon de commande. Dans ce fichier excel, il y a toute les références. Lorsque le bon de cde est terminé je voudrais ne faire apparaitre que les réferences dont les quantités sont differentes de zero. Pour cela j'ai fait une macro avec un filtre automatique sur la cellule quantité.
(affichage personnalisé : quantité Différente de 0)
J'espère avoi été assez clair
merci pour votre aide.
A voir également:

7 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 16/03/2010 à 11:33
Salut,
Pour déprotéger ta feuille excel avant l'exécution de ta macro, tu écris ce code juste après la déclaration des variables :
Sub macro_machin()  
Dim trux as truc, 
Dim machin as machin 
ActiveSheet.UnProtect "toto" 'toto est bien entendu ton mot de passe

Et en fin de macro, avant le End Sub tu rétablit ta protection par :
ActiveSheet.Protect "toto" 


Pense à utiliser, pour des procédures simples comme celle ci, l'enregistreur de macro :
Outils/Macro/Nouvelle macro OK ---> lance l'enregistreur (noter le nom de la macro)
Tu fais toutes les manipulations souhaitées
Outils/Macros/Arrêter l'enregistrement
Puis tu va dans Visual Basic (ALT+F11) et là, dans un module, tu retrouves le code généré par l'enregistreur.
Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
0
bruiz Messages postés 123 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 octobre 2022 1
16 mars 2010 à 11:50
bonjour et tout d'abord merci pour l'aide rapide. Je viens d'essayer mais j'ai une problème d'execution.
voici ma macro peux tu m'aider STP. (je ne suis vraiment pas un expert des macros) . Merci d'avance
(pour l'instant j'ai mis toto comme mot de passe)

le message d'erreur est : Erreur de compilation End sub attendu
je dois faire une groose erreur tellement je suis ignare dans les macros
merci encore....
____________________________________________________________________________

Sub affichagequantité()
'
' affichagequantité Macro
' Macro enregistrée le 27/01/2010 par Bruno
'

'

Sub macro_machin()
Dim trux as truc,
Dim machin As machin
ActiveSheet.Unprotect "toto"


ActiveSheet.Unprotect
Selection.AutoFilter Field:=6, Criteria1:="<>0", Operator:=xlAnd
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.Protect "toto"
End Sub
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > bruiz Messages postés 123 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 octobre 2022
16 mars 2010 à 11:59
Oui je vois le problème... Je t'ai soumis un exemple en fait. Tu ne devais pas tout copier coller.... Supprimes :
Sub macro_machin() 
Dim trux as truc, 
Dim machin As machin 
et cela fonctionnera...
Donc ton code :

Sub affichagequantité() 
ActiveSheet.Unprotect "toto"
Selection.AutoFilter Field:=6, Criteria1:="<>0", Operator:=xlAnd 
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 
ActiveSheet.Protect "toto" 
End Sub


ps1 : n'oublies pas de remplacer "toto" par ton vrai mot de passe.....
ps2 : je pensais que les noms (machin, truc etc...) allaient te mettre la puce à l'oreille. Dans ce cas là, une seule solution : un bon bol de café bien noir en intraveineuse...

N'hésite pas à revenir si tu en as besoin, ce n'est pas une moquerie méchante.
@
0
bruiz Messages postés 123 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 octobre 2022 1
16 mars 2010 à 12:08
je te remercie pour l'aide apparemment cela fonctionne;
le leur souci est que les utilisateurs peuvent voir les macros et donc voir le mot de passe. Ne peut on pas blinder les macros afin qu'elles ne soient pas modifiables ni visibles .

D'autre part, je voudrais que l'utilisiteur puisse lancer ce modele .xlt à partir d'un raccourci bureau mais enregistre jamais dans le fichier modele mais plutot dans un fichier xls. J'ai egalement qques soucis .
Merci encore
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
16 mars 2010 à 12:45
1- Ne peut on pas blinder les macros : Dans Visual Basic (ALT+F11 depuis ton classeur excel) : clic droit sur VBAProject (tu le trouveras dans la petite fenêtre "Projet - VBAProject" en haut à gauche) /propriétés de VBAProject onglet : protection. Cocher "verrouiller le projet pour l'affichage" et entrer (puis confirmer) un mot de passe. !!!ATTENTION!!! Un mot de passe n'est pas à utiliser à la légère!!! En cas d'oubli, c'est foutu!!!
2- mais enregistre jamais dans le fichier modele mais plutot dans un fichier xls. : Une solution consiste à enregistrer automatiquement ton classeur sous : "nom_du_fichier_date_heure.xls"
Pour cela :
Sub enregistrement()
Dim NomFic As String
NomFic = ActiveWorkbook.Path & "\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
ActiveWorkbook.SaveAs NomFic & " " & Format(Date, "ddmmyyyy") & " " & Format(Time, "hhmmss") & ".xls"
End Sub

tu peux également l'enregistrer sous : "nom du fichier_nom de l'utilisateur_date_heure.xls"
Pour cela, la macro complète devient :
Sub enregistrement()
Dim NomFic As String, utilisateur As String
NomFic = ActiveWorkbook.Path & "\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
utilisateur = Environ("username")
ActiveWorkbook.SaveAs NomFic & " " & utilisateur & " " & Format(Date, "ddmmyyyy") & " " & Format(Time, "hhmmss") & ".xls"
End Sub

Bon ok, je le conçois, ça nous fait des noms de fichiers à rallonge... Mais quel bonheur pour les classer!!!
0
bruiz Messages postés 123 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 octobre 2022 1
16 mars 2010 à 14:10
re bonjour,
j'ai essayé effectivement la macro est protégée mais comment sortir la protection pour modifier la macro ?
D'autre part je voudrais creer un raccourci sur le bureau pour lancer automatiquement le modèle; le pb est qu'a chaque fois le modèle est enregistré. Auparavant sous xp on pouvait lancer un modele et lors de l'enregistrement on proposait systématiquement un fichier xls et non xlt. Apparemment ce n'est plus possible sous windows 7 ; j'ai crée le raccourci suivant :
"C:\Users\....\AppData\Roaming\Microsoft\Modèles\toto..xlt" et je voudrais lors de l'enregistrement que soit proposé un fichier xls. Est ce possible.
je ne sais pas si je suis très clair.
Merci tout de meme pour ton aide et tes compétences très utiles pour un novice comme moi.

Merci egalement de me donner la solution pour resortir la protection des macros.
A tout a l'heure
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
16 mars 2010 à 14:24
comment sortir la protection pour modifier la macro ?
double clic sur VBAProject et saisir son mot de passe...
Pour l'enregistrement, le plus simple est de créer un bouton* de commande sur ta feuille et de coller l'un des deux codes que je t'ai mis précédemment dans le code du bouton. Exemple :
Private Sub CommandButton1_Click()
Dim NomFic As String, utilisateur As String
NomFic = ActiveWorkbook.Path & "\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
utilisateur = Environ("username")
ActiveWorkbook.SaveAs NomFic & " " & utilisateur & " " & Format(Date, "ddmmyyyy") & " " & Format(Time, "hhmmss") & ".xls"
End Sub


* pour le créer : Affichage/barred'outils/boîte à outils controles
0
bruiz Messages postés 123 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 octobre 2022 1
16 mars 2010 à 14:41
tu vas finir par me trouver un peu penible...
mais la macro me renvoie un message d'erreur identiqaue à toute à l'heure :
erreur de compilation end sub attendu

Sub enregistrement()
'
' enregistrement Macro
' Macro enregistrée le 16/03/2010 par ...
Private Sub CommandButton1_Click()
Dim NomFic As String, utilisateur As String
NomFic = ActiveWorkbook.Path & "\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
utilisateur = Environ("username")
ActiveWorkbook.SaveAs NomFic & " " & utilisateur & " " & Format(Date, "ddmmyyyy") & " " & Format(Time, "hhmmss") & ".xls"
End Sub
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 16/03/2010 à 14:49
je te place en gras les deux lignes qui posent problème :
Sub enregistrement()  
'  
' enregistrement Macro  
' Macro enregistrée le 16/03/2010 par ...  
Private Sub CommandButton1_Click()  
Dim NomFic As String, utilisateur As String  
NomFic = ActiveWorkbook.Path & "\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)  
utilisateur = Environ("username")  
ActiveWorkbook.SaveAs NomFic & " " & utilisateur & " " & Format(Date, "ddmmyyyy") & " " & Format(Time, "hhmmss") & ".xls"  
End Sub 


Une "Sub" correspond à une procédure. Ici, tu en ouvres 2...

Dessines ton bouton de commande, double clic dessus, va apparaitre :
Private Sub CommandButton1_Click()  

End Sub


entre ces 2 lignes copie colle ce code :

Dim NomFic As String, utilisateur As String  
NomFic = ActiveWorkbook.Path & "\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)  
utilisateur = Environ("username")  
ActiveWorkbook.SaveAs NomFic & " " & utilisateur & " " & Format(Date, "ddmmyyyy") & " " & Format(Time, "hhmmss") & ".xls" 


ce qui te donne au final :

Private Sub CommandButton1_Click()  
Dim NomFic As String, utilisateur As String  
NomFic = ActiveWorkbook.Path & "\" & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)  
utilisateur = Environ("username")  
ActiveWorkbook.SaveAs NomFic & " " & utilisateur & " " & Format(Date, "ddmmyyyy") & " " & Format(Time, "hhmmss") & ".xls"  
End Sub
0

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

Posez votre question
bruiz Messages postés 123 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 octobre 2022 1
16 mars 2010 à 15:22
je suis vraiment pénible t je m'en excuse;
ce n'est pas très bon car si on appuie plusieurs fois sur ce bouton le fichier sauvegarger prends des dimensions énormes . essai. Bruno 16032010151706 Bruno 16032010 151708 Bruno 16032010 151708.xls
etc... au lieu d'ecraser la version precedente.

ne peut-on pas faire plus simple en ouvrant la fenetre enregistrer sous
encore une fois je suis désolé de t'embeter mais ton aide est précieuse...
merci encore
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
Modifié par pijaku le 16/03/2010 à 15:48
J'avais omis ce détail.....
Oui effectivement le plus simple est de lancer :
Application.FileDialog(msoFileDialogSaveAs).Show

Sinon avec mon code précédent, il eu fallut un test...
0
bruiz Messages postés 123 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 octobre 2022 1
16 mars 2010 à 16:26
c'est presque parfait. Merci bcp pour l'aide et tes connaissances en macros et commandes excel;
c'est vraiment sympa.
connais tu des bouquins sur les macros excel ?

et mon dernier soucis je voudrais pouvoir creer un raccourci sur le bureau en ouvrant le modele mais etre sur que l'on enregistre sur un fichier xls et non xlt.
je viens de verifier cela fonctionne sous xp mais apparemment pas sous windows 7

si tu as une astuce je suis preneur.
Merci encore
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
16 mars 2010 à 17:35
Désolé, là je ne peux plus t'aider... Je n'ai pas seven.
Bonne continuation
0
bruiz Messages postés 123 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 10 octobre 2022 1
16 mars 2010 à 18:05
merci bcp pour l'aide très utile
CDLT
0