Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Déclarer nom onglet comme constante

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
Résolu 😀é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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
624
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…