Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de tri et de protection

16 réponses
Avatar
Crystalle
Bonjour,

J'ai mis une protection par mot de passe sur le classeur et sur ma feuille.
Je voudrai faire un tri sur les colonnes A:G par une macro. J'ai pris soin
de déverrouiller ces colonnes auparavant.
Voilà la formule :

Columns("A:G").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending,
Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Lorsque je lance la macro, j'obtiens l'erreur d'exécution '1004' : La
méthode Sort de la classe Range a échoué.
Savez-vous quel est le problème ? Merci de votre aide.

10 réponses

1 2
Avatar
JB
Bonjour,


Désactiver la protection:

ActiveSheet.Unprotect Password;=""

Tri

ActiveSheet.Protect Password;=""

JB

On 23 fév, 09:22, Crystalle
wrote:
Bonjour,

J'ai mis une protection par mot de passe sur le classeur et sur ma feuill e.
Je voudrai faire un tri sur les colonnes A:G par une macro. J'ai pris soin
de déverrouiller ces colonnes auparavant.
Voilà la formule :

Columns("A:G").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Ra nge("B2") _
, Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscendi ng,
Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse, Orientation:=xlT opToBottom

Lorsque je lance la macro, j'obtiens l'erreur d'exécution '1004' : La
méthode Sort de la classe Range a échoué.
Savez-vous quel est le problème ? Merci de votre aide.


Avatar
anonymousA
Bonjour,

A l'occasion de ton message, je me suis livré au petit exercice suivant
qui illustre une possibilité amusante de supprimer la protection d'une
ou plusieurs feuilles sans en connaitre les mots de passe. J'aimerais
bien que d'autres contributeurs tentent l'expérience pour voir s'ils
obtiennent la même chose.

Créer un classeur puis mettre une protection à la main sur une feuille
ou toutes les feuilles.Enregistrer ce classeur et appelons le toto1.xls
par exemple.
Creer un autre classeur et écrire dans un module standard de cet autre
classeur la proc suivante (qui représente le cas général)

sub otemdp

Application.ScreenUpdating = False
With Workbooks("toto1.xls")
For Each sh In .Worksheets
With sh
.Protect password:="", userinterfaceonly:=True
.Range("A1:A2").Sort Key1:=.Range("A2"), Header:=xlYes
End With
Next
End With
Application.ScreenUpdating = True

end sub

Exécuter les instructions précédentes.

Quand on exécute cette procédure, l'ensemble des feuilles où il y avait
des mots de passes sont déprotégées. Amusant, non !!
Toute l'astuce se situe dans l'utilisation successive de
Userinterfaceonly passée à True puis de la méthode Sort associée au
paramètre Header avec la valeur xlYes qui est la seule valeur de Header
qui déclenche à tous les coups la déprotection de la feuille qu'il y ait
ou non des données sur les feuilles.Bien sur , cette proc ne crée aucun
problème si certaines feuilles ne sont pas protégées

Si vous constatez la même chose , merci de le signaler. A tout hasard,
je suis sous Excel 2000 avec XP.

A+

Bonjour,

J'ai mis une protection par mot de passe sur le classeur et sur ma feuille.
Je voudrai faire un tri sur les colonnes A:G par une macro. J'ai pris soin
de déverrouiller ces colonnes auparavant.
Voilà la formule :

Columns("A:G").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending,
Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom

Lorsque je lance la macro, j'obtiens l'erreur d'exécution '1004' : La
méthode Sort de la classe Range a échoué.
Savez-vous quel est le problème ? Merci de votre aide.


Avatar
JB
Egalement (version2000+):

Déverrouiller les colonnes:

Sub auto_open()
Sheets(1).Protect Password:="", AllowSorting:=True
End Sub

JB


On 23 fév, 09:22, Crystalle
wrote:
Bonjour,

J'ai mis une protection par mot de passe sur le classeur et sur ma feuill e.
Je voudrai faire un tri sur les colonnes A:G par une macro. J'ai pris soin
de déverrouiller ces colonnes auparavant.
Voilà la formule :

