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 :

Portée des noms de cellules entre divers fichiers [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Utilisateur privé
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Utilisateur privé

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut Portée des noms de cellules entre divers fichiers
    Bonjour,

    J'utilise plusieurs fichiers excel comportant des noms de cellules identiques.
    Ces noms font références à des tableaux dont la dimension change dans chaque fichier.
    Avec un code VBA, j'ai créé des fonctions de calcul utilisant ces noms.
    Dans le code j'ai dû utiliser "Application.Volatile" pour que les calculs soient réaliser sans valider la cellule contenant la fonction.
    Le problème est que lorsque 2 classeurs, ou plus, sont ouverts simultanément, les données affichées sont issues du dernier calcul.
    Le classeur actif est mis à jour par appui sur "F9".

    Quelqu'un a-t-il une idée pour que la portée soit "local" au classeur?

    Merci

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

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Hein ???

    Peut-être transmettre un range à la fonction ?

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Bonjour

    Dans ton code précises-tu le nom du classeur avant le nom ?

  4. #4
    Membre averti
    Homme Profil pro
    Utilisateur privé
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Utilisateur privé

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut
    Bonjour,

    Voici un extrait du code utilisant les noms:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    With Application
    '   Tableau de configuration de chaque type de pièce
        Tabl1 = .Transpose(.Transpose(Range("Z_CPA_Config_Appareillage")))
     
    '   Tableau de configuration des logements
        Tabl2 = .Transpose(.Transpose(Range("Z_CPA_Config_Appt")))
     
    '   Tableau de correspondance de la liste des logements
        Tabl3 = .Transpose(.Transpose(Range("Liste_Type_Lgt")))
    J'ai créée un classeur "original" me servant de base pour la création de devis.
    Ce classeur de base est ensuite enregistré avec un nom correspondant au N° du devis
    Par exemple j'ai 2 classeurs "D12345v1.xlsm" et "D23456v1.xlsm" ayant tous les deux des tableaux de cellules nommées "Z_CPA_Config_Appareillage", "Z_CPA_Config_Appt", "Liste_Type_Lgt" mais ayant des données propres à chaque classeur.
    Comment définir en VBA préciser le nom du classeur?

    Merci

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Re
    Faire précéder Range("Nom") de Workbooks("Classeur").

  6. #6
    Membre averti
    Homme Profil pro
    Utilisateur privé
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Utilisateur privé

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut
    Bonjour Chris,

    Ça ne fonctionne pas: il n'y a plus de transfert de valeur.
    Ai-je mal écrit le code?
    Voici ce que j'ai écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With Application
    '   .ScreenUpdating = False
     
    '   Tableau de configuration de chaque type de pièce
        tabl1 = .Transpose(.Transpose(Range("Z_CPA_Config_Appareillage")))
        tabl10 = .Transpose(.Transpose(Workbooks("D00966v1 - Offre Commerciale.xlsm").Range("Z_CPA_Config_Appareillage")))
     
    '   Tableau de configuration des logements
        tabl2 = .Transpose(.Transpose(Range("Z_CPA_Config_Appt")))
     
    '   Tableau de correspondance de la liste des logements
        tabl3 = .Transpose(.Transpose(Range("Liste_type_lgt")))
    La fenêtre de visualisation des variables indique:
    Nom : Capture.JPG
Affichages : 108
Taille : 19,4 Ko

    La variable Tabl10 est vide.
    Je n'ai ouvert qu'un classeur pour tester la syntaxe.

    Bien cordialement

  7. #7
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 587
    Par défaut
    Bonjour

    Oups il faut le nom du classeur mais aussi le nom de le feuille correspondant au range couvert par le nom

    J'ai retesté cette fois. J'avais oublié cette lourdeur mais au moins on n'a pas de souci d'identification .

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

Discussions similaires

  1. Portée des noms des arguments de fonctions : locale ou globale?
    Par amundsen dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/12/2008, 14h01
  2. Réponses: 4
    Dernier message: 10/04/2008, 23h23
  3. comparer des cellules entre 2 fichiers differents
    Par drabmol dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/11/2007, 21h25
  4. nuances et portée des noms attribués par RefersTo, RefersToLocal..
    Par tom6359 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/06/2007, 18h40
  5. Réponses: 1
    Dernier message: 23/03/2007, 12h43

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