bug avec "SelectedSheets.Count"

Le
François
Bonjour à tous,

J'essaie de vouloir faire démasquer des lignes potentiellement masquées sur
des feuilles protégées sur un "Workbook_SheetActivate". Je voudrais que la
macro évènementielle ne soit activée que lorsqu'une seule feuille est
sélectionnée (et non plusieurs)

J'ai mis :
If SelectedSheets.Count = 1 Then
mais cela ne fonctionne pas ; avez-vous une idée pour éviter le bug (XL2000)
?

merci à tous, et meilleurs voux pour 2008.
François

voici le code complet :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If SelectedSheets.Count = 1 Then
If Left(ActiveSheet.Name, 5) = "Frais" Then
ActiveSheet.Unprotect
Rows("1:107").Hidden = False
ActiveSheet.Protect , True, True, True
ElseIf Left(ActiveSheet.Name, 4) = "Fact" Then
ActiveSheet.Unprotect
Rows("24:33").Hidden = False
ActiveSheet.Protect , True, True, True
End If
End If
End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
François
Le #5340581
j'ai oublié de préciser que le bug se produite sur la ligne :
If SelectedSheets.Count = 1 Then
avec dans l'aide VBA :
Objet requis (erreur 424)...

"François" %
Bonjour à tous,

J'essaie de vouloir faire démasquer des lignes potentiellement masquées
sur des feuilles protégées sur un "Workbook_SheetActivate". Je voudrais
que la macro évènementielle ne soit activée que lorsqu'une seule feuille
est sélectionnée (et non plusieurs) ...

J'ai mis :
If SelectedSheets.Count = 1 Then ...
mais cela ne fonctionne pas ; avez-vous une idée pour éviter le bug
(XL2000) ?

merci à tous, et meilleurs voux pour 2008.
François

voici le code complet :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If SelectedSheets.Count = 1 Then
If Left(ActiveSheet.Name, 5) = "Frais" Then
ActiveSheet.Unprotect
Rows("1:107").Hidden = False
ActiveSheet.Protect , True, True, True
ElseIf Left(ActiveSheet.Name, 4) = "Fact" Then
ActiveSheet.Unprotect
Rows("24:33").Hidden = False
ActiveSheet.Protect , True, True, True
End If
End If
End Sub




MichDenis
Le #5340561
| If SelectedSheets.Count = 1 Then ...

Ceci devrait fonctionner :
If ActiveWindow.SelectedSheets.Count =1 Then





"François" %
Bonjour à tous,

J'essaie de vouloir faire démasquer des lignes potentiellement masquées sur
des feuilles protégées sur un "Workbook_SheetActivate". Je voudrais que la
macro évènementielle ne soit activée que lorsqu'une seule feuille est
sélectionnée (et non plusieurs) ...

J'ai mis :
If SelectedSheets.Count = 1 Then ...
mais cela ne fonctionne pas ; avez-vous une idée pour éviter le bug (XL2000)
?

merci à tous, et meilleurs voux pour 2008.
François

voici le code complet :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If SelectedSheets.Count = 1 Then
If Left(ActiveSheet.Name, 5) = "Frais" Then
ActiveSheet.Unprotect
Rows("1:107").Hidden = False
ActiveSheet.Protect , True, True, True
ElseIf Left(ActiveSheet.Name, 4) = "Fact" Then
ActiveSheet.Unprotect
Rows("24:33").Hidden = False
ActiveSheet.Protect , True, True, True
End If
End If
End Sub
AH60
Le #5340551
Bonjour

enlève cette ligne If SelectedSheets.Count = 1 Then et le dernier Endif
et ça marche!!!

Abed_H




Bonjour à tous,

J'essaie de vouloir faire démasquer des lignes potentiellement masquées sur
des feuilles protégées sur un "Workbook_SheetActivate". Je voudrais que la
macro évènementielle ne soit activée que lorsqu'une seule feuille est
sélectionnée (et non plusieurs) ...

J'ai mis :
If SelectedSheets.Count = 1 Then ...
mais cela ne fonctionne pas ; avez-vous une idée pour éviter le bug (XL2000)
?

merci à tous, et meilleurs voux pour 2008.
François

voici le code complet :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If SelectedSheets.Count = 1 Then
If Left(ActiveSheet.Name, 5) = "Frais" Then
ActiveSheet.Unprotect
Rows("1:107").Hidden = False
ActiveSheet.Protect , True, True, True
ElseIf Left(ActiveSheet.Name, 4) = "Fact" Then
ActiveSheet.Unprotect
Rows("24:33").Hidden = False
ActiveSheet.Protect , True, True, True
End If
End If
End Sub





François
Le #5340541
Merci beaucoup Michdenis,

Je n'avais pas eu l'idée de mettre devant un "ActiveWindow." et cela change
alors tout.

Merci beaucoup pour ton "éclairage" et bonne année 2008.

François

"MichDenis"
| If SelectedSheets.Count = 1 Then ...

Ceci devrait fonctionner :
If ActiveWindow.SelectedSheets.Count =1 Then





"François" %
Bonjour à tous,

J'essaie de vouloir faire démasquer des lignes potentiellement masquées
sur
des feuilles protégées sur un "Workbook_SheetActivate". Je voudrais que la
macro évènementielle ne soit activée que lorsqu'une seule feuille est
sélectionnée (et non plusieurs) ...

J'ai mis :
If SelectedSheets.Count = 1 Then ...
mais cela ne fonctionne pas ; avez-vous une idée pour éviter le bug
(XL2000)
?

merci à tous, et meilleurs voux pour 2008.
François

voici le code complet :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If SelectedSheets.Count = 1 Then
If Left(ActiveSheet.Name, 5) = "Frais" Then
ActiveSheet.Unprotect
Rows("1:107").Hidden = False
ActiveSheet.Protect , True, True, True
ElseIf Left(ActiveSheet.Name, 4) = "Fact" Then
ActiveSheet.Unprotect
Rows("24:33").Hidden = False
ActiveSheet.Protect , True, True, True
End If
End If
End Sub





François
Le #5340531
Bonjour AH60,

Sans la ligne "If SelectedSheets.Count =1 Then" j'ai un bog en cas de
sélection multiple de feuilles d'où cette ligne ...

Mais la solution de Michdenis fonctionne à souhaits ...

Merci beaucoup et bonne année 2008.

François

"AH60"
Bonjour

enlève cette ligne If SelectedSheets.Count = 1 Then et le dernier Endif
et ça marche!!!

Abed_H




Bonjour à tous,

J'essaie de vouloir faire démasquer des lignes potentiellement masquées
sur
des feuilles protégées sur un "Workbook_SheetActivate". Je voudrais que
la
macro évènementielle ne soit activée que lorsqu'une seule feuille est
sélectionnée (et non plusieurs) ...

J'ai mis :
If SelectedSheets.Count = 1 Then ...
mais cela ne fonctionne pas ; avez-vous une idée pour éviter le bug
(XL2000)
?

merci à tous, et meilleurs voux pour 2008.
François

voici le code complet :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If SelectedSheets.Count = 1 Then
If Left(ActiveSheet.Name, 5) = "Frais" Then
ActiveSheet.Unprotect
Rows("1:107").Hidden = False
ActiveSheet.Protect , True, True, True
ElseIf Left(ActiveSheet.Name, 4) = "Fact" Then
ActiveSheet.Unprotect
Rows("24:33").Hidden = False
ActiveSheet.Protect , True, True, True
End If
End If
End Sub







Publicité
Poster une réponse
Anonyme