Columns("A:G").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Ra nge("B2") _
, Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscendi ng,
Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse, Orientation:=xlT opToBottom

Lorsque je lance la macro, j'obtiens l'erreur d'exécution '1004' : La
méthode Sort de la classe Range a échoué.
Savez-vous quel est le problème ? Merci de votre aide.


Avatar
anonymousA
Dans le même ordre d'idées et cette fois sans Sort. En fait il semble
que le simple fait d'utiliser une opération sur un range (qui ici bien
sur ne sert à rien d'autre qu'à déclencher une opération) fasse l'affaire

With Workbooks("toto1.xls")
For Each sh In .Sheets
With sh
.Protect "", , , , True
.Range("A1").Copy sh.Range("A1")
End With
Next sh
End With

Marche aussi en mettant vbnullstring à la place de "" après le protect.

A+


Bonjour,

A l'occasion de ton message, je me suis livré au petit exercice suivant
qui illustre une possibilité amusante de supprimer la protection d'une
ou plusieurs feuilles sans en connaitre les mots de passe. J'aimerais
bien que d'autres contributeurs tentent l'expérience pour voir s'ils
obtiennent la même chose.

Créer un classeur puis mettre une protection à la main sur une feuille
ou toutes les feuilles.Enregistrer ce classeur et appelons le toto1.xls
par exemple.
Creer un autre classeur et écrire dans un module standard de cet autre
classeur la proc suivante (qui représente le cas général)

sub otemdp

Application.ScreenUpdating = False
With Workbooks("toto1.xls")
For Each sh In .Worksheets
With sh
.Protect password:="", userinterfaceonly:=True
.Range("A1:A2").Sort Key1:=.Range("A2"), Header:=xlYes
End With
Next
End With
Application.ScreenUpdating = True

end sub

Exécuter les instructions précédentes.

Quand on exécute cette procédure, l'ensemble des feuilles où il y avait
des mots de passes sont déprotégées. Amusant, non !!
Toute l'astuce se situe dans l'utilisation successive de
Userinterfaceonly passée à True puis de la méthode Sort associée au
paramètre Header avec la valeur xlYes qui est la seule valeur de Header
qui déclenche à tous les coups la déprotection de la feuille qu'il y ait
ou non des données sur les feuilles.Bien sur , cette proc ne crée aucun
problème si certaines feuilles ne sont pas protégées

Si vous constatez la même chose , merci de le signaler. A tout hasard,
je suis sous Excel 2000 avec XP.

A+

Bonjour,

J'ai mis une protection par mot de passe sur le classeur et sur ma
feuille.
Je voudrai faire un tri sur les colonnes A:G par une macro. J'ai pris
soin de déverrouiller ces colonnes auparavant.
Voilà la formule :

Columns("A:G").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending,
Key2:=Range("B2") _
, Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending,
Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom

Lorsque je lance la macro, j'obtiens l'erreur d'exécution '1004' : La
méthode Sort de la classe Range a échoué.
Savez-vous quel est le problème ? Merci de votre aide.




Avatar
RGI
Bonjour

après réalisation de la demande

erreur d'exécution 1004

mot de passe invalide

excel version 2003

salutations

RGI



Bonjour,

A l'occasion de ton message, je me suis livré au petit exercice
suivant qui illustre une possibilité amusante de supprimer la
protection d'une ou plusieurs feuilles sans en connaitre les mots de
passe. J'aimerais bien que d'autres contributeurs tentent l'expérience
pour voir s'ils obtiennent la même chose.

Créer un classeur puis mettre une protection à la main sur une
feuille ou toutes les feuilles.Enregistrer ce classeur et appelons le
toto1.xls par exemple.
Creer un autre classeur et écrire dans un module standard de cet autre
classeur la proc suivante (qui représente le cas général)

sub otemdp

Application.ScreenUpdating = False
With Workbooks("toto1.xls")
For Each sh In .Worksheets
With sh
.Protect password:="", userinterfaceonly:=True
.Range("A1:A2").Sort Key1:=.Range("A2"), Header:=xlYes
End With
Next
End With
Application.ScreenUpdating = True

