OVH Cloud OVH Cloud

Triage et surlignage = pas bon ménage

4 réponses
Avatar
fredbzr
Bonjour à tous
Déjà de retour sur le forum pour un problème .
J'utilise ces 2 codes pour un tableau :
Triage commandé par un bouton
Surlignage
Les deux fonctionnent bien mais mis ensemble , j'ai une erreur d'éxecution
1004, la méthode Sort de la classe range a échoué
Avez vous des idées pour me dépanner
Merci d'avance

'Triage
Private Sub CommandButton17_Click()
With ActiveSheet
.Unprotect Password:="toto"
Range("A16:W504").Select
ActiveWindow.SmallScroll ToRight:=-5
ActiveWindow.ScrollRow = 16
Range("A16:W504").Select
Selection.Sort Key1:=Range("A16"), Order1:=xlAscending,
Key2:=Range("B16" _
), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1,
MatchCase:= _
False, Orientation:=xlTopToBottom
Range("A15").Activate
.Protect Password:="toto"
End With
End Sub

'Surlignage
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveSheet
.Unprotect Password:="toto"
If Intersect(Target, Range("A16:A504")) Is Nothing Then Exit Sub
Cells.Interior.ColorIndex = xlNone
MaPlage = "A" & ActiveCell.Row & ":W" & ActiveCell.Row
Range(MaPlage).Interior.ColorIndex = 8
.Protect Password:="toto"
End With
End Sub

Dans le worbook
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
.Unprotect Password:="toto"
Range("A16:A504").Interior.ColorIndex = xlNone
.Protect Password:="toto"
End With
End Sub

Fred

4 réponses

Avatar
lSteph
Bonjour,

Normal , tu fais un Select
alors qu'il y a un Selection_change dans la feuille
ce dernier remet la protection.Donc qd tu trie cela plante

Il faudrait soit

utiliser un Application.enableeventsúlse au début puis true à la fin
pour désactiver les événements

soit utiliser plutôt une protection par macro dans le thisworkbook_open par
exemple avec userinterfaceonly:=true
Ex:
Sheets(1).protect pasword:="toto", userinterfaceonly:= true

ce qui permettra d'agir par macro et ne plus t'embêter à déprotèger et
reprotèger.

lSteph

"fredbzr" a écrit dans le message de news:
44410a80$0$19685$
Bonjour à tous
Déjà de retour sur le forum pour un problème .
J'utilise ces 2 codes pour un tableau :
Triage commandé par un bouton
Surlignage
Les deux fonctionnent bien mais mis ensemble , j'ai une erreur d'éxecution
1004, la méthode Sort de la classe range a échoué
Avez vous des idées pour me dépanner
Merci d'avance

'Triage
Private Sub CommandButton17_Click()
With ActiveSheet
.Unprotect Password:="toto"
Range("A16:W504").Select
ActiveWindow.SmallScroll ToRight:=-5
ActiveWindow.ScrollRow = 16
Range("A16:W504").Select
Selection.Sort Key1:=Range("A16"), Order1:=xlAscending,
Key2:=Range("B16" _
), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1,
MatchCase:= _
False, Orientation:=xlTopToBottom
Range("A15").Activate
.Protect Password:="toto"
End With
End Sub

'Surlignage
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveSheet
.Unprotect Password:="toto"
If Intersect(Target, Range("A16:A504")) Is Nothing Then Exit Sub
Cells.Interior.ColorIndex = xlNone
MaPlage = "A" & ActiveCell.Row & ":W" & ActiveCell.Row
Range(MaPlage).Interior.ColorIndex = 8
.Protect Password:="toto"
End With
End Sub

Dans le worbook
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
.Unprotect Password:="toto"
Range("A16:A504").Interior.ColorIndex = xlNone
.Protect Password:="toto"
End With
End Sub

Fred



Avatar
Thierryp
Bonjour,

Je pense à première vue que tu devrais désactiver les évènements avant
de trier.
Dans ta sub triage, ajoute au début Application.enableeventsúlse, et
repasse le à true à la fin de ta procédure

Joyeuses Pâques :-))))

@+ thierryp

------------------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet. (Courteline)
------------------------

Bonjour à tous
Déjà de retour sur le forum pour un problème .
J'utilise ces 2 codes pour un tableau :
Triage commandé par un bouton
Surlignage
Les deux fonctionnent bien mais mis ensemble , j'ai une erreur d'éxecution
1004, la méthode Sort de la classe range a échoué
Avez vous des idées pour me dépanner
Merci d'avance

'Triage
Private Sub CommandButton17_Click()
With ActiveSheet
.Unprotect Password:="toto"
Range("A16:W504").Select
ActiveWindow.SmallScroll ToRight:=-5
ActiveWindow.ScrollRow = 16
Range("A16:W504").Select
Selection.Sort Key1:=Range("A16"), Order1:=xlAscending,
Key2:=Range("B16" _
), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1,
MatchCase:= _
False, Orientation:=xlTopToBottom
Range("A15").Activate
.Protect Password:="toto"
End With
End Sub

