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 :

Gestion de classeurs Excel indépendants


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut Gestion de classeurs Excel indépendants
    Salut,
    je développe en ce moment une macro VBA qui, via un .cmd, ouvre un nouveau classeur excel.
    Le problème est que je n'arrive pas à récupérer la main sur le nouveau classeur. Plus généralement, je n'arrive pas à passer d'un classeur à l'autre, vu que les deux Excel sont "indépendants".
    Par exemple, je n'arrive pas, à partir du code du classeur "père", à écrire qqch ds un onglet du fichier du classeur "fils".
    Quelqu'un a t il déjà été confronté à ce problème ?
    Merci bcp

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    En effet, pour faire "ce que tu semble vouloir faire" tu dois créer une seconde instance d'excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim CL1 as Workbook
    Dim FL1 as worksheet
    Dim XlAppli
    Dim XlCl
    Dim Xlfl
    Set CL1 = ThisWorkbook 'le classeur qui contient cette macro
    Set FL1 = CL1.worksheets("Feuil1") 'la feuille
    Chemin = "C:\LeRep\" 'Nom du second classeur
    NomFich = "Le Classeur.xls" 'feuille du second classeur
        Set XlAppli = CreateObject("Excel.Application") '< L'appli Excel
        Set XlCl = XlAppli.Workbooks.Open(Chemin & NomFich) '< le classeur
        Set Xlfl = XlCl.Worksheets("feuil1") '< la feuille
    Ensuite tu peux travailler tantôt sur Xlfl, tantôt sur FL1 du classeur contenant les macros.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    merci bcp pr ton retour

    le problème est que j'ouvre le classeur via un .cmd (Shell(path & "launch.cmd", 1)) ce qui fait que je ne sais pas comment faire pour nommer ou récupérer le nom de l'appli excel qui a été instanciée.
    Et (bien sur) je suis obligé de lancer le fichier via ce .cmd, sinon ca serait trop facile.
    sais tu comment faire ?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour activer le second classeur de façon à écrire dedans c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        XlAppli.Visible = True
        XlCl.Activate
    mais dans ce cas, la macro poursuit son exécution dans le classeur principal. Et si tu fermes le second Excel depuis son instance, tu ne reviendras pas automatiquement dans ton premier fichier... mais il existe une solution consistant à mettre un msgbox après les deux lignes ci-dessus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox "Travail sur le classeur 2 terminé" 'ou ce que tu veux
    Quand tu fermeras le second Excel, un clic sur ok te ramèneras sur le fichier principal et la macro pourra se poursuivre.

    En fin de macro, n'oublie pas de supprimer les instances
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set XlAppli = Nothing
    Set XlCl = Nthing
    Set etc.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    oui mais quand tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Set XlAppli = CreateObject("Excel.Application") '< L'appli Excel
        Set XlCl = XlAppli.Workbooks.Open(Chemin & NomFich) '< le classeur
    ca crée un nouveau classeur et ouvre dans celui ci ton fichier. mais c'est déjà fait par le .cmd. dc le pb est de récupérer le nom de l'appli pour pouvoir l'utiliser par la suite.

    je sais pas si je suis bien clair

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    mais c'est déjà fait par le .cmd. dc
    PS donc...
    Et bien sûr, tu supprimes ton cmd qui ouvre ton classeur, classeur avec lequel aucun lien n'est possible depuis ton code.
    Teste mon code en mettant le cmd en remarque.

  7. #7
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    le pb c que si je ne lance pas le fichier avec le cmd, il ne marche pas (le .cmd met à jour des éléments qui, si ils ne sont pas updatés, ne permettent pas le fonctionnement du fichier et notamment des macros qui sont dedans).
    j'en conclus que mon cas est désespéré ?

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonsoir,

    le .cmd met à jour des éléments qui, si ils ne sont pas updatés, ne permettent pas le fonctionnement du fichier et notamment des macros qui sont dedans
    Simple curiosité, que peut faire un .cmd à un fichier excel qu'Excel ne pourrait pas faire?

    Si tu nous en dis plus on trouvera peut etre quelque chose.

    Cordialement,

    Tirex28/

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

Discussions similaires

  1. Gestion de classeurs Excel
    Par cosinus5 dans le forum VSTO
    Réponses: 5
    Dernier message: 27/11/2010, 18h17
  2. Changer de feuille dans un classeur Excel
    Par couiss dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 09/05/2005, 10h05
  3. Ouverture classeur excel en VBSCRIPT
    Par coeur74 dans le forum ASP
    Réponses: 6
    Dernier message: 20/01/2005, 15h53
  4. Ouverture classeur excel en VBSCRIPT
    Par coeur74 dans le forum ASP
    Réponses: 2
    Dernier message: 20/01/2005, 09h11
  5. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 13h09

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