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 :

Utiliser des plage nommées a partir d'un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de Excel_man
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Par défaut Utiliser des plage nommées a partir d'un autre classeur
    Bonjour,
    Je n'avais plus mis le nez dans VBA depuis un moment et je bute sur un pb de base:
    Avec un adressage bâtis a partir de plage nommées, j'enregistrais dans un onglet "Archive" certaines données.
    Maintenant, je veux faire la même chose mais dans un autre fichier et j'ai une erreur 424 quand j'arrive sur [Ligne_1].
    Si en déboguant, je bascule sur mon fichier d'origine, la macro fonctionne bien.
    J'ai essayé plusieurs écritures ex: Range([Ligne_1]).Value mais idem avec une err. 1004

    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
    24
    25
    26
    27
    28
    29
    30
    '* Créer un fichier si inexistant pour l'archivage des données  *
     
    Dim Monfichier As String, Chemin As String
    Dim Wb_Cible As Workbook
     
    'Création sous répertoire
        ChDir ThisWorkbook.Path
        If [Sous_Répertoire].Value <> "" Then
            Chemin = ThisWorkbook.Path & "\" & [Sous_Répertoire].Value
            If Dir(Chemin, vbDirectory) = "" Then MkDir (Chemin)
        Else
            Chemin = ThisWorkbook.Path
        End If
     
    'Contrôle de l'existence du fichier sinon créer un fichier a partir de l'onglet "Maquette..."
        Monfichier = Chemin & "\" & [Nom_fichier].Value
        If Dir(Monfichier) = "" Then
            ThisWorkbook.Sheets("Maquette").Cells.Copy
            Set Wb_Cible = Workbooks.Add
            ActiveSheet.Paste
            ActiveSheet.Name = "Archive"
        Else
            Set Wb_Cible = Workbooks.Open(Filename:=Monfichier)
        End If
     
    'Copie l'ensemble des éléments à archiver
        With Wb_Cible.Sheets("Archive")
        Derligne = LastRow(Wb_Cible.Sheets("Archive")) + 1
        .Cells(Derligne, 1) = [Ligne_1].Value
        End with

  2. #2
    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,

    il faut préfixer le range pour établir sa filiation complète

    MonClasseur.MaFeuille.MaPlage

    Je suis pris d'un doute : dans le cas d'une plage de portée "Classeur", je crois que la feuille n'est pas nécessaire

  3. #3
    Membre confirmé Avatar de Excel_man
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 98
    Par défaut Dans le vrai!
    Bonjour Joe,
    C'est bien ça : MonClasseur.MaFeuille.MaPlage meme avec une plage nommée de porté "Classeur"
    J'avais déjà essayé (parmi d'autres choses) mais en insistant suite a votre réponse, j'ai trouvé mon erreur (de débutant): [ ] au lieu " "
    J'avais écrit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ThisWorkbook.Sheets("Saisie").Range([Ligne_1]).Value
    au lieu de la bonne syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ThisWorkbook.Sheets("Saisie").Range("Ligne_1").Value
    Merci beaucoup

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

Discussions similaires

  1. utilisation des tubes nommés
    Par tuxmona dans le forum Linux
    Réponses: 4
    Dernier message: 31/07/2014, 15h56
  2. Réponses: 1
    Dernier message: 16/06/2014, 09h22
  3. [XL-2010] utiliser des plages de noms
    Par tompom3108 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/12/2011, 13h45
  4. Liste des plages nommées d'un workbook
    Par Gautheron dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/11/2008, 20h48
  5. Réponses: 4
    Dernier message: 24/04/2007, 18h05

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