IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

pb constante Worksheet VBA Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 57
    Par défaut pb constante Worksheet VBA Excel
    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 ..


    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
    La macro de test

    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Source = Worksheets("Result")
    Set Dest = Worksheets("Test")
    cela passe bien..

    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)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Source = Worksheets("Result")
    Set Dest = Worksheets("Test")
    Avec ma méthode cela passe, (Feuille "Test1-OK")

    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

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Définis-les commes variables et non comme constantes. Pour qu'elles soient accessibles de tous les modules du projet, qu'ils soient standard ou de classe, tu dois les définir au début d'un module standard (donc pas un module de classe), avant la toute première procédure ou fonction, de la manière suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Source As Worksheet
    Public Dest As Worksheet
    N'hésite pas à voir les tutos pour bien démarrer en VBA.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. Vba excel workbook worksheet fermeture excel
    Par cretgil dans le forum IHM
    Réponses: 2
    Dernier message: 27/03/2015, 11h56
  2. [VBA-EXCEL] - Excel - Find - Erreur worksheet
    Par akination dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/04/2013, 11h49
  3. [VBA-excel]initialiser une combobox dans worksheet
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 20/09/2006, 11h29
  4. [VBA][Excel]Array en constante
    Par Pollux dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/02/2006, 12h46
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo