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 variables publiques


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 28
    Par défaut Déclaration variables publiques
    Bonjour à tous,

    J'aimerais définir dès le début de ma Macro des variables public en fonction d'une valeur dans ma feuille excel (grâce ici à une function).

    Cependant, Excel m'indique un message d'erreur:
    Nom : Capture.PNG
Affichages : 769
Taille : 9,2 Ko

    Concernant cette ligne de code:
    Nom : Capture.PNG
Affichages : 722
Taille : 2,4 Ko

    Merci par avance de votre aide,
    Rainmax.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut
    Bonjour,

    Peux-tu nous donner la signature de ta Sub ?

    Si tu as un soucis dans son appel, essaye de lui passer directement une variable, que tu auras instancié avant.

    Du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim maChaine as String
    maChaine = Sheets("Interface").Range("A2").Value
     
    Call Connexion_BDD(maChaine)
    Si ça plante toujours, donne nous un peu plus d'infos sur ta Sub ainsi que ta feuille Excel.


    Slooby.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 28
    Par défaut
    J'ai essayé d'assigner simplement à une variable Public Const, la valeur dans la cellule nommé "BDD_Path" par exemple:
    Nom : Capture.PNG
Affichages : 716
Taille : 2,9 Ko

    Voici le message d'erreur:
    Nom : Capture1.PNG
Affichages : 805
Taille : 8,3 Ko

    Ici, je ne suis n'y dans une Sub ou une fonction, je suis en entête de module où je déclare les variables Public, j'ai l'impression qu'on ne peux définir que en "dure" les variables public à cette endroit :/.

    Merci par avance de votre aide,
    Rainmax.
    Images attachées Images attachées  

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    utiliser une variable publique et non pas une constante ‼ Le message est pourtant clair …



    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

  5. #5
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Par définition une constante ne peut pas être dynamique.
    Même si ta valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    worksheet("interface").Range("A2").value
    est statique, l'appel via worksheet("interface").Ran...... est un appel dynamique, ce qu'une constante n'acceptera jamais.

    Et donc oui, on ne peut définir qu'en "dur" des constantes publiques (en tout cas je n'ai pas d'autre moyen en tête)
    Par contre, les constantes dans des sub, on peut leur attribuer une variable passée en paramètre (si je ne me trompe pas, à vérifier)

  6. #6
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut
    Re,

    Marc-L et jeanmidudu ont parfaitement répondu à ton problème !

    une variable CONST ne peut pas faire référence à une cellule, car la cellule PEUT changer de valeur, donc elle n'est pas constante.
    une variable PUBLIQUE (classique) uniquement peut elle changer (rien ne l'en empêche) et elle peut être utilisée dans ton code comme tu veux (Cf le bout de code que j'ai déjà mis au début pour la déclarer)

    Slooby

  7. #7
    Invité
    Invité(e)
    Par défaut
    Nom : Sans titre.png
Affichages : 673
Taille : 716 octets ça je connais pas!

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 28
    Par défaut
    D'accord, merci pour vos explications.

    Poutant le problème persisite lorsque je passe par une simple variable:
    Nom : Capture.PNG
Affichages : 738
Taille : 17,6 Ko

    Voici le message d'erreur:
    Nom : Capture1.PNG
Affichages : 742
Taille : 9,2 Ko

    Avez vous une solution svp ?
    Tout ce code est en entête de mon module.

    Merci par avance pour votre aide,
    Rainmax.

  9. #9
    Invité
    Invité(e)
    Par défaut
    tiens ça c'est pour mes zygomatiques!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Public maChaine as String
    Sub JeMetsMonCodeDansUneSub()
    maChaine = Sheets("Interface").Range("A2").Value
     Call Connexion_BDD(maChaine)
    End Sub

  10. #10
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut
    Déclare également tes premières variables comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Public Path_BDD As String
    Public my_teb() As String
    Public Path_folder As String
    Public i As Integer
    Je te conseille fortement de privilégier la déclaration avec Public plutôt qu'avec Dim lors d'une déclaration en-dehors de sub ou function.

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 28
    Par défaut
    D'accord, c'est ce que j'ai fait mais le problème persiste:

    Nom : Capture.PNG
Affichages : 744
Taille : 21,2 Ko

    Voici le message d'erreur:
    Nom : Capture.PNG
Affichages : 722
Taille : 9,7 Ko

    Avez-vous une idée ?
    Rainmax
    Images attachées Images attachées  

  12. #12
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour,
    on ne peut initialiser une variable dans la partie déclarative d'un module de code. Cela ne peut être bien évidemment fait que dans une procédure.

  13. #13
    Invité
    Invité(e)
    Par défaut
    j'ai essayé de placer ton imprime écran dans un sub pour te montrer ma je n'y suis pas arrivé!

  14. #14
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    au vu de son dernier print, tout est à revoir, et notamment :

    - on déclare les variables publiques AVANT toute procédure
    - on ne crée aucune ligne de code en dehors d'une procédure ou fonction
    - on évite de déclarer des variables en plein milieu d'un code : si on doit déclarer des variables propres à une procédure, le bon usage veut qu'on les met juste après la déclaration de procédure/fonction

  15. #15
    Membre extrêmement actif
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 037
    Billets dans le blog
    5
    Par défaut
    Salut,
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    au vu de son dernier print, tout est à revoir, et notamment :

    - on déclare les variables publiques AVANT toute procédure
    - on ne crée aucune ligne de code en dehors d'une procédure ou fonction
    - on évite de déclarer des variables en plein milieu d'un code : si on doit déclarer des variables propres à une procédure, le bon usage veut qu'on les met juste après la déclaration de procédure/fonction
    Et j'ajouterais qu'à la place des variables publiques, préférer des procédures Property. Surtout quand on veut qu'elles ne soient qu'en lecture comme il le voulait. PropertyGet seul est applicable dans ce contexte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Property Get EnLectureOnly() As String
        EnLectureOnly= val_toto
    End Property
     
    'on accède à la valeur de EnLectureOnly avec
    toto = EnLectureOnly

Discussions similaires

  1. Déclaration de variable publique
    Par Domino40 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/04/2010, 11h42
  2. Réponses: 11
    Dernier message: 11/05/2006, 11h09
  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