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 :

Déclaration Variable Publique ? [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 51
    Points : 44
    Points
    44
    Par défaut Déclaration Variable Publique ?
    Bonjour,

    J'ai besoin de déclarer des variables publiques qui alimentées dans une feuille puissent être exploitées dans une autre ou dans un module.
    Quelle instruction utilisée ? où la positionnée ?
    A ce stade je l'ai déclarée Public dans la feuille qui l'alimente. Mais elle est vide quand je veux l'exploiter dans une autre feuille.

    merci de votre aide.

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, de la lecture

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Une explication simple et limpide ici : http://silkyroad.developpez.com/VBA/LesVariables/#LV

  4. #4
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 51
    Points : 44
    Points
    44
    Par défaut
    Merci,

    J'ai lu, mais n'ai pas réussi à résoudre mon besoin!
    Il est le suivant :
    dans la première feuille j'ai une liste de ressource. En doublecliquant sur une ressource j'accède à la deuxième feuille dans laquelle j'exploite le nom de la ressource sélectionnée. c'est cette valeur que je ne récupère pas.

    code de la 1ère feuille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public NumRess, NomRess, listR, DerLigPCH, Mois, Champ, PasMaj As Boolean, err As Boolean
    -------------------
    Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'aller directement dans PCH sur la personne sélectionnée
        NumRess = 0
        If Target.Column = 5 Then
            NumRess = Target.Row - 9
            NomRess = Target.Value ' NumREss contient le nom d'une ressource
            Sheets("PCH").Protect DrawingObjects:=False, Contents:=True, Scenarios:=False
            Sheets("PCH").Select
        End If
     
    End Sub
    Code de la 2ème feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Sub Worksheet_Activate()
        Sheets("PCH").Cells(2, 2) = NomRess ' NomRess est vide ???
        Sheets("PCH").Cells(3, 2) = ""
    End Sub
    Merci d'avance

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par cdurep Voir le message
    J'ai lu, mais n'ai pas réussi à résoudre mon besoin!
    [...]
    Tu as du lire beaucoup trop vite !!!
    Il est bien précisé :
    « Pour que la variable soit utilisable dans toutes les macros du projet, il faut utiliser l'instruction Public et la variable doit impérativement être placée en tête d'un module standard »

    Mais pas dans un module de Feuille !

  6. #6
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Novembre 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 51
    Points : 44
    Points
    44
    Par défaut
    Bonjour,
    Effectivement j'avais mal lu; Ou plutôt pas perçu la nuance.
    Manque de pratique certainement...

    Merci

  7. #7
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 816
    Points : 2 954
    Points
    2 954
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Si tu protèges ta feuille "PCH", comment comptes tu saisir une valeur en Sheets("PCH").Cells(2, 2) lors de son activation?

    Une autre manière de procéder, plutôt que de déclarer des variables publiques, serait d'utiliser des propriétés.
    Je ne te l'indique ici qu'à titre de curiosité.

    Dans un module standard :
    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
    Option Explicit
     
    Private mNumRess As Long
    Private mNomRess As String
     
    Property Get NumRess() As Long
        NumRess = mNumRess
    End Property
    Property Let NumRess(N As Long)
        mNumRess = N
    End Property
     
    Property Get NomRess() As String
        NomRess = mNomRess
    End Property
    Property Let NomRess(Nom As String)
        mNomRess = Nom
    End Property
    Dans ton module de feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
     
    Public listR, DerLigPCH, Mois, Champ, PasMaj As Boolean, err As Boolean
     
    Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'aller directement dans PCH sur la personne sélectionnée
        NumRess = 0
        If Target.Column = 5 Then
            NumRess = Target.Row - 9
            NomRess = Target.Value ' NumREss contient le nom d'une ressource
            Sheets("PCH").Select
        End If
    End Sub
    Et enfin feuille PCH :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
     
     Sub Worksheet_Activate()
        Me.Cells(2, 2) = NomRess
        Me.Cells(3, 2) = ""
    End Sub
    D'autre part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        If Target.Column = 5 Then
            NumRess = Target.Row - 9
    va planter pour tout double clic dans une des cellules de la plage E1:E10.
    Prévoir donc une sortie de procédure.

  8. #8
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour le forum,
    Bonjour pikaju,
    Citation Envoyé par pijaku Voir le message
    [...]Une autre manière de procéder, plutôt que de déclarer des variables publiques, serait d'utiliser des propriétés.
    Je ne te l'indique ici qu'à titre de curiosité [...]
    L'emploi de propriétés est une alternative intéressante à celui des variables
    Je pense qu'il est bon de préciser à un débutant qui a des difficulté à comprendre la portée des variables qu'il s'agit de propriétés publiques affectées au module dans lequel elles sont écrites.
    Dans ce contexte, l'emploi des déclarations implicites (i.e sans Public, Private, ...) n'aide pas à la compréhension du problème.
    Sans vouloir t'offenser, je trouve plus didactique d'écrire ta proposition comme suit :

    Dans un module standard (nommé module1) :
    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
    Option Explicit
    Public listR, DerLigPCH, Mois, Champ, PasMaj As Boolean, err As Boolean
    Private mNumRess As Long
    Private mNomRess As String
     
    Public Property Get NumRess() As Long
        NumRess = mNumRess
    End Property
    Public Property Let NumRess(N As Long)
        mNumRess = N
    End Property
     
    Public Property Get NomRess() As String
        NomRess = mNomRess
    End Property
    Public Property Let NomRess(Nom As String)
        mNomRess = Nom
    End Property
    Dans ton module de feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'aller directement dans PCH sur la personne sélectionnée
        Module1.NumRess = 0
        If Target.Column = 5 Then
            Module1.NumRess = Target.Row - 9
            Module1.NomRess = Target.Value ' NumREss contient le nom d'une ressource
            Sheets("PCH").Select
        End If
    End Sub
    Et enfin feuille PCH :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit
    Private Sub Worksheet_Activate()
        Me.Cells(2, 2) = Module1.NomRess
        Me.Cells(3, 2) = ""
    End Sub

  9. #9
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 816
    Points : 2 954
    Points
    2 954
    Billets dans le blog
    10
    Par défaut
    Salut Patrice740,

    Tu t'es fait raccourcir le pseudo?

    Je ne suis pas offensé.
    Moi-même, en écrivant le code, je me suis demandé si je ne devrait pas ajouter "Public".
    Mais ma fainéantise légendaire maintenant a pris le dessus.
    Bien vu donc ta remarque.
    A++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Déclaration variables publiques
    Par Rainmax dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 11/05/2016, 01h21
  2. Déclaration de variable publique
    Par Domino40 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/04/2010, 11h42
  3. Réponses: 12
    Dernier message: 03/04/2006, 20h08
  4. variables publiques ou module de classe ?
    Par niclalex dans le forum Access
    Réponses: 3
    Dernier message: 04/10/2005, 19h49
  5. erreur déclaration variables
    Par bobic dans le forum ASP
    Réponses: 4
    Dernier message: 13/09/2005, 11h11

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