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 :

Appel à une plage nommée dans un fichier ouvert par CreateObject("Excel.application")


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 120
    Par défaut Appel à une plage nommée dans un fichier ouvert par CreateObject("Excel.application")
    Bonjour

    Je remplis une combobox (au sein d'un userform) dans une application principale avec des données qui sont dans un fichier externe.
    J'utilise CreateObject("Excel Application") pour ouvrir le fichier excel.
    Je n'arrive pas à sélectionner une plage nommée
    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
     
            Dim appxl As Excel.Application
            Dim fichier As Window
            Dim feuille As Worksheet
            Dim tableau() As Variant
            Set appxl = CreateObject("Excel.application")
            Dim repertoire As String
            repertoire = "c:\Versioning 1-0.xlsx"
     
            Set appxl = CreateObject("Excel.Application")
     
            With appxl
                 .Workbooks.Open (repertoire)
                .Visible = True
            End With
     
            Set fichier = appxl.Windows("Versioning 1-0.xlsx")
            fichier.Activate
            Set feuille = appxl.Sheets("Gestion Bugs")
            Application.Goto Reference:="Essai"
            ligneDepart = 6 'Selection.Row '1er ligne de la plage
            ligneFin = ligneDepart + Selection.Rows.Count - 1 'dernière ligne de la plage
            For i = ligneDepart To ligneFin
                tableau(i) = Range("A" & i).Value & ": " & Range("B" & i).Value
            Next i
            appxl.Workbooks("Versioning 1-0.xlsx").Close
            Versioning.indiceBug.List = tableau
        End If
    L'erreur
    Nous n'avons pas trouvé de référence de plage ou de nom définie
    plante sur la ligne Application.Goto.

    Si vous avez une idée, je suis preneur

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

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

    Application, dans Application.Goto, fait référence à l'instance Excel d'où est lancé le code.
    Or, tu ouvres une seconde instance Excel (appxl) dans laquelle se situe le classeur contenant la feuille contenant ton Range nommé.

    Application.Goto ne trouve pas, dans la première instance (et pour cause), le Range nommé.

    Le plus simple, dans ce cas, serait de ne pas sélectionner ce Range nommé, mais de travailler avec son adresse.
    Cela évite des Selections (pas évident depuis un UserForm se trouvant dans une autre instance...) inutiles.

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par com-ace Voir le message
    J'utilise CreateObject("Excel Application") pour ouvrir le fichier excel.
    Il serait bien plus simple d'ouvrir ton fichier avec un simple Workbooks.Open sans passer par ta variable appxl (qui ne sert à rien).
    Il serait conseillé de mettre devant un Set fichier = , "fichier" étant déclaré de type Workbook et non Windows.
    Ca simplifiera beaucoup aussi le reste de ton code (par exemple le Close).

    Sauf si ta macro n'est pas lancée depuis Excel.
    Mais dans ce cas, tu devrais ouvrir ton fichier avec Set fichier = GetObject(repertoire).

    Je n'arrive pas à sélectionner une plage nommée
    Tu n'as pas besoin de la sélectionner (ton Goto est inutile).
    Il suffit d'indiquer où la trouver.
    Par exemple feuille.Range("A" & i).

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 120
    Par défaut
    Merci de votre retour
    J'ai trouvé en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wb = Workbooks.Open(repertoire)
    Mais par contre pour fermer, je ne sais pas le fermer en sauvegardant automatiquement
    Je continue à chercher

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par com-ace Voir le message
    Mais par contre pour fermer, je ne sais pas le fermer en sauvegardant automatiquement
    Je continue à chercher
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wb.Close SaveChanges:=True

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

Discussions similaires

  1. [XL-MAC 2011] Appeler une plage nommée dans une boucle
    Par buigui dans le forum Excel
    Réponses: 2
    Dernier message: 29/01/2018, 15h08
  2. [Toutes versions] Accéder aux éléments d'une plage nommée dans une formule
    Par TOM3110 dans le forum Excel
    Réponses: 1
    Dernier message: 13/05/2009, 11h53
  3. Réponses: 1
    Dernier message: 08/05/2008, 08h51
  4. Appeler une commande nommée dans une variable
    Par kwakanar dans le forum Programmation (La)TeX avancée
    Réponses: 1
    Dernier message: 03/03/2008, 15h29
  5. Mettre une plage nommée dans un ComboBox
    Par Swiper dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 18/07/2007, 08h51

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