Erreur d'exécution sur macros protégées excel
Résolu/Fermé
alain
-
10 févr. 2012 à 16:57
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 11 févr. 2012 à 09:27
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 11 févr. 2012 à 09:27
A voir également:
- Erreur d'exécution sur macros protégées excel
- Erreur 0x80070643 - Accueil - Windows
- Liste déroulante excel - Guide
- Comment calculer la moyenne sur excel - Guide
- Si et excel - Guide
- Comment aller à la ligne sur excel - Guide
3 réponses
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 419
10 févr. 2012 à 17:09
10 févr. 2012 à 17:09
Bonjour
si vous protégez les feuilles, commencer les macros par:
Activecsheet.Unprotect
après la ligne de sélection de la feuille
et terminez la par:
Activesheet.Protect
crdlmnt
si vous protégez les feuilles, commencer les macros par:
Activecsheet.Unprotect
après la ligne de sélection de la feuille
et terminez la par:
Activesheet.Protect
crdlmnt
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 419
Modifié par Vaucluse le 10/02/2012 à 18:22
Modifié par Vaucluse le 10/02/2012 à 18:22
Re
si vous commandez vos macros par bouton, au plus simple
clic droit sur le bouton
"affecter une macro" et choisir "modifier"
la macro s'affiche
. Je ne connais pas le libellé et mes explications vont être très hasardeuses!!!
à vos risques et périls:
mais dans le texte affiché:
si votre macro s'adresse à plusieurs feuilles, à chaque sélection de feuille indiquée par:
Sheets ("xxxx").select
placez le curseur au bout de cette ligne et taper ENTER
il se crée la place pour une nouvelle ligne.
placez y le texte:
activesheet.unprotect
en finj de macro si elle n'a qu'une seule feuille(donc jusqte avant End Sub
ou avant de passer à la feuille suivante dans le texte si c'est las, même opération avec cette fois:
activesheet.protect
pour info: entrez vos textes en minuscules, si vos libellés sont corrects, VBA mettra les majuscules, sinon c'est que la frappe n'est pas bonne. N'oubliez pas le point au bon endroit.
Si difficultés, éditez ici le texte de cette macro.
Bonne chance
*PS: pour des macros par enregistrement vous pouvez aussi:
protéger la feuille avant de lancer l'enregistrement
commencer l'enregistrement en enlevant la protection et le terminer en la remettant. La macro prendra ces opérations en compte.
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
si vous commandez vos macros par bouton, au plus simple
clic droit sur le bouton
"affecter une macro" et choisir "modifier"
la macro s'affiche
. Je ne connais pas le libellé et mes explications vont être très hasardeuses!!!
à vos risques et périls:
mais dans le texte affiché:
si votre macro s'adresse à plusieurs feuilles, à chaque sélection de feuille indiquée par:
Sheets ("xxxx").select
placez le curseur au bout de cette ligne et taper ENTER
il se crée la place pour une nouvelle ligne.
placez y le texte:
activesheet.unprotect
en finj de macro si elle n'a qu'une seule feuille(donc jusqte avant End Sub
ou avant de passer à la feuille suivante dans le texte si c'est las, même opération avec cette fois:
activesheet.protect
pour info: entrez vos textes en minuscules, si vos libellés sont corrects, VBA mettra les majuscules, sinon c'est que la frappe n'est pas bonne. N'oubliez pas le point au bon endroit.
Si difficultés, éditez ici le texte de cette macro.
Bonne chance
*PS: pour des macros par enregistrement vous pouvez aussi:
protéger la feuille avant de lancer l'enregistrement
commencer l'enregistrement en enlevant la protection et le terminer en la remettant. La macro prendra ces opérations en compte.
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
bonsoir,
j'ai fait l'essai sur la bonne version et les résultats sont différents; a savoir, après insertion des textes de modification des macros, j'ai protégées mes feuilles mais à chaque action de macro une fenêtre s'ouvre me demandant le mot de passe pour ôter la protection. si j'annule la fenêtre, j'ai encore le message 1004.
Ci-joint détails des codes macros, en espérant que puissiez trouver une solution.
Merci
Sub validerR1()
'
' validerR1 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR1").Select
ActiveSheet.Unprotect
Range("C5:F29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("F6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("M16").Select
ActiveSheet.Protect
End Sub
Sub validerR2()
'
' validerR2 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR2").Select
ActiveSheet.Unprotect
Range("C5:H29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("H6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T16").Select
ActiveSheet.Protect
End Sub
Sub validerR3()
'
' validerR3 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR3").Select
ActiveSheet.Unprotect
Range("C5:J29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("J6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T15").Select
ActiveSheet.Protect
End Sub
Sub validerR4()
'
' validerR4 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR4").Select
ActiveSheet.Unprotect
Range("C5:L29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("L6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T19").Select
ActiveSheet.Protect
End Sub
Sub validerR5()
'
' validerR5 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR5").Select
ActiveSheet.Unprotect
Range("C5:N29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("N6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T15").Select
ActiveSheet.Protect
End Sub
Sub validerR6()
'
' validerR6 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR6").Select
ActiveSheet.Unprotect
Range("C5:P29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("P6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T18").Select
ActiveSheet.Protect
End Sub
Sub validerR7()
'
' validerR7 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classement R7").Select
ActiveSheet.Unprotect
Range("C6:R29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("R6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T24").Select
ActiveSheet.Protect
End Sub
j'ai fait l'essai sur la bonne version et les résultats sont différents; a savoir, après insertion des textes de modification des macros, j'ai protégées mes feuilles mais à chaque action de macro une fenêtre s'ouvre me demandant le mot de passe pour ôter la protection. si j'annule la fenêtre, j'ai encore le message 1004.
Ci-joint détails des codes macros, en espérant que puissiez trouver une solution.
Merci
Sub validerR1()
'
' validerR1 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR1").Select
ActiveSheet.Unprotect
Range("C5:F29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("F6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("M16").Select
ActiveSheet.Protect
End Sub
Sub validerR2()
'
' validerR2 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR2").Select
ActiveSheet.Unprotect
Range("C5:H29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("H6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T16").Select
ActiveSheet.Protect
End Sub
Sub validerR3()
'
' validerR3 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR3").Select
ActiveSheet.Unprotect
Range("C5:J29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("J6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T15").Select
ActiveSheet.Protect
End Sub
Sub validerR4()
'
' validerR4 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR4").Select
ActiveSheet.Unprotect
Range("C5:L29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("L6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T19").Select
ActiveSheet.Protect
End Sub
Sub validerR5()
'
' validerR5 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR5").Select
ActiveSheet.Unprotect
Range("C5:N29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("N6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T15").Select
ActiveSheet.Protect
End Sub
Sub validerR6()
'
' validerR6 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classR6").Select
ActiveSheet.Unprotect
Range("C5:P29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("P6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T18").Select
ActiveSheet.Protect
End Sub
Sub validerR7()
'
' validerR7 Macro
' Macro enregistrée le 10/02/2012 par asp
'
'
Sheets("classement R7").Select
ActiveSheet.Unprotect
Range("C6:R29").Select
Selection.Sort Key1:=Range("C6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Selection.Sort Key1:=Range("R6"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=True, Orientation:=xlTopToBottom, DataOption1 _
:=xlSortNormal
Range("T24").Select
ActiveSheet.Protect
End Sub
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 419
Modifié par Vaucluse le 11/02/2012 à 06:47
Modifié par Vaucluse le 11/02/2012 à 06:47
Bonjour
vous n'aviez pas parlé de mot de passe! et ce n'est pas obligatoire
vos codes sont donc:
ActiveSheet.Unprotect "votre mot de passe"
ActiveSheet.Protect "votre mot de passe"
mais si vous mettez un mot de passe,, il faut aussi protéger VBA sinon le mot de passe est visible dans les macros qui restent éditables:
dans une feuille d'édition de macro en VBA donc:
barre d'outil / outil / Propriètès de VBA projet
dans la nouvelle fenêtre onglet: Protection
cohcher :"verrouller lep rojet pour affichage"
entrez un mot de passe à ne pas oublierr et OK
Vous pouvez aussi accéder à l'affichage VBA via le ruban (à partir de 2007) sinon outil / macro
onglet développeur et icone VBA tout à gauche.
crdlmnt
une petite prime
si vous voulez que les opérations s'exècutent de manière plus "calme" à l'écran, commencez vos macro par:
application.screenupdating=False
vous n'aviez pas parlé de mot de passe! et ce n'est pas obligatoire
vos codes sont donc:
ActiveSheet.Unprotect "votre mot de passe"
ActiveSheet.Protect "votre mot de passe"
mais si vous mettez un mot de passe,, il faut aussi protéger VBA sinon le mot de passe est visible dans les macros qui restent éditables:
dans une feuille d'édition de macro en VBA donc:
barre d'outil / outil / Propriètès de VBA projet
dans la nouvelle fenêtre onglet: Protection
cohcher :"verrouller lep rojet pour affichage"
entrez un mot de passe à ne pas oublierr et OK
Vous pouvez aussi accéder à l'affichage VBA via le ruban (à partir de 2007) sinon outil / macro
onglet développeur et icone VBA tout à gauche.
crdlmnt
une petite prime
si vous voulez que les opérations s'exècutent de manière plus "calme" à l'écran, commencez vos macro par:
application.screenupdating=False
Bonjour,
C'est Super!!!
la manip avec activesheet"mot de passe"....a bien marché!!!
Sur Excel 2003 je n'ai pas (propriété de VBA) dans barre outls/outils
Tanpis pour le risque de connaitre mon mot de passe, l'important était que mes collegues n'endomagent pas des formules pendant l'utulisation de ce programme.
Mille fois merci, Vaucluse
Alain (le varois)
C'est Super!!!
la manip avec activesheet"mot de passe"....a bien marché!!!
Sur Excel 2003 je n'ai pas (propriété de VBA) dans barre outls/outils
Tanpis pour le risque de connaitre mon mot de passe, l'important était que mes collegues n'endomagent pas des formules pendant l'utulisation de ce programme.
Mille fois merci, Vaucluse
Alain (le varois)
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 419
Modifié par Vaucluse le 11/02/2012 à 09:29
Modifié par Vaucluse le 11/02/2012 à 09:29
re
Pas de quoi et pour info:
1°) le mot de passe n'est pas obligatoire, même si Excel le demande systématiquement. Il suffit de cliquer sur OK sans entrer de mot de passe dans la fenêtre de protection.
2°) même si vous n'avez pas le chemin, vous avez accès à l'onglet outil de VBA dans la barre des tâches en haut de la fenêtre VBA lorsque vous affichez un texte de macro!
bonne route
Pas de quoi et pour info:
1°) le mot de passe n'est pas obligatoire, même si Excel le demande systématiquement. Il suffit de cliquer sur OK sans entrer de mot de passe dans la fenêtre de protection.
2°) même si vous n'avez pas le chemin, vous avez accès à l'onglet outil de VBA dans la barre des tâches en haut de la fenêtre VBA lorsque vous affichez un texte de macro!
bonne route
10 févr. 2012 à 17:49
J'ai fini ce programme, mais la seule manip que je connaisse sur les macros est de leurs attribuer un nom, d'enregistrer des actions sur excel (tris , liaisons, formules, etc;...).
Après l'enregistrement des actions, j'affecte la macro à mon objet (image).
Je ne sais pas ou insérer le texte ci-dessus.
Pourriez vous me donner la procédure à suivre pour rentrer votre texte.
Excusez mon ignorance!!!
Merci encore de votre aide
Alain
10 févr. 2012 à 20:41
La manip pour modifier les macros est longue mais cela a bien marché.
Finalement, les feuilles étaient bien protégées et les macros fonctionnaient.
Mais je n'ai pas eu de demande de mot de passe??
Avant de faire la manip sur la derniere version, je voulais savoir s'il y avait une procédure pour déprotéger.
Merci de votre support
Alain