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. #1
    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 Comment récupérer le nom d'une feuille sélectionnée par un clic gauche
    Bonjour,

    J'ai une macro qui ouvre un fichier excel qui contient des feuilles dont les noms me sont inconnus. Le but étant de sélectionner une des feuilles et de la copier dans un autre classeur.

    Ce que je ne sais pas faire:
    Lorsque le fichier Excel s'ouvre, la feuille active est la dernière qui était présentée à l'enregistrement. Comment sélectionner une autre feuille par un clic sur la souris?

    Une fois que je saurais ça, il me suffira de récupérer son nom avec activesheet.name, selectionner cette feuille et la copier dans le classeur.

    Si quelqu'un à la solution,...

    Merci d'avance

  2. #2
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    bonjour,

    ton probleme ne me parait pas complexe, en revance je ne comprend pas, pourquoi tu veu le récupéré au clic, alors que tu peut le faire sans cliquer avec Active.sheet().
    cela dit, quand tu effectue un clic, c'est une action, donc tu peut utiliser sa dans ton workbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
     
    End Sub
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
    End Sub

  3. #3
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je pense que ceci est encore plus pratique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     
    End Sub
    A+

  4. #4
    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
    Bonjour et merci pour la réponse.

    J'ai vu ce que tu proposes également sur le web mais je ne sais pas comment intégrer ce type de sub dans mon 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    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"
    End If
    
    'Copier l'onglet dans le fichier Excel
    MsgBox "Sélectionner l'onglet AMDEC"
    
    ' c'est ici que je veux pouvoir sélectionner mon onglet dans le but de le copier dans mon classeur
    
    
    
    'Fermer le répertoire et le fichier
    
     Workbooks(NomFichierAMDEC).Close savechanges:=False
    [/QUOTE]

  5. #5
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Bonjour,

    Je pense que ceci est encore plus pratique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     
    End Sub
    A+
    ne confond pas ta droite et ta gauche xD, la demande était sur un clic gauche

  6. #6
    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
    Mais comment j'utilise ce private sub dans mon code?

  7. #7
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    double clic sur ton workbook dans vba
    et ensuite tu met sa et a l'interieur tu met ton code

  8. #8
    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
    Je me demande s'il n'y a pas une confusion.

    Je ne souhaite pas lancer une macro par un évènement clic sur le bouton de la souris. Ce que je souhaite, c'est pouvoir "naviguer" dans le fichier excel qui a été ouvert et de récupérer le nom de l'onglet que j'aurais sélectionné.

    Pour le moment, quand j'ouvre le fichier, il se lance en affichant l'onglet affiché au dernier enregistrement. Vu que je ne connais pas forcément le nom de l'onglet que je veux sélectionner, j'opte pour récupérer son nom en cliquant dessus. Et c'est ça que je n'arrive pas à faire.

    Si je connaissais son nom, je n'aurais pas de soucis, je ferais tout de suite activesheet(NomOnglet)

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 931
    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 : 12 931
    Points : 28 926
    Points
    28 926
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce que je ne comprends pas c'est que dans ta procédure, tu affiche un message "Sélectionner l'onglet AMDEC" et ensuite tu voudrais copier cette feuille.
    Il est tout à fait possible de copier une feuille sans la sélectionner.

  10. #10
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    quand tu clic sur l'onglet tu effectu un evenement donc autan en profiter

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 931
    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 : 12 931
    Points : 28 926
    Points
    28 926
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    quand tu clic sur l'onglet tu effectu un evenement donc autan en profiter
    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.

  12. #12
    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
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Ce que je ne comprends pas c'est que dans ta procédure, tu affiche un message "Sélectionner l'onglet AMDEC" et ensuite tu voudrais copier cette feuille.
    Il est tout à fait possible de copier une feuille sans la sélectionner.
    Oui mais je ne sais pas quel nom portera cet onglet dans différents fichiers. Il pourrait s'appeler AMDEC, comme FMECA, comme APR, comme Analyse des défaillances, ....

    C'est pour cela que je veux récupérer ce nom

  13. #13
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    connaitrai tu le nom du fichier, ou se trouve ces onglet ?

  14. #14
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 931
    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 : 12 931
    Points : 28 926
    Points
    28 926
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    connaitrai tu le nom du fichier, ou se trouve ces onglet ?
    C'est dans la procédure (ligne 16)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        NomFichierAMDEC = ActiveWorkbook.Name  'Retourne "nomfichier.xls"

  15. #15
    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
    Citation Envoyé par pasdechances Voir le message
    connaitrai tu le nom du fichier, ou se trouve ces onglet ?
    Je connais le nom du fichier via le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PathFichierAMDEC = Application.GetOpenFilename("Fichiers Excel (*.*), *.*")
    If PathFichierAMDEC <> "" Then
        Application.Workbooks.Open (PathFichierAMDEC)
        NomFichierAMDEC = ActiveWorkbook.Name  'Retourne "nomfichier.xls"
    End If
    Mais comme je l'ai dit avant, le nom de l'onglet que je dois utiliser, je ne le connais pas

  16. #16
    Membre averti Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Points : 403
    Points
    403
    Par défaut
    bon bah on peut faire sa alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim Wb as workbook
    dim ws as worksheet
    Wb = ActiveWorkbook
    For Each Ws In wb.Worksheets 
        'Renvoie le nom de chaque feuille 
        MsgBox Ws.Name 
    Next Ws

  17. #17
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 931
    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 : 12 931
    Points : 28 926
    Points
    28 926
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Oui mais je ne sais pas quel nom portera cet onglet dans différents fichiers. Il pourrait s'appeler AMDEC, comme FMECA, comme APR, comme Analyse des défaillances, ....
    Voici une proposition. Tu crées un UserForm avec un contrôle ListBox ou ComboBox et tu écris ces lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub UserForm_Initialize()
     Dim sh As Worksheet
     For Each sh In ActiveWorkbook.Worksheets
      Me.ListBox1.AddItem sh.Name
     Next
    End Sub
    La liste affichera toutes les feuilles de calcul du classeur actif et en cliquant sur le nom de la feuille, tu récupères son nom avec l'événement ListBox1_Click

    Code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ListBox1_Click()
     MsgBox "Vous allez copier la feuille " & Me.ListBox1.Value & " du classeur " & ActiveWorkbook.Name
    End Sub
    [EDIT]
    Tu lances le UserForm juste après la sélection du classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ufSheetSelection.Show ' Lance le formulaire

  18. #18
    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
    Merci pour ton apport. Je creuse cette piste qui me semble pas trop mal (je pensais juste qu'il était possible de le faire de façon plus automatique par sélection de l'onglet)

    Je vous fais suivre le résultat

  19. #19
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 931
    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 : 12 931
    Points : 28 926
    Points
    28 926
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le code pour la procédure événementielle ListBox1_Click
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ListBox1_Click()
     If Me.ListBox1 <> -1 Then CopySheet ActiveWorkbook.Sheets(Me.ListBox1.Value)
     Unload Me
    End Sub
    et dans un module standard, cette procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub CopySheet(sh As Worksheet)
     sh.Copy before:=ThisWorkbook.Sheets(1)
    End Sub

  20. #20
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour

    Copier la feuille sélectionnée (Application.InputBox)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set destSh = ThisWorkbook.ActiveSheet
    PathFichierAMDEC = Application.GetOpenFilename("Fichiers Excel (*.*), *.*")
    If PathFichierAMDEC <> "" Then
        Application.Workbooks.Open (PathFichierAMDEC)
        Set myRange = Application.InputBox(prompt:="Clic sur cellule", Type:=8)
    'Pour copier la feuille dans une nouvelle feuille
        myRange.Parent.Copy After:=destSh
    End If

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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, 13h20
  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, 11h33
  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, 14h38
  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, 21h11
  5. Réponses: 4
    Dernier message: 09/11/2005, 17h11

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