Déclarer nom onglet comme constante

slaurent01

XLDnaute Junior
Bonjour le forum,

J'ai une question, qui vous semblera peût être bête, mais étant débutant en vba je n'arrive pas à déclarer l'onglet "Devis" comme constante avec le nom Ws pour pouvoir l'utiliser dans toute mon application.

Je l'ai nommée lors de l'initialisation de l'userform mais j'ai créé un bouton et je fais appel à la valeur Ws pour raccoucir le code, ca ne fonctionne pas, je suis obligé de tout récrire.



Code:
Private Sub UserForm_Initialize()

Dim Ws As Worksheet
Dim Fr As UserForm
Set Ws = Sheets("Devis")
Set Fr = FrmDevis
......

Code:
Private Sub btnnouveau_Click()
[B]ThisWorkbook.Worksheets("Devis").Select  '--> à remplacer par Ws
ActiveSheet.Unprotect

Range("A4").Value = Range("A4") + 1
TbxNdv = Range("A4")
[B]ThisWorkbook.Worksheets("Devis").Select   '--> à remplacer par Ws
ActiveSheet.Protect
End Sub

J'ai essayé avec "Public Ws as worksheet"..... dans un module, mais en vain
Je vous remercie si vous pouviez m'apporter votre aide, afin de comprendre comment on optimise l'écriture de certains codes.

Cordialement
Séphane
 

Pièces jointes

  • test.xlsm
    67.3 KB · Affichages: 42
  • test.xlsm
    67.3 KB · Affichages: 45
  • test.xlsm
    67.3 KB · Affichages: 47

camarchepas

XLDnaute Barbatruc
Re : Déclarer nom onglet comme constante

Bonjour,

Le probléme n'était pas sur la déclaration seulement , mais aussi sur l'affectation.
Ici l'affectation à lieu juste avant l'appel du userform


Dans le module Actions

Code:
Public Ws As Worksheet

Sub Showfrmdevis()
Set Ws = Sheets("Devis")
FrmDevis.Show

End Sub

et donc le code dans le formulaire :

Code:
Private Sub btnnouveau_Click()
Ws.Unprotect
 Ws.Range("A4").Value = Ws.Range("A4") + 1
 TbxNdv = Ws.Range("A4")
Ws.Protect
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Déclarer nom onglet comme constante

Bonjour le fil, bonjour le forum,

Autre option, déclarer la variable au niveau module :
Code:
Private Ws As Object

Private Sub UserForm_Initialize()
Dim Fr As UserForm

Set Ws = Sheets("Devis")
'...
End Sub

Code:
Private Sub btnnouveau_Click()
With Ws
    .Unprotect
    .Range("A4").Value = .Range("A4") + 1
    TbxNdv = .Range("A4")
    .Protect
End With
End Sub
 

slaurent01

XLDnaute Junior
Résolu :Déclarer nom onglet comme constante

bonjour le forum,

Bonjour camarchepas et robert. Merci pour vos réponses, les deux solutions simplifient ainsi l'écriture du code.

j'ai bien du mal à définir oû et comment on définit les variables que l'on veut ré-utiliser afin d'avoir un code bien structuré.

Merci pour votre attention, bonne fin de journée à tous.

Cordialement
Stéphane
 

Discussions similaires

Statistiques des forums

Discussions
312 938
Messages
2 093 775
Membres
105 818
dernier inscrit
daisyli67