'Surlignage
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveSheet
.Unprotect Password:="toto"
If Intersect(Target, Range("A16:A504")) Is Nothing Then Exit Sub
Cells.Interior.ColorIndex = xlNone
MaPlage = "A" & ActiveCell.Row & ":W" & ActiveCell.Row
Range(MaPlage).Interior.ColorIndex = 8
.Protect Password:="toto"
End With
End Sub

Dans le worbook
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
.Unprotect Password:="toto"
Range("A16:A504").Interior.ColorIndex = xlNone
.Protect Password:="toto"
End With
End Sub

Fred




Avatar
fredbzr
Bonjour,
J'ai effectué la manip et çà fonctionne très bien
Bonne fête de pâques
Merci encore
"Thierryp" a écrit dans le message de news:


Bonjour,

Je pense à première vue que tu devrais désactiver les évènements avant de
trier.
Dans ta sub triage, ajoute au début Application.enableeventsúlse, et
repasse le à true à la fin de ta procédure

Joyeuses Pâques :-))))

@+ thierryp

------------------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet. (Courteline)
------------------------

Bonjour à tous
Déjà de retour sur le forum pour un problème .
J'utilise ces 2 codes pour un tableau :
Triage commandé par un bouton
Surlignage
Les deux fonctionnent bien mais mis ensemble , j'ai une erreur
d'éxecution 1004, la méthode Sort de la classe range a échoué
Avez vous des idées pour me dépanner
Merci d'avance

'Triage
Private Sub CommandButton17_Click()
With ActiveSheet
.Unprotect Password:="toto"
Range("A16:W504").Select
ActiveWindow.SmallScroll ToRight:=-5
ActiveWindow.ScrollRow = 16
Range("A16:W504").Select
Selection.Sort Key1:=Range("A16"), Order1:=xlAscending,
Key2:=Range("B16" _
), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1,
MatchCase:= _
False, Orientation:=xlTopToBottom
Range("A15").Activate
.Protect Password:="toto"
End With
End Sub

'Surlignage
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveSheet
.Unprotect Password:="toto"
If Intersect(Target, Range("A16:A504")) Is Nothing Then Exit Sub
Cells.Interior.ColorIndex = xlNone
MaPlage = "A" & ActiveCell.Row & ":W" & ActiveCell.Row
Range(MaPlage).Interior.ColorIndex = 8
.Protect Password:="toto"
End With
End Sub

Dans le worbook
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
.Unprotect Password:="toto"
Range("A16:A504").Interior.ColorIndex = xlNone
.Protect Password:="toto"
End With
End Sub

Fred




Avatar
fredbzr
Bonjour
J'ai utilisé la première solution qui est la plus simple pour moi qui n'y
connais pas grand chose
Je garde ta 2ème solution en réserve pour plus tard
Passez de bonnes fêtes de pâques
Merci du coup de main
"lSteph" a écrit dans le message de news:

Bonjour,

Normal , tu fais un Select
alors qu'il y a un Selection_change dans la feuille
ce dernier remet la protection.Donc qd tu trie cela plante

Il faudrait soit

utiliser un Application.enableeventsúlse au début puis true à la fin
pour désactiver les événements

soit utiliser plutôt une protection par macro dans le thisworkbook_open
par exemple avec userinterfaceonly:=true
Ex:
Sheets(1).protect pasword:="toto", userinterfaceonly:= true

ce qui permettra d'agir par macro et ne plus t'embêter à déprotèger et
reprotèger.

lSteph

"fredbzr" a écrit dans le message de news:
44410a80$0$19685$
Bonjour à tous
Déjà de retour sur le forum pour un problème .
J'utilise ces 2 codes pour un tableau :
Triage commandé par un bouton
Surlignage
Les deux fonctionnent bien mais mis ensemble , j'ai une erreur
d'éxecution 1004, la méthode Sort de la classe range a échoué
Avez vous des idées pour me dépanner
Merci d'avance

'Triage
Private Sub CommandButton17_Click()
With ActiveSheet
.Unprotect Password:="toto"
Range("A16:W504").Select
ActiveWindow.SmallScroll ToRight:=-5
ActiveWindow.ScrollRow = 16
Range("A16:W504").Select
Selection.Sort Key1:=Range("A16"), Order1:=xlAscending,
Key2:=Range("B16" _
), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1,
MatchCase:= _
False, Orientation:=xlTopToBottom
Range("A15").Activate
.Protect Password:="toto"
End With
End Sub

'Surlignage
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveSheet
.Unprotect Password:="toto"
If Intersect(Target, Range("A16:A504")) Is Nothing Then Exit Sub
Cells.Interior.ColorIndex = xlNone
MaPlage = "A" & ActiveCell.Row & ":W" & ActiveCell.Row
Range(MaPlage).Interior.ColorIndex = 8
.Protect Password:="toto"
End With
End Sub

Dans le worbook
Private Sub Workbook_BeforePrint(Cancel As Boolean)
With ActiveSheet
.Unprotect Password:="toto"
Range("A16:A504").Interior.ColorIndex = xlNone
.Protect Password:="toto"
End With
End Sub

Fred