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

bug avec "SelectedSheets.Count"

5 réponses
Avatar
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

5 réponses

Avatar
François
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" a écrit dans le message de news:
%
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




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

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





"François" a écrit dans le message de news:
%
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
Avatar
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





Avatar
François
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" a écrit dans le message de news:

| If SelectedSheets.Count = 1 Then ...

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





"François" a écrit dans le message de news:
%
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





Avatar
François
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" a écrit dans le message de news:

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