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 :

Changer d'onglet via une autre instance Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 504
    Par défaut Changer d'onglet via une autre instance Excel
    Bonjour,

    J'ai deux fichiers Excel ouvert en même temps

    • un fichier que je vais appeler SOURCE
    • un fichier que je vais appeler TV

    Le fichier TV contient plusieurs onglets avec des copier avec liaison du fichier SOURCE

    J'utilise donc ce fichier pour afficher des infos sur un autre écran...

    Mon problème est que de temps en temps je dois changer d'onglet sur le fichier TV, ce qui m'oblige à me rendre et regarder l'autre écran (qui ne se trouve pas juste à côté...) pour changer d 'onglet

    Mes questions :

    1. serait-il possible de créer des boutons sur le fichier SOURCE qui afficherait directement l'onglet souhaité sur le fichier TV tout en restant sur le fichier SOURCE ?
    2. si oui, serait-il aussi possible d'avoir une info sur le fichier SOURCE m'indiquant sur quelle onglet je suis sur le fichier TV ?

    Ps : les deux fichiers seront toujours au même endroit (même répertoire) !

    Merci d'avance pour votre aide :-)

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 134
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    serait-il possible de créer des boutons sur le fichier SOURCE qui afficherait directement l'onglet souhaité sur le fichier TV tout en restant sur le fichier SOURCE ?
    A partir du moment où vous précisez la parentalité d'un objet, vous pouvez faire ce que vous voulez.
    Example de l'activation de la feuille nommée "Power" du 2ème classeur ouvert? La ligne de code se trouve dans une procédure présente dans le premier classeur ouvert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(2).Worksheets("Power").Activate
    A savoir que si l'on veut lire ou écrire dans un autre classeur, il n'y a aucune obligation d'activer la feuille ni de sélectionner une cellule

    si oui, serait-il aussi possible d'avoir une info sur le fichier SOURCE m'indiquant sur quelle onglet je suis sur le fichier TV ?
    Pour connaître le nom de la feuille active du deuxième classeur ouvert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      MsgBox Workbooks(2).ActiveSheet.Name
    Si le classeur se nome "TV", vous remplacez la constante 2 par le nom du classeur et son suffixe.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    978
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 978
    Par défaut
    Bonjour, voici mon idée.
    Cette macro va créer autant de boutons que d'onglets dans le fichier TV, à toi de changer la taille et la position.

    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
    31
    32
    33
    Sub CreerBoutonsOnglets()
        Dim wbTV As Workbook
        Dim wsSource As Worksheet
        Dim wsTV As Worksheet
        Dim btn As Button
        Dim i As Integer
     
        ' Spécifiez le nom du fichier TV
        Set wbTV = Workbooks("TV.xlsx")
     
        ' Spécifiez le nom du fichier SOURCE
        Set wsSource = ThisWorkbook.Sheets("SOURCE")
     
        ' Parcourez tous les onglets dans le fichier TV
        For i = 1 To wbTV.Sheets.Count
            ' Récupérer le nom de l'onglet actuel
            Set wsTV = wbTV.Sheets(i)
            Dim ongletNom As String
            ongletNom = wsTV.Name
     
            ' Créer un bouton dans le fichier SOURCE
            'les paramètres sont dans l'ordre: left,top,width,height
            Set btn = wsSource.Buttons.Add(200, 20 * i, 80, 20)
            With btn
                ' Modifier le nom du bouton avec le nom de l'onglet
                .Name = ongletNom
                ' Lier le bouton à la macro générique
                .OnAction = "ActiverOngletTV"
                ' Passer le nom de l'onglet en tant que paramètre à la macro
                .Caption = ongletNom
            End With
        Next i
    End Sub
    Une macro pour les effacer et te permettre de tester différentes tailles et positions sans encombrer la feuille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub EffacerBoutons()
        Dim wsSource As Worksheet
        Dim btn As Button
     
        ' Spécifiez le nom du fichier SOURCE
        Set wsSource = ThisWorkbook.Sheets("SOURCE")
     
        ' Boucle à travers tous les boutons de la feuille de calcul source
        For Each btn In wsSource.Buttons
            btn.Delete
        Next btn
    End Sub
    Une macro pour activer l'onglet de TV:

    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
    Sub ActiverOngletTV()
        Dim wbTV As Workbook
        Dim wsTV As Worksheet
        Dim ongletNom As String
     
        ' Spécifiez le nom du fichier TV
        Set wbTV = Workbooks("TV.xlsx")
     
        ' Récupérer le nom de l'onglet à afficher
        ongletNom = Application.Caller
     
        ' Activer l'onglet spécifié dans le fichier TV
        wbTV.Sheets(ongletNom).Activate
     
        ' Activer la feuille du fichier source
        ThisWorkbook.Activate
        ' Réactiver la feuille spécifique du fichier source si nécessaire
        ' Remplacez "Feuil1" par le nom de votre feuille source
        ThisWorkbook.Sheets("SOURCE").Activate
        ActiveSheet.Range("A1").Value = ObtenirOngletActif()
     
    End Sub
    Et une fonction pour récupérer l'onglet actif de TV et utilisée dans ActiverOngletTV pour rafraîchir le statut dans la cellule A1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function ObtenirOngletActif() As String
        Dim wb As Workbook
        Dim ws As Worksheet
     
        ' Spécifiez le nom du fichier TV
        Set wb = Workbooks("TV.xlsx")
     
        ' Récupérer le nom de l'onglet actif dans le fichier TV
        Set ws = wb.ActiveSheet
     
        ' Renvoyer le nom de l'onglet actif
        ObtenirOngletActif = ws.Name
    End Function
    La seule macro à lancer au départ est CreerBoutonsOnglets() une seule fois et par la suite si tu modifies tes onglets TV, le reste est automatique.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 504
    Par défaut
    Merci, je test... :-)

    1er TEST
    Ne fonctionne pas - erreur 9 (L'indice n'appartient pas à la sélection"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks("TV.xlsx").Worksheets("Feuil1").Activate
    MsgBox Workbooks("TV.xlsx").ActiveSheet.Name
    Pour la solution 2, cela semble ne pas fonctionner, le problème serait aussi au niveau de l'activate
    Attention, j'aimerais plus simple, je créerai moi même les différents boutons, pas besoin d'automatiser tout ça ;-)

    Ps : j'ai aussi testé avec un lien absolu [C:\Users\Propriétaire\Desktop\TV.xlsx], mais rien... :-/ Il semble ne pas voir mon fichier TV.xlsx...

    Si pas trop demandé, serait-il possible d'avoir un exemple (fichiers) ?

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    978
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 978
    Par défaut
    Tes erreurs sont probablement dues aux noms des feuilles ou classeurs.
    Voici les 2 fichiers que j'ai utilisés pour test et qui fonctionnent.
    Les 2 fichiers doivent être ouverts, tu ta places sur le fichier "Source" et tu lances la macro CreerBoutonsOnglets.
    Ensuite tu n'as plus qu'à cliquer sur le bouton désiré pour activer l'onglet dans TV.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 504
    Par défaut
    Merci, ça fonctionne mais... !

    Je viens de comprendre le problème... Mes deux fichiers sont ouverts dans deux Excel séparé ! Obligatoire pour pouvoir mettre le fichier TV sur un 2ème écran...

  7. #7
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    978
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 978
    Par défaut
    Oups désolé, là ça dépasse mes compétences d'autodidacte, je dois passer la main.

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 134
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Mes deux fichiers sont ouverts dans deux Excel séparé !
    Ce n'était pas précisé dans votre demande.

    Obligatoire pour pouvoir mettre le fichier TV sur un 2ème écran...
    Il est parfaitement possible de glisser un classeur vers un autre écran sans pour autant ouvrir une seconde session. C'est ce que j'ai fait pour effectuer le test.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 504
    Par défaut
    Bonjour,

    J'utilise donc ce fichier pour afficher des infos sur un autre écran..
    .
    Comment faites-vous pour afficher sur un 2ème écran, sans ouvrir deux Excel (sessions) ? Y a -t-il une option dans Excel ?

    Bien à vous :-)

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 134
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comment faites-vous pour afficher sur un 2ème écran, sans ouvrir deux Excel (sessions) ? Y a -t-il une option dans Excel ?
    Si vous avez deux écrans, il suffit de sélectionner avec la souris, la fenêtre que vous voulez déplacer (en général, je le fais au niveau de la barre de titres) et cela quelle que soit le fichier et l'application et vous le glissez vers l'écran souhaité.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    978
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 978
    Par défaut
    Comme je n'ai pas 2 écrans je ne me suis jamais posé la question mais j'ai effectivement vu qu'il y a possibilité de séparer 2 fichiers au sein de la même instance d'Excel. Dans l'onglet "Affichage" --> groupe "Fenêtre" tu as l'option "Côte à côte". Cela sépare tes 2 fichiers que tu peux déplacer à l'écran indépendamment l'un de l'autre.
    J'ai testé mes macros dans cette configuration et elles fonctionnent parfaitement.
    Dans le même ordre d'idée, on peut doubler un même classeur et le visionner sur 2 fenêtres séparées et ainsi voir 2 onglets différents du même classeur, côte à côte.
    Pour cela, toujours dans l'onglet "Affichage", choisir "Nouvelle fenêtre".
    J'ai XL2021, je ne sais pas si c'est dispo pour XL2007.

  12. #12
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 134
    Billets dans le blog
    53
    Par défaut
    Bonjour Franc,
    J'ai XL2021, je ne sais pas si c'est dispo pour XL2007.
    Cela existait déjà dans la version 2003 pour 97, je ne me souviens plus.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 504
    Par défaut
    Bon, je dirais que ce n'est pas possible avec Excel 2007...

    J'ai bien l'option "Afficher côte à côte", mais cela reste dans la même instance/session/fenêtre Excel...

    Pas grave, il me reste juste qu'à me rendre sur l'écran B pour changer d'onglet manuellement.

    Bonne journée

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 504
    Par défaut
    Bonjour,

    J'ai trouvé ceci (rien à voir avec ma demande...), mais cela semble possible non ?

    Comment exécuter une macro d'un fichier Excel déjà ouvert dans une autre instance ?

    C'est possible à condition de connaitre au moins le chemin et le nom du classeur ouvert dans l'autre session :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub ClasseurAutreInstance()
        Dim Wb As Workbook
        Dim Chemin As String
     
        Chemin = "C:\dossier\nomClasseur.xls"
     
        Set Wb = GetObject(Chemin)
        If Not Wb Is Nothing Then _
            Wb.Parent.Run "'nomClasseur.xls'!Module1.nomMacro"
     
    End Sub

  15. #15
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 134
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Personnellement, je n'ai jamais eu de nécessité d'ouvrir une autre instance d'excel mais il est parfaitement possible de manipuler ses objets.

    Petit exemple ci-dessous. Il est certainement possible de faire mieux mais n'ayant pas besoin de ce type de manipulation, je manque d'expérience.

    Code d'une procédure qui ouvre un classeur dans une autre instance
    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
    Function NewExcel(FullName As String) As Excel.Application
     ' Ouverture du Classeur dans une nouvelle instance d'Excel
     ' Argument
     '   FullName Chemin complet du classeur à ouvrir
     ' Déclaration et affactation des objets et variables
     Dim appExcel As Excel.Application
     Set appExcel = CreateObject("Excel.Application")
     On Error GoTo ErrorHandler
     With appExcel
     .Workbooks.Open FileName:=FullName
     .Visible = True
     End With
     Set NewExcel = appExcel
    ErrorHandler:
      With Err
        If .Number Then MsgBox "Erreur " & .Number & " - " & .Description
      End With
     ' Fin
     On Error GoTo 0
     Set appExcel = Nothing
    End Function
    Exemple d'un code qui l'invoque
    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
    Sub Test()
      ' Déclaration des constantes et variables
      Const FileName As String = "Base de données.xlsx"
      Const SubFolder As String = "/Data/"
      Dim oExcel As Excel.Application
      Dim CurrentPath As String
      Dim FullName As String
      ' Affectation des objets et variables
      CurrentPath = ThisWorkbook.Path
      FullName = CurrentPath & SubFolder & FileName
      Set oExcel = NewExcel(FullName) ' Ouvre un classeur excel dans une nouvelle instance 
      ' ici Instructions
      With oExcel
        Debug.Print .ActiveSheet.Name ' Affiche ne nom de la feuille active 
      .Worksheets("Base 1").Activate  ' Active la feuille nommée  Base 1
      End With
      ' Fin
      Set oExcel = Nothing
     End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 504
    Par défaut
    Comme le fichier Excel sera déjà ouvert, il me reste à comprendre cette partie... merci :-)
    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
    Sub Test()
      ' Déclaration des constantes et variables
      Const FileName As String = "Base de données.xlsx"
      Const SubFolder As String = "/Data/"
      Dim oExcel As Excel.Application
      Dim CurrentPath As String
      Dim FullName As String
      ' Affectation des objets et variables
      CurrentPath = ThisWorkbook.Path
      FullName = CurrentPath & SubFolder & FileName
      Set oExcel = NewExcel(FullName) ' Ouvre un classeur excel dans une nouvelle instance 
      ' ici Instructions
      With oExcel
        Debug.Print .ActiveSheet.Name ' Affiche ne nom de la feuille active 
      .Worksheets("Base 1").Activate  ' Active la feuille nommée  Base 1
      End With
      ' Fin
      Set oExcel = Nothing
     End Sub
    EDIT:
    Je n'y arrive pas :-/

    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
    Sub Test()
      ' Déclaration des constantes et variables
      Const FileName As String = "TV.xlsx"
      ' Const SubFolder As String = "C:\Users\Propriétaire\Desktop\"
      Const SubFolder As String = ""
      Dim oExcel As Excel.Application
      Dim CurrentPath As String
      Dim FullName As String
      ' Affectation des objets et variables
      CurrentPath = ThisWorkbook.Path
      FullName = CurrentPath & SubFolder & FileName
      Set oExcel = NewExcel(FullName) ' Ouvre un classeur excel dans une nouvelle instance
      ' ici Instructions
      With oExcel
        Debug.Print .ActiveSheet.Name ' Affiche ne nom de la feuille active
      .Worksheets("#EQUIPES").Activate  ' Active la feuille nommée  Base 1
      End With
      ' Fin
      Set oExcel = Nothing
     End Sub
    Le problème semble commencer ici : Set oExcel = NewExcel(FullName)

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 504
    Par défaut
    Bonjour,

    J'ai trouvé ceci qui fonctionne très bien... MAIS je n'arrive pas à l'adapter pour que ce code n'ouvre pas une autre instance (elle serait déjà ouverte manuellement), MAIS qu'elle ne fasse QUE changer d'onglet... Des idées ?

    Le code pourrait ouvrir effectivement le fichier si il n'est pas ouvert (encore mieux...), mais après ne plus l'ouvrir mais simplement changer d 'onglet (#INTRO ; @EQUIPES ; etc...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test2()
    ' Ouvrir un fichier Excel dans une nouvelle instance
    Set instancebase = CreateObject("Excel.Application")
    instancebase.Visible = True ' Mode visible ou pas !
    Set ClasseurBase = instancebase.Workbooks.Open("C:\Users\Propriétaire\Desktop\\TV.xlsx")
    instancebase.Worksheets("#EQUIPES").Activate
    End Sub
    Merci d'avance :-)

  18. #18
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 134
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le code pourrait ouvrir effectivement le fichier si il n'est pas ouvert (encore mieux...), mais après ne plus l'ouvrir mais simplement changer d 'onglet (#INTRO ; @EQUIPES ; etc...)
    Dans ma dernière réponse, j'ai publié le code qui ouvre par VBA, un classeur Excel et deux exemples avec l'instance ouverte. L'un qui affiche la feuille active de la nouvelle instance et l'autre qui active la feuille.

    Dans ma première réponse (fil#2), j'ai publié deux exemples pour manipuler un classeur différent de ThisWorkbook dans la même instance

    Plus bas dans une autre réponse, je vous indique comment avoir des classeurs sur deux écrans séparés en le glissant/déposant dans la même instance, vous permettant ainsi d'utiliser le code que j'ai publié dans ma première réponse.

    Je comprends de moins en moins ce que vous cherchez à faire
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 504
    Par défaut
    Deux instances
    • 1er écran (portable) -> instance une (Source.xlsm)
    • 2ème écran (TV) -> instance deux (TV.xlsx)


    L'instance TV.xlsx contient plusieurs onglets
    • [#INTRO]
    • [#EQUIPES]
    • etc...

    J'aimerais pouvoir choisir l'onglet sélectionné/affiché dans l'instance deux (TV.xlsx) à partir de l'instance une (Source.xlsm)

    Pour ce qui est de votre code
    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
    Sub Test()
      ' Déclaration des constantes et variables
      Const FileName As String = "Base de données.xlsx"
      Const SubFolder As String = "/Data/"
      Dim oExcel As Excel.Application
      Dim CurrentPath As String
      Dim FullName As String
      ' Affectation des objets et variables
      CurrentPath = ThisWorkbook.Path
      FullName = CurrentPath & SubFolder & FileName
      Set oExcel = NewExcel(FullName) ' Ouvre un classeur excel dans une nouvelle instance 
      ' ici Instructions
      With oExcel
        Debug.Print .ActiveSheet.Name ' Affiche ne nom de la feuille active 
      .Worksheets("Base 1").Activate  ' Active la feuille nommée  Base 1
      End With
      ' Fin
      Set oExcel = Nothing
     End Sub
    Je n'arrive pas à le faire fonctionner, voir précédent message... :-)

  20. #20
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 510
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 510
    Par défaut
    Comme ça a été répondu plus haut:
    pour activer la feuille/onglet "#EQUIPES" du classeur "TV.xlsx" déjà ouvert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("TV.xlsx").WorkSheets("#EQUIPES").Activate
    Si pas ouvert, un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim wbTV as WorkSheet
    Set wbTV=Workbooks.open(Chemin_vers_le_fichier & "TV.xlsx")
    wbTV.Worksheets("#EQUIPES").Activate
    Comme on est déjà dans Excel, inutile d'ouvrir une nouvelle instance d'Excel

Discussions similaires

  1. [XL-2019] VBA xl : Modifier code VBA d'un UserForm via un autre fichier Excel VBA
    Par jpo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/11/2022, 22h31
  2. Réponses: 6
    Dernier message: 24/10/2020, 14h59
  3. [XL-2013] Mise à jour d'un fichier Excel via un autre fichier Excel
    Par MrFlavos dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/04/2017, 14h38
  4. Copier un onglet sur un autre fichier excel
    Par dimitri70 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/10/2013, 11h22
  5. Copier onglet sur un autre fichier excel
    Par dimitri70 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/09/2013, 16h42

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