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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    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 176
    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 176
    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
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    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
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    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
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    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
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    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...

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