Bonjour à tous.
j'ai posté un sujet sur PCA qui m'a redirigé vers ce forum...
voici donc mon pb :
Bonjour à tous
-
Je dois utiliser 2 Feuilles dans mon code VBA.
J'ai donc eu l'idée de leur donner des noms avec l'instruction "SET"
Set Source = Worksheets("Résultat")
Set Dest = Worksheets("test")
cela fonctionne mais je dois les redéfinir dans chaque sub ou function
-
j'ai donc pensé à les définir en tant que constantes..
Mais....
je ne vois pas la syntaxe à adopter...
pour une variable "simple", pas de pb .. exemple : Const Nb As Integer = 2
Mais pour une Feuille ?
comment faire ?
-
j'ai essayé :
Const Source = Worksheets("Résultat")
Const Source as Worksheets = Worksheets("Résultat")
cela ne passe pas ????
-
Précision ..
La 1° feuille dans lequel j'ai les "données" est la Feuille dont le Nom de l'onglet est "Résultat"
La 2° feuille dans lequel je dois traiter ces données est la Feuille dont le Nom de l'onglet est "test"
Le code que je fais est dans "test" que je veux nommer "Dest"
=> Comment Faire pour attribuer de manière constante dans le haut du code de cette feuille "test"
"Source" et "Dest" comme étant "constantes" "Feuilles" ?
afin de pouvoir utiliser ces instructions par exemple :
Source.Activate
Source.Range("A12").Select
Car avec "Set" cela marche, mais je dois redéfinir Source et Dest dans chaque sub ou function
-
Merci par avance de votre aide
PS
Une personne m'a donné quelques solutions sur PCA mais cela ne passe pas ..
La macro de test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Public Property Get Source() As Worksheet Const WsSourceName As String = "Result" Set Source = ActiveWorkbook.Worksheets(WsSourceName) End Property Public Property Get Dest() As Worksheet Const WsDestName As String = "Test" Set Dest = ActiveWorkbook.Worksheets(WsDestName) End Property
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Sub Test() With Source .Cells(1, 1).Value = "Feuille Source" End With With Dest .Cells(1, 1).Value = "Feuille Dest" End With End Sub Const WsSourceName As String = "Result" Const WsDestName As String = "Test" Public Property Get Source() As Worksheet Set Source = ActiveWorkbook.Worksheets(WsSourceName) End Property Public Property Get Dest() As Worksheet Set Dest = ActiveWorkbook.Worksheets(WsDestName) End Property
j'ai testé tes 2 solutions mais cela bloque à un moment..
Explication :
Sur la Feuille "Result" j'ai un bouton qui auparavant été en "private", qui est maintenant en "normal"
(afin de le rendre accessible par une autre feuille que "Result")
Dans cette feuille "Result", ce bouton sert pour traiter différentes choses, il est donc indispensable sur cette feuille.
-
D'autre part, j'ai une autre feuille "Test" qui me permet de "réorganiser" l'affichage de cette feuille "Result"
Sur cette feuille "Test", j'ai un autre bouton qui permet de lancer "une" réorganisation afin de l'improimre ultérieurement...
et celui-ci doit appeler le bouton de la feuille "Result"
quand je mets dans les procédures :
cela passe bien..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Set Source = Worksheets("Result") Set Dest = Worksheets("Test")
je peux appeler sans pb le bouton de la Feuille "Result" a partir de la Feuille "Test"
-
Mais quand je mets ta 1° ou ta 2° solution de Constante, cela ne marche plus ?
-
Le message d'erreur :
Or Cette procedure existe bien dans la feuille "Source" ...
(et c'est exactement comme cela que je procède avec ma methode)
Avec ma méthode cela passe, (Feuille "Test1-OK")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Set Source = Worksheets("Result") Set Dest = Worksheets("Test")
avec tes 2 propositions de pour définir les Noms de Feuilles en "Constante" cela ne fonctionne plus ?
je te donne le lien du fichier pour exemlple..:
http://cjoint.com/?0GslEmlqPsT
il y a 2 Feuilles Test : une qui porte le Nom "Test", l'autre "Test1-OK"
La Feuille "Test1-OK" fonctionne (ma méthode)
La Feuille "Test" avec tes 2 soluces... cela ne passe pas ???
-----------------------------------------------------------------
Merci par avance de votre aide à tous
Partager