end sub

Exécuter les instructions précédentes.

Quand on exécute cette procédure, l'ensemble des feuilles où il y
avait des mots de passes sont déprotégées. Amusant, non !!
Toute l'astuce se situe dans l'utilisation successive de
Userinterfaceonly passée à True puis de la méthode Sort associée au
paramètre Header avec la valeur xlYes qui est la seule valeur de
Header qui déclenche à tous les coups la déprotection de la feuille
qu'il y ait ou non des données sur les feuilles.Bien sur , cette proc
ne crée aucun problème si certaines feuilles ne sont pas protégées

Si vous constatez la même chose , merci de le signaler. A tout hasard,
je suis sous Excel 2000 avec XP.

A+

Bonjour,

J'ai mis une protection par mot de passe sur le classeur et sur ma
feuille.
Je voudrai faire un tri sur les colonnes A:G par une macro. J'ai pris
soin de déverrouiller ces colonnes auparavant.
Voilà la formule :

Columns("A:G").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending,
Key2:=Range("B2") _
, Order2:=xlAscending, Key3:=Range("G2"),
Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom

Lorsque je lance la macro, j'obtiens l'erreur d'exécution '1004' : La
méthode Sort de la classe Range a échoué.
Savez-vous quel est le problème ? Merci de votre aide.




Avatar
anonymousA
Merci pour le test. Et avec la deuxième possibilité ? Peut-être que ca
ne marche que pour Excel 2000.En tout cas , ca marche pour le mien et
celui que j'ai au bureau.

A+

Bonjour

après réalisation de la demande

erreur d'exécution 1004

mot de passe invalide

excel version 2003

salutations

RGI



Bonjour,

A l'occasion de ton message, je me suis livré au petit exercice
suivant qui illustre une possibilité amusante de supprimer la
protection d'une ou plusieurs feuilles sans en connaitre les mots de
passe. J'aimerais bien que d'autres contributeurs tentent l'expérience
pour voir s'ils obtiennent la même chose.

Créer un classeur puis mettre une protection à la main sur une
feuille ou toutes les feuilles.Enregistrer ce classeur et appelons le
toto1.xls par exemple.
Creer un autre classeur et écrire dans un module standard de cet autre
classeur la proc suivante (qui représente le cas général)

sub otemdp

Application.ScreenUpdating = False
With Workbooks("toto1.xls")
For Each sh In .Worksheets
With sh
.Protect password:="", userinterfaceonly:=True
.Range("A1:A2").Sort Key1:=.Range("A2"), Header:=xlYes
End With
Next
End With
Application.ScreenUpdating = True

end sub

Exécuter les instructions précédentes.

Quand on exécute cette procédure, l'ensemble des feuilles où il y
avait des mots de passes sont déprotégées. Amusant, non !!
Toute l'astuce se situe dans l'utilisation successive de
Userinterfaceonly passée à True puis de la méthode Sort associée au
paramètre Header avec la valeur xlYes qui est la seule valeur de
Header qui déclenche à tous les coups la déprotection de la feuille
qu'il y ait ou non des données sur les feuilles.Bien sur , cette proc
ne crée aucun problème si certaines feuilles ne sont pas protégées

Si vous constatez la même chose , merci de le signaler. A tout hasard,
je suis sous Excel 2000 avec XP.

A+

Bonjour,

J'ai mis une protection par mot de passe sur le classeur et sur ma
feuille.
Je voudrai faire un tri sur les colonnes A:G par une macro. J'ai pris
soin de déverrouiller ces colonnes auparavant.
Voilà la formule :

Columns("A:G").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending,
Key2:=Range("B2") _
, Order2:=xlAscending, Key3:=Range("G2"),
Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom

Lorsque je lance la macro, j'obtiens l'erreur d'exécution '1004' : La
méthode Sort de la classe Range a échoué.
Savez-vous quel est le problème ? Merci de votre aide.






Avatar
RGI
idem

erreur 1004

RGI

