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 :

Comment récupérer le nom d'une feuille sélectionnée par un clic gauche


Sujet :

Macros et VBA Excel

  1. #21
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Sauf que dans son cas, il ouvre un autre classeur et que tu ne peux pas intercepter l'événement Activate d'une feuille d'un autre classeur. En tous les cas d'après mes connaissances actuelles.

    L'événement WindowsActivate peut intercepter le changement de fenêtre.

    J'attends la réponse de Sebkem par rapport à ma question précédente pour apporter éventuellement une autre solution.
    Il y a la classe Excel.Application qui permet cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private WithEvents ThisApplication As Excel.Application
     
    Private Sub ThisApplication_WindowActivate(ByVal Wb As Workbook, ByVal Wn As Window)
        Debug.Print "ThisApplication_WindowActivate"
        Debug.Print Wb.Name
        Debug.Print Wn.ActiveSheet.Name
    End Sub
     
    Private Sub Workbook_Open()
        If ThisApplication Is Nothing Then Set ThisApplication = Excel.Application
    End Sub
    Même si je doute que c'est cela qu'il veuille vraiment.

  2. #22
    Membre à l'essai
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Avril 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2015
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Bon, je suis de retour et j'ai donc opté pour la solution de la listBox.

    Je ne sais pas si c'est la solution la plus optimisée mais, pour mon application (et mon niveau en VBA ), c'est largement suffisant. Je pense que ça pourrait servir à d'autres donc voici le résultat.
    L'userform qui est chargé se présente sous cette forme:

    Nom : useform.jpg
Affichages : 154
Taille : 34,1 Ko

    Détails de l'userform (bien détaillé je pense pour les futurs codeurs vba de mon niveau ):
    -L'userform s'appelle "AMDECFileSelect"
    -Bouton "Répertoire" s'appelle "RepAMDECCmdButton"
    - Bouton "Copier" s'appelle "CommandButton1"
    - Le texte "Trame_FMECA.xlsm" est retourné dans le textBox nommé "TextBoxNomAMDEC"
    -La listBox où j'ai cliqué "AMDEC" s'appelle "ListBoxAMDEC"

    Code attaché au bouton "Répertoire":
    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
    Private Sub RepAMDECCmdButton_Click()
    Dim Wb As Workbook
    Dim Ws As Worksheet
     
    Dim NomFichierAMDEC As String
    Dim PathFichierAMDEC As String
    Dim NomOngletAMDEC As String
    Dim ColonneWhereTypeComposant As Range
    Dim Indice As String
     
    'Ouvrir le répertoire et le fichier
    PathFichierAMDEC = Application.GetOpenFilename("Fichiers Excel (*.*), *.*")
    If PathFichierAMDEC <> "" Then
        Application.Workbooks.Open (PathFichierAMDEC)
        NomFichierAMDEC = ActiveWorkbook.Name  'Retourne "nomfichier.xls"
        TextBoxNomAMDEC.Value = NomFichierAMDEC
    End If
     
    'Création de la liste déroulante permettant de sélectionner l'onglet à copier
     For Each Sh In ActiveWorkbook.Worksheets
      Me.ListBoxAMDEC.AddItem Sh.Name
     Next
     
    End Sub
    Code attaché au bouton "Copier":

    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
    Private Sub CommandButton1_Click()
    Dim NomFichierAMDEC As String
    Dim NomOngletAMDEC As String
    NomFichierAMDEC = TextBoxNomAMDEC.Value
    NomOngletAMDEC = ListBoxAMDEC.Value
     
    'Copier l'onglet AMDEC dans le fichier Excel
    Workbooks(NomFichierAMDEC).Worksheets(NomOngletAMDEC).Copy before:=Workbooks("Création_AMDEC_Composant.xlsm").Worksheets("FMD")
    'Dans un autre Userform, je récupère le nom de l'onglet du fichier sélectionné que je sauvegarde dans un TextBox, qui me servira pour d'autres codes vba de type "Worksheets(NomOngletAMDEC).select"
    FMD_Userform.TextBoxNomOngletAmdec.Value = NomOngletAMDEC
    'Fermer le répertoire et le fichier
     
    Workbooks(NomFichierAMDEC).Close savechanges:=False
     
    'Masquer l'userform Sélection de l'onglet AMDEC
    AMDECFileSelect.Hide
     
    End Sub
    J'espère que certains y trouveront une réponse pour leur besoin.

    En tout cas, merci à tous pour vos pistes et aide.

    A bientôt sur ce forum.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. comment récupérer le nom d'une combobox dans une servlet
    Par phenix1988 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 09/05/2010, 14h20
  2. [WD-2007] récupérer le nom d'une feuille d'un classeur excel fermé, depuis word
    Par markelov dans le forum VBA Word
    Réponses: 0
    Dernier message: 24/02/2010, 12h33
  3. Comment récupérer le nom d'une contrainte
    Par equilibrium dans le forum Langage SQL
    Réponses: 8
    Dernier message: 29/05/2008, 15h38
  4. Récupérer le nom d'une feuille excel avec ADO
    Par Kephuro dans le forum Bases de données
    Réponses: 1
    Dernier message: 25/01/2008, 22h11
  5. Réponses: 4
    Dernier message: 09/11/2005, 18h11

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