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 :

migration Excel 2007 - variables personnelles non reconnues


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut migration Excel 2007 - variables personnelles non reconnues
    Bonjour,

    J'ai développé un projet VBA sous Excel 2002. Il fonctionne très bien...

    Lors du changement d'ordinateur et du passage à Excel 2007, VBA ne reconnaît plus les variables personnelles que j'ai créées. Il donne le message

    Erreur de compilation : référence ou bibliothèque introuvable

    voici un extrait du code: (L'erreur se produit à la première ligne déjà)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub auto_open()
    '
        Dossier_installation = Sheets("Paramètres").Range("B5").Value
        Dossier_Gestion = Sheets("Paramètres").Range("B6").Value
        Fichier_Depot = Sheets("Paramètres").Range("B11").Value
        Fichier_choisi = Dossier_installation & Dossier_Gestion & Fichier_Depot
     
    '    ActiveWorkbook.UpdateLink Name:=Fichier_choisi, Type:=xlExcelLinks
     
        Sheets("Accueil").Select
        Range("D12").Select
     
     
    End Sub
    Si quelqu'un devait connaître la solution merci de bien vouloir me dépanner.

  2. #2
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir

    Les macros Auto_0pen existaient déjà dans l’ancien langage macro d’Excel.

    Elles ont été conservées dans VBA, mais la norme est plutôt maintenant l’emploi de procédures événentielles.

    Associe ton code à l'événement Open du classeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Workbook_Open()
    '
        Dossier_installation = Sheets("Paramètres").Range("B5").Value
        Dossier_Gestion = Sheets("Paramètres").Range("B6").Value
        Fichier_Depot = Sheets("Paramètres").Range("B11").Value
        Fichier_choisi = Dossier_installation & Dossier_Gestion & Fichier_Depot
     
    '    ActiveWorkbook.UpdateLink Name:=Fichier_choisi, Type:=xlExcelLinks
     
        Sheets("Accueil").Select
        Range("D12").Select
    End Sub
    NB - Ce code est à placer dans le module "ThisWorkbook" du classeur.

    Bon Noël,

    Michel Gaboly

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut
    Merci Michel, mais....

    Le problème n'est malheureusement pas résolu. Il ne provient pas du titre de la procédure mais des variables personnelles. Mon VBA fonctionne sans elles mais dans d'autres procédures, celles-ci sont indispensables et le code ne peut s'exécuter.

    Dossier_installation = Sheets("Paramètres").Range("B5").Value

    donne l'erreur :

    Erreur de compilation : référence ou bibliothèque introuvable

    Peut-être connais-tu la solution?

    Merci d'avance

    Gabriel

  4. #4
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Excuse-moi, je me suis focalisé sur le nom de la procédure en pensant qu’il pouvait y avoir un pb avec la version 2007.

    Mais si on se contente de déplacer le code dans la procédure associée à l'événement Open du classeur, on a un problème de portée.

    Par ailleurs, on ne peut pas les définir comme des constantes. En effet,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const Dossier_installation = "Toto"
    est accepté mais pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const Dossier_installation = Sheets("Paramètres").Range("B5").Value
    La valeur à droite du signe "=" doit être une "vraie" constante, une chaine de caractères, un nombre, une date, ... mais pas une propriété d’un objet.

    Je te propose donc de les définir comme des variables publiques et de les initialiser de façon à pouvoir s’en servir comme de constantes, ce qu’elles sont en pratique :

    Tout en haut d’un module standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Explicit
    Public Dossier_installation, Dossier_Gestion, Fichier_Depot, Fichier_choisi
    et dans le module "ThisWorkbook" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_Open()
        Dossier_installation = Sheets("Paramètres").Range("B5").Value
        Dossier_Gestion = Sheets("Paramètres").Range("B6").Value
        Fichier_Depot = Sheets("Paramètres").Range("B11").Value
        Fichier_choisi = Dossier_installation & Dossier_Gestion & Fichier_Depot
        Sheets("Accueil").Select
        Range("D12").Select
    End Sub
    Bon Noël à nouveau

    Michel Gaboly

  5. #5
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Citation Envoyé par Bigalo Voir le message
    Je te propose donc de les définir comme des variables publiques et de les initialiser de façon à pouvoir s’en servir comme de constantes, ce qu’elles sont en pratique :

    Tout en haut d’un module standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Explicit
    Public Dossier_installation, Dossier_Gestion, Fichier_Depot, Fichier_choisi
    beuèahhhh !!!
    C'est quoi cette manière de déclrer des variables !
    Eh ! Faut pas oublier de les typer les variables !


    Bon, sinon, ton problème ne vient, normalement, ni des déclarations, ni même du nom de ta procédure.
    Ceci dit, Bigalo a pleinement raison :
    Déclarer ses variables
    Utiliser les évènements

    D'où vient donc ton problème ?

    Je t'invite à regarder dans Outils/Références
    Tu devrais avoir une référence marquée MANQUANT ou quelque chose dans ce genre...


    vàlà vàlà

  6. #6
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir Maxence,

    Tout à fait d’accord avec toi sur le fait qu’ïl faut typer les variables. L’unique raison pour laquelle je ne l’ai pas fait ici, est qu’on ne connaît pas le contenu des cellules de façon certaine.

    Ceci dit, on peut estimer que la probabilité qu’il s’agisse de chaînes de caractères, concaténées pour former la 4ème "constante" (un chemin d’accès, apparemment) est > 99%.

    Si c’est bien cela, le code est à modifier ainsi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Explicit
    Public Dossier_installation as String, Dossier_Gestion as String, Fichier_Depot as String, Fichier_choisi as String
    Ce qui me chiffonne est qu’il faut supposer que les cellules utilisées pour définir les 2 premières "constantes", "Dossier_installation et Dossier_Gestion ont comme dernier caractère le séparateur de chemin d’accès, ce qui n’est pas une bonne idée. Je préférerais la version suivante (avec une variable publique supplémentaire, "Sep" et un caractère de moins (le dernier) dans les cellules B5 et B6 de la feuille "Paramètres")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Explicit
    Public Dossier_installation as String, Dossier_Gestion as String, Fichier_Depot as String, Fichier_choisi as String, Sep as string
    et dans le Workbook_Open() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_Open()
        ...
        Sep = Application.PathSeparator
        Fichier_choisi = Dossier_installation & Sep & Dossier_Gestion & Sep & Fichier_Depot
        ...
    End Sub
    L'intérêt est d’avoir un code qui fonctionne avec les versions Mac (où Sep sera égal à ":"), comme avec les versions Windows, où Sep sera gal à "\").

    Cordialement,

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut
    Un grand merci à tous!

    Voilà que cà fonctionne. Il suffisait de déclarer les variables, ben voyons!

    Ceci dit les références dans les cellules étaient bien du texte.

    Pour ma gouverne, j'aimerais cependant bien savoir pourquoi il faut obligatoirement déclarer des variables alors que la case à cocher de la boîte de dialogue de VBA n'estime pas cela nécessaire... S'agit-il d'un bug?

    Merci encore à tous...

    Bonne fin d'année à vous

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/03/2012, 15h03
  2. [WD14] Variables globales non reconnues
    Par kitcarson23 dans le forum WinDev
    Réponses: 11
    Dernier message: 08/07/2011, 13h56
  3. Variable action non reconnue
    Par bdptaki dans le forum Langage
    Réponses: 4
    Dernier message: 19/09/2008, 17h22
  4. variable session_start() non reconnu
    Par elgigante dans le forum Langage
    Réponses: 1
    Dernier message: 11/01/2007, 12h33
  5. Variable GET non reconnue
    Par wolflinger dans le forum Langage
    Réponses: 5
    Dernier message: 03/04/2006, 14h08

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