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 :

liaison entre fichiers exel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 32
    Par défaut liaison entre fichiers exel
    Bonjour tout le monde,

    j'ai un souci

    je voudrai à partir d'un seul fichier lancer des macro se trouvant dans d'autre fichiers (du meme repertoire) ainsi que de rapatrier certaines info dans un fichierfinal
    j'ai :
    -un fichier source contenant un flux de donnée que je dois répartir en département (selon une condition qui réparti le flux dans les sheet correspondante) environ 12000 lignes
    -j'ai 9 fichier xls qui sont ses même département qui va traiter le flux
    (selon certaines condition prédéfini comme le status du flux ) environ 500 à 4000 lignes par fichier xls

    il faudrai que ma macro dispatch les info du fichierSource (point 1) vers les fichiers departement et qu'il lance les macro de chaque fichier

    pour finir mon fichier destination (final) va exraire les info demander dans les fichier departements.

    Je voudrai que tout ceci se lance à partir de la macro provenant du fichierSource

    Séparement j'arrive à le faire : "purger l'info du fichier source" apres je faire des "copier/coller"dans les fichiers departement qui va lui aussi traiter les info
    et pour finir rechercher dans chacun des fichier l'info correspondante
    ca me prend environ 2 à 3 heures par semaines et c'est vraiment trop

    en espérant que vous avez pu me comprendre


    note: si je traite le tout dans un seul fichier excel, j'ai environ 100 feuilles lol

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Il est possible d'ouvrir tes fichiers tout en les masquant. Ce cette façon, les macros qu'ils contiennent seront disponibles. Il ne faudra pas oublier de fermer ces fichiers avant de terminer la macro qui appelle les autres macros, ou au moment de fermer ton fichier source.

    Si tu as besoins de détails, tu dis.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 32
    Par défaut
    c'est ce que je me disais, j'ai commencer mon code dans ce sens
    par contre j'ai une question,
    comment faire pour connaître le chemin des fichier que je vais utiliser (fichier xls) car pour le moment je stipule ou se trouve les fichiers
    par la suite cette "api" sera sur un serveur....
    est-ce que je peux simplement utiliser le chemin comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Workbooks.Open("\\serveur\repPerso\fichier.xls")
    ou me faut-il faire cela autrement

    aussi une chose, on fait comment pour masquer les workbook lorsque la macro sera en train de les traiter?

    comment faut-il faire pour écrire dans un classeur fermé et lancer ses propres macro intégré
    car ce que je trouve pour le moment, c'est d'effectuer des requete sql dans un classeur fermé ce qui ne m'intéresse pas du tout

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Citation Envoyé par kortnor
    comment faire pour connaître le chemin des fichier que je vais utiliser (fichier xls) car pour le moment je stipule ou se trouve les fichiers
    par la suite cette "api" sera sur un serveur....
    En utilisant la boîte de dialogue Ouvrir. Je ne sais plus par coeur comment le faire. En faisant une recherche sur le forum, tu devrais trouver : je crois qu'il y a eu quelques discussions à ce propos. Sinon, il y a le composant CommonDialog (dans une des bibliothèques de composants VB) qui peut servir à la même chose.

    Citation Envoyé par kortnor
    comment faut-il faire pour écrire dans un classeur fermé et lancer ses propres macro intégré
    En utilisant les objets propres à Excel... Probablement de la même façon que si on pilotait des fichiers Excel depuis un autre Application. Va voir les tutoriels VB6 d'automation Office. La façon de faire devrait être essentiellement la même.

  5. #5
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonjour,

    Je dirai qu'on est obligé d'ouvrir un fichier excel pour lancer une macro qu'il contient.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim wk As Workbook
    Set wk = Workbooks.Open("\\serveur\repPerso\Macro1.xls")
    'Nous pouvons même "cacher" ce classeur :
    wk.Windows(1).Visible = False
     
    'Utiliser ici ou ailleur une macro...de ce classeur
    Run ("MAcro1.XLS!test")
     
    'Et aussi fermer le classeur une fois qu'on en as plus besoin.
    wk.Close False
    Jacques.

  6. #6
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Sans oublier le
    après le wk.Close.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 32
    Par défaut
    ok merci pour vos réponses
    je vais de suite modifier mon code et y insérer une barre de progression afin que mes collègues ne pensent pas que Excel " à " encore planter
    Pour ce qui est du chemin d'accès je suis étonné de voir qu'il n'y ai pas la possibilité de lui dire que les fichiers se trouve dans le meme emplacement que le fichier source

    je pense que je vais devoir créer comme tu m'as proposé zazaraignée un jbox qui stipulera quel est le répertoire de traitement

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 32
    Par défaut
    Citation Envoyé par JackOuYA Voir le message
    Bonjour,

    Je dirai qu'on est obligé d'ouvrir un fichier excel pour lancer une macro qu'il contient.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim wk As Workbook
    Set wk = Workbooks.Open("\\serveur\repPerso\Macro1.xls")
    'Nous pouvons même "cacher" ce classeur :
    wk.Windows(1).Visible = False
     
    'Utiliser ici ou ailleur une macro...de ce classeur
    Run ("MAcro1.XLS!test")
     
    'Et aussi fermer le classeur une fois qu'on en as plus besoin.
    wk.Close False
    Jacques.
    apres avoir modifier mon code et ajouter set wk=nothing

    je ne parvient plus apres le lancement de ma macro à ouvrir ces classeur car par la suite ses classeurs devront etre visionné

  9. #9
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Il te suffit de ne pas le fermer ton fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ....
    wk.Windows(1).Visible = False
     
    'Utiliser ici ou ailleur une macro...de ce classeur
    Run ("MAcro1.XLS!test")
    wk.Windows(1).Visible = true 'AFFICHE LE FICHIER..

    Pour ton autre probléme si c'est la sélection du fichier qui te cause un soucis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub MonTest()
     MonFichier = Application.GetOpenFilename
     If MonFichier = False Then Exit Sub
     MsgBox "Le fichier choisi : " & MonFichier
    End Sub

    Jacques.

Discussions similaires

  1. liaisons entre fichiers MS Project
    Par gogodu60 dans le forum Project
    Réponses: 4
    Dernier message: 12/07/2010, 13h50
  2. [XL-2000] Liaison entre fichier - fichier inexistant
    Par NikoJ dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/09/2009, 16h51
  3. [XL-2007] vba Liaison entre fichiers
    Par exaile dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/04/2009, 17h14
  4. Rechercher une liaison entre fichiers
    Par solorac dans le forum Excel
    Réponses: 5
    Dernier message: 09/10/2008, 16h35
  5. problème de liaisons entre fichiers excel
    Par grrimag dans le forum Excel
    Réponses: 3
    Dernier message: 03/06/2008, 13h40

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