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 :

Ouvrir un fichier excel avec vba [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut Ouvrir un fichier excel avec vba
    Bonjours à tous,

    Dans un classeur Excel, j'ai ajouté un bouton de commande qui doit permettre :
    1 - de choisir un autre fichier excel,
    2 - de l'ouvrir,
    3 - de copier les infos qui m'interresse
    4 - de les placer dans mon fichier excel,
    5 - et fermer le fichier.

    Je n'arrive pas à trouver la solution pour ouvrir une fenêtre, choisir mon fichier et l'ouvrir. Les solutions sur internet, que j'ai trouvées, montrent du code où on connait le nom du fichier. Ce qui n'est pas mon cas, je voudrais pouvoir le selectionner.

    Bref, au secours !

    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Formateur & Dévrloppeur en Bureautique
    Inscrit en
    Février 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur & Dévrloppeur en Bureautique

    Informations forums :
    Inscription : Février 2007
    Messages : 47
    Par défaut un exemple
    Bonjour,
    voici un exemple en utilisant la méthode GetOpenFileName

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Ouvre()
     
    Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
    If Nom_Fichier <> False Then
        Workbooks.Open Filename:=Nom_Fichier
    End If
     
    End Sub
    Bon courage

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut
    Merci beaucoup pour cette solution !
    Ca fonctionne parfaitement !

    Par contre, pour fermer la fenêtre, je n'y arrive pas j'ai essayé un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Windows("Nom_Fichier").Activate
    ActiveWorkbook.Close
    Comment faire ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Formateur & Dévrloppeur en Bureautique
    Inscrit en
    Février 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formateur & Dévrloppeur en Bureautique

    Informations forums :
    Inscription : Février 2007
    Messages : 47
    Par défaut
    bonjour,

    Nom_Fichier étant une variable, il ne faut pas l'écrire entre guillemets. La syntaxe doit être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Windows(Nom_Fichier).Activate
    ActiveWorkbook.Close
    bon courage

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut
    Cela ne fonctionne pas, j'obtiens l'erreur : "Indice en dehors de la plage (erreur 9)".
    Cela doit etre un problème avec ma variable. Elle est définie en Variant.

  6. #6
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    Ce n'est jamais bon de communiquer avec un Workbook comme ça(avec des workbook.activate, Activeworkbook, activeSheet etc..) car si le process dure un peu et que l'utilisateur click que un fichier excel, ça vire au cauchemar pour lui.
    Crée plutot un objet qui t'ouvrira les portes de toutes les méthodes et propriétés de l'objet!

    Essaie un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Ouvre()
    dim wbMyWb as workbook
    dim Nom_Fichier as variant
     
    Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
    If Nom_Fichier <> False Then
       set wbMyWb= Workbooks.Open(Nom_Fichier)
      wbmyWb.Activate
    End If
     
    End Sub

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut
    Ca marche !

    Merci beaucoup

    edit : J'ai crié victoire trop vite, lorsque je clique sur "annuler" ca bug. j'ai cette erreur là : "Variable objet ou variable bloc With non définie (erreur 91)".

  8. #8
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    je ne reproduis pas l'erreur chez moi avec ce morceau de code. Vois si tu n'utilises pas le wbMyWb plus loin dans ton code ou fait nous parvenir tout ton code avec l'endroit où il bugue.

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 7
    Par défaut
    C'est bon ! C'est moi qui fesait une erreur.
    Merci beaucoup, le problème est résolu.

  10. #10
    Invité de passage
    Homme Profil pro
    Assistant Technique Ingénieur
    Inscrit en
    Avril 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2019
    Messages : 1
    Par défaut
    Bonjour Lardon,



    Aurais-tu encore ton document ?

    En effet, je dois réaliser quasiment le même document que toi, mais je bloque sur la partie 4/ de ton document.

    Pour le moment, j'arrive uniquement à fermer la page recherché et ouverte , or si le document excel ce ferme je ne peux plus coller les informations que j'ai décidé de coller précedemment...

    Je n'arrive aussi pas à coller l'information, mais chaque problèmes en son temps...

    Merci d'avance pour ton aide.

    Cordialement,

    Michel


    PS : Je n'ai que 9 ans de retard^^

  11. #11
    Membre habitué
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Par défaut
    Bonjour Michou66,

    Citation Envoyé par michou66 Voir le message

    En effet, je dois réaliser quasiment le même document que toi, mais je bloque sur la partie 4/ de ton document.
    Pour le moment, j'arrive uniquement à fermer la page recherché et ouverte , or si le document excel ce ferme je ne peux plus coller les informations que j'ai décidé de coller précedemment...

    Je n'arrive aussi pas à coller l'information, mais chaque problèmes en son temps...
    Tout d'abord, je préfère préciser les termes que j'utilise plus bas :
    - Ficher de travail : fichier duquel est lancé la macro et ou tu vas importer tes données
    - Fichier cible ou source : fichier dans lequel tu vas récupérer la donnée à copier et que tu iras ensuite coller dans le fichier "de travail"

    De ce que je comprend de ton message, tu as trouvé comment fermer le classeur du fichier cible mais tu n'arrive pas coller les données du fichier cible => fichier de travail. Ai-je bien compris ?
    Si tel est bien le cas, pourrais-tu, stp, nous donner des informations sur la structure de la zone de données à copier dans le classeur cible ?


    • As-tu des entêtes dans la feuille du classeur cible?

    - Si oui : ou se situent t-elles et souhaite tu les coller avec les données dans ton classeur de travail?

    • La zone contenant les données à copier possède t-elle des cellules/colonnes/lignes VIDES avant la fin de la zone ?


    • Le nombre de lignes ou colonnes de la zone à copier est-il de taille ou structure différentes lors de l'utilisation de ta macro?


    • Y'a t-il des cas où ta zone cible ne contient pas de données ?



    Ci-dessous un bout de code qui peut probablement s'appliquer à ton cas.
    Je suis relativement novice en VBA, il y'a donc probablement de meilleurs moyen de le faire, mais là c'est tout ce que j'ai comme solution.

    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
     
     
    Sub MacroTestMichou()
     
    Dim strDernCell As String
     
    'Exemple de copie de donner du fichier source avec la macro se situant dans le Fichier de Travail
    With Workbooks("Fichier Source.xlsm").Worksheets("Source2")
     
    'Détermination de la dernière cellule de la plage de données
    'Attention : fonctionne uniquement s'il n'y a pas de cellule vide dans la première colonne et la première ligne
    strDernCell = .Range("A1").End(xlDown).End(xlToRight).Address
     
        .Range("A2", strDernCell).Copy
     
    End With
     
    ThisWorkbook.Worksheets("Travail").Range("A2").PasteSpecial (xlValue) 'Je pré-suppose que tu as les même entêtes que dans le fichier cible en ligne 1 et colle donc à partir de la ligne 2
     
     
    Application.CutCopyMode = False 
     
     
    End Sub

    En espérant avoir pu t'aider.
    Bien cordialement

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

Discussions similaires

  1. [XL-2007] Ouvrir fichier excel avec vba
    Par Traputaca dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/05/2013, 16h22
  2. [XL-2003] Pouvoir ouvrir des fichiers excel avec vba sans le faire planter
    Par perpitou dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/12/2011, 15h52
  3. ouvrir un fichier excel avec VB6
    Par sweety2094 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/04/2007, 13h06
  4. créer un fichier excell avec VBA(access)
    Par JCH dans le forum Access
    Réponses: 1
    Dernier message: 19/09/2006, 19h07
  5. ouvrir un fichier Excel avec une requete perso
    Par legillou dans le forum Access
    Réponses: 9
    Dernier message: 21/06/2005, 15h14

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