Bonjour Alain, Domi, Jacques, le Forum
J'arrive un peu après la bataille, sorry !
Domi a bien répondu,
Option Explicit est un 'Statement' qui indique à VBA une Option qui oblige le développeur à délarer les Variables... Sinon VBA le signale bien gentiment au lieu de ne rien faire... Ce qui peut éviter bien des soucis par la suite...
Ta remarque sur les différences de Syntaxe est judicieuse…
En effet la syntaxe que j’emploie ici semble plus longue… Cependant il ne faut pas oublier que VB / VBA, et autres dérivés, sont des langages orientés « Objects » et implicitement VBA fera une instance à un Object WorkSheet indifféremment des deux syntaxes…
Dans le cas présent, il est clair que la Syntaxe :
Worksheets(Onglet).Unprotect Password:=Pass
Suffit amplement…
Par contre ci on devait “triturer” cette feuille à plusieurs reprises avec par exemple :
Sub Deproteger(Onglet As String)
Dim WS1 As Worksheet
Set WS1 = Worksheets(Onglet)
Set WS2 = Worksheets('Source')
With WS1
.Unprotect Password:=Pass
.Visible = xlSheetVisible
.Range('A1') = Date
WS2.Range('A1').Copy .Range('A2')
.PrintOut
.Visible = xlSheetVeryHidden
.Protect Password:=Pass
End With
End Sub
Ce serait bien plus « fatiguant » pour VBA de faire le code ci-dessous car il fera une Instance à la Feuille à chaque ligne au lieu d’une seule comme au dessus avec mon Set d'Object :
Sub Deproteger(Onglet As String)
Worksheets(Onglet).Unprotect Password:=Pass
Worksheets(Onglet).Visible = xlSheetVisible
Worksheets(Onglet).Range('A1') = Date
Worksheets('Source').Range('A1').Copy Worksheets(Onglet).Range('A2')
Worksheets(Onglet).PrintOut
Worksheets(Onglet).Visible = xlSheetVeryHidden
Worksheets(Onglet).Protect Password:=Pass
End Sub
Même si il semble y a voir moins de lignes...
Mais comme j'ai dit, dans le cas présent ce n'est pas justifié, ce sont mes habitudes de dévelloppement.
Bonne Appétit
[ol]@+Thierry[/ol]