Merci pour le test. Et avec la deuxième possibilité ? Peut-être que ca
ne marche que pour Excel 2000.En tout cas , ca marche pour le mien et
celui que j'ai au bureau.

A+

Bonjour

après réalisation de la demande

erreur d'exécution 1004

mot de passe invalide

excel version 2003

salutations

RGI



Bonjour,

A l'occasion de ton message, je me suis livré au petit exercice
suivant qui illustre une possibilité amusante de supprimer la
protection d'une ou plusieurs feuilles sans en connaitre les mots de
passe. J'aimerais bien que d'autres contributeurs tentent
l'expérience pour voir s'ils obtiennent la même chose.

Créer un classeur puis mettre une protection à la main sur une
feuille ou toutes les feuilles.Enregistrer ce classeur et appelons
le toto1.xls par exemple.
Creer un autre classeur et écrire dans un module standard de cet
autre classeur la proc suivante (qui représente le cas général)

sub otemdp

Application.ScreenUpdating = False
With Workbooks("toto1.xls")
For Each sh In .Worksheets
With sh
.Protect password:="", userinterfaceonly:=True
.Range("A1:A2").Sort Key1:=.Range("A2"), Header:=xlYes
End With
Next
End With
Application.ScreenUpdating = True

end sub

Exécuter les instructions précédentes.

Quand on exécute cette procédure, l'ensemble des feuilles où il y
avait des mots de passes sont déprotégées. Amusant, non !!
Toute l'astuce se situe dans l'utilisation successive de
Userinterfaceonly passée à True puis de la méthode Sort associée au
paramètre Header avec la valeur xlYes qui est la seule valeur de
Header qui déclenche à tous les coups la déprotection de la feuille
qu'il y ait ou non des données sur les feuilles.Bien sur , cette
proc ne crée aucun problème si certaines feuilles ne sont pas protégées

Si vous constatez la même chose , merci de le signaler. A tout
hasard, je suis sous Excel 2000 avec XP.

A+

Bonjour,

J'ai mis une protection par mot de passe sur le classeur et sur ma
feuille.
Je voudrai faire un tri sur les colonnes A:G par une macro. J'ai
pris soin de déverrouiller ces colonnes auparavant.
Voilà la formule :

Columns("A:G").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending,
Key2:=Range("B2") _
, Order2:=xlAscending, Key3:=Range("G2"),
Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom

Lorsque je lance la macro, j'obtiens l'erreur d'exécution '1004' :
La méthode Sort de la classe Range a échoué.
Savez-vous quel est le problème ? Merci de votre aide.








Avatar
anonymousA
Bon, ca ne marche pas avec Excel 2003. confirmation faite. Merci

A+

idem

erreur 1004

RGI

Merci pour le test. Et avec la deuxième possibilité ? Peut-être que ca
ne marche que pour Excel 2000.En tout cas , ca marche pour le mien et
celui que j'ai au bureau.

A+

Bonjour

après réalisation de la demande

erreur d'exécution 1004

mot de passe invalide

excel version 2003

salutations

RGI



Bonjour,

A l'occasion de ton message, je me suis livré au petit exercice
suivant qui illustre une possibilité amusante de supprimer la
protection d'une ou plusieurs feuilles sans en connaitre les mots de
passe. J'aimerais bien que d'autres contributeurs tentent
l'expérience pour voir s'ils obtiennent la même chose.

Créer un classeur puis mettre une protection à la main sur une
feuille ou toutes les feuilles.Enregistrer ce classeur et appelons
le toto1.xls par exemple.
Creer un autre classeur et écrire dans un module standard de cet
autre classeur la proc suivante (qui représente le cas général)

sub otemdp

Application.ScreenUpdating = False
With Workbooks("toto1.xls")
For Each sh In .Worksheets
With sh
.Protect password:="", userinterfaceonly:=True
.Range("A1:A2").Sort Key1:=.Range("A2"), Header:=xlYes
End With
Next
End With
Application.ScreenUpdating = True

end sub

Exécuter les instructions précédentes.

Quand on exécute cette procédure, l'ensemble des feuilles où il y
avait des mots de passes sont déprotégées. Amusant, non !!
Toute l'astuce se situe dans l'utilisation successive de
Userinterfaceonly passée à True puis de la méthode Sort associée au
paramètre Header avec la valeur xlYes qui est la seule valeur de
Header qui déclenche à tous les coups la déprotection de la feuille
qu'il y ait ou non des données sur les feuilles.Bien sur , cette
proc ne crée aucun problème si certaines feuilles ne sont pas protégées

Si vous constatez la même chose , merci de le signaler. A tout
hasard, je suis sous Excel 2000 avec XP.

A+

Bonjour,

J'ai mis une protection par mot de passe sur le classeur et sur ma
feuille.
Je voudrai faire un tri sur les colonnes A:G par une macro. J'ai
pris soin de déverrouiller ces colonnes auparavant.
Voilà la formule :

Columns("A:G").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending,
Key2:=Range("B2") _
, Order2:=xlAscending, Key3:=Range("G2"),
Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom

Lorsque je lance la macro, j'obtiens l'erreur d'exécution '1004' :
La méthode Sort de la classe Range a échoué.
Savez-vous quel est le problème ? Merci de votre aide.










Avatar
MichDenis
Si tu prenais l'habitude de protéger ta feuille (feuilles)
dans la procédure de l'événement "Open" du ThisWorkbook
de ton classeur, tu pourrais utiliser les macros que tu désires
sans tenir compte du fait que ta feuille est protégée...

Cette macro s'exécute à chaque ouverture du classeur :
'--------------------
Private Sub Workbook_Open()

Worksheets("Feuil1").Protect "TonMotDePasse", True, True, True, True

End Sub
'--------------------



"Crystalle" a écrit dans le message de news:

Bonjour,

J'ai mis une protection par mot de passe sur le classeur et sur ma feuille.
Je voudrai faire un tri sur les colonnes A:G par une macro. J'ai pris soin
de déverrouiller ces colonnes auparavant.
Voilà la formule :

Columns("A:G").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending,
Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom

Lorsque je lance la macro, j'obtiens l'erreur d'exécution '1004' : La
méthode Sort de la classe Range a échoué.
Savez-vous quel est le problème ? Merci de votre aide.
Avatar
Crystalle
Merci mais, dans mon cas, cela ne fonctionne qu'à moitié :.

J'ai initialisé mon mot de passe dans le menu "Outils" , "Protection" ,
"Protéger la feuilleé.

J'ai mis comme vous m'avez dit :
ActiveSheet.Unprotect Password="mdp"
mon tri
ActiveSheet.Protect Password="mdp"

Quand je lance la macro, j'ai l'erreur '1004' : "Mot de passe non valide.
Vérifiez que la touche VERR.MAJ n'est pas activée et que vous respectez la
bonne casse.". Le problème venant de la ligne : ActiveSheet.Unprotect
Password="mdp"
Par contre, si j'utilise juste ActiveSheet.Unprotect, le mot de passe est
demandé à l'exécution et cela fonctionne.

Je ne rencontre pas le problème avec la ligne : ActiveSheet.Protect
Password="mdp" et lorsque j'enlève la protection manuellement dans le menu
"Outils", cela fonctionne.

Savez-vous d'où vient ce problème ?


Bonjour,


Désactiver la protection:

ActiveSheet.Unprotect Password;=""

Tri

ActiveSheet.Protect Password;=""

JB

On 23 fév, 09:22, Crystalle
wrote:
Bonjour,

J'ai mis une protection par mot de passe sur le classeur et sur ma feuille.
Je voudrai faire un tri sur les colonnes A:G par une macro. J'ai pris soin
de déverrouiller ces colonnes auparavant.
Voilà la formule :

Columns("A:G").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2") _
, Order2:=xlAscending, Key3:=Range("G2"), Order3:=xlAscending,
Header:= _
xlGuess, OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom

Lorsque je lance la macro, j'obtiens l'erreur d'exécution '1004' : La
méthode Sort de la classe Range a échoué.
Savez-vous quel est le problème ? Merci de votre aide.







1 2