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 :

Sélection d'une feuille excel avec une listbox


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Sélection d'une feuille excel avec une listbox
    Bonjour à tous,
    je suis une très grande débutant en VB et je dois réaliser pour le boulot une petite application. Et dans cette application, j'ai créé une listbox et je voudrais qu'en double-cliquant sur une des lignes de la listbox soit sélectionné une feuille d'un fichier Excel déjà ouvert.
    Voici ce que j'ai réalisé (et qui ne marche 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    'Création de la listBox
    Private Sub UserForm_Initialize()
    ListBox1.Clear
    ListBox1.AddItem "Janvier"
    ListBox1.AddItem "Février"
    ListBox1.AddItem "Mars"
    ListBox1.AddItem "Avril"
    ListBox1.AddItem "Mai"
    End Sub
     
    'Action du double click : Récupération du numéro d'index de la listbox et ouverture du programme de selection de la feuille 
    Sub ListBox1_DoubleClick()
    Dim N As Integer
    N = ListBox1.SelectedIndex
    Windows("Fichier.xls").Activate
    Call Selectionfeuille
    End Sub
     
    'Programme de selection de la feuille
    Sub Selectionfeuille()
    Dim N As Integer
         If N = 0 Then
            Sheets("Janvier").Selected
            ActiveWindow.SelectedSheets
    End If
        If N = 1 Then
            Sheets("Février").Selected
            ActiveWindow.SelectedSheets
    End If
        If N = 2 Then
            Sheets("Mars").Selected
    End If
        If N = 3 Then
            Sheets("Avril").Selected
    End If
        If N = 4 Then
            Sheets("Mai").Selected
    End If
     End Sub

    Pourriez vous me dire pourquoi ça ne fonctionne pas et comment puis-je corriger cela. Merci d'avances!
    Attention n'oubliez pas je suis une novice, ne soyez pas trop techniques dans vos réponses!


    Merci mille fois!

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    ca ne marche pas car tu ne passes pas le paramètre N

    De plus, c'est Select qu'il faut utiliser pas selected.

    Donc plutôt
    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 ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim N As Integer
     
    N = Me.ListBox1.ListIndex
    Application.Workbooks("fichier.xls").Activate
    Call Selectionfeuille(N)
    End Sub
     
    Sub Selectionfeuille(ByVal N As Integer)
        Select Case N
            Case 0
                ActiveWorkbook.Worksheets("feuil1").Select
            Case 1
                ActiveWorkbook.Worksheets("feuil2").Select
            Case 2
                ActiveWorkbook.Worksheets("feuil3").Select
        End Select
    End Sub

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut merci
    Je vous remercie beaucoup ça marche!
    bonne journée!

  4. #4
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par bidou Voir le message
    ca ne marche pas car tu ne passes pas le paramètre N

    De plus, c'est Select qu'il faut utiliser pas selected.

    Donc plutôt
    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 ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim N As Integer
     
    N = Me.ListBox1.ListIndex
    Application.Workbooks("fichier.xls").Activate
    Call Selectionfeuille(N)
    End Sub
     
    Sub Selectionfeuille(ByVal N As Integer)
        Select Case N
            Case 0
                ActiveWorkbook.Worksheets("feuil1").Select
            Case 1
                ActiveWorkbook.Worksheets("feuil2").Select
            Case 2
                ActiveWorkbook.Worksheets("feuil3").Select
        End Select
    End Sub
    Bonsoir membres du forum,
    Je voudrais adapter ce code à ma recherche mais voici comment il s'affiche dans le module privé:

    Nom : USERFORM 28.PNG
Affichages : 235
Taille : 38,2 Ko
    Nom : USERFORM 27.PNG
Affichages : 229
Taille : 15,3 Ko

    J'aimerais savoir pourquoi ?
    Ensuite la présentation de cette ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Cordialement.
    Fichiers attachés Fichiers attachés
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

  5. #5
    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 764
    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 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Vous vous compliquez la vie inutilement.
    Ce n'est pas la première fois que je vous le signale mais sans un apprentissage minimum et sérieux du VBA, vous allez droit dans le mur.
    Je trouve étonnant qu'un enseignant, si je me réfère à votre profil, continue à progresser de la sorte sans un minimum de lecture de tutoriels.

    Cette seule ligne placée dans la procédure événementielle Click du contrôle ListBox nommé lst_Sheet est suffisante pour sélectionner la feuille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub lst_Sheet_Click()
      Sheets(Me.lst_Sheet.ListIndex + 1).Select
    End Sub
    Explication
    Tout objet de même nature fait partie d'une collection donc l'objet Sheet fait partie de la collection Sheets. L'élément d'une collection est invoqué soit par son n° d'indice, soit par son nom.
    Pour la collection Sheets et Worksheets l'indice 1 est la première feuille à gauche.
    La propriété ListIndex d'un objet ListBox renvoie le n° de la ligne sélectionnée, le premier élément commençant à 0 et en supposant que la feuille se trouvant tout en haut et la dernière tout en bas de la liste il suffit donc d'effectuer une simple addition de 1 par rapport à la valeur de ListIndex pour avoir le bon indice pour la feuille


    Illustration

    Nom : 220725 dvp ListIndex Sheet Select.png
Affichages : 223
Taille : 12,0 Ko

    Dans mon exemple, la liste du ListBox est alimentée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Activate()
      Me.lst_Sheet.List = GetSheetList
    End Sub
    Code de la procédure GetSheetList qui peut être placée dans un module Standard ou dans le module du UserForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function GetSheetList() As Variant
      ' Renvoie la liste des feuilles (objet Sheet)
      Dim tbl As Variant
      ReDim tbl(0 To Sheets.Count - 1)
      Dim s As Integer
      For s = 0 To Sheets.Count - 1
        tbl(s) = Sheets(s + 1).Name
      Next
      GetSheetList = tbl
    End Function
    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

  6. #6
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Bonsoir Professeur Philippe Tulliez,
    Vous m'avez les premières clefs, je ne suis qu'un apprenant.
    Désolé pour mon bricole. Permettez moi d'avancer petit à petit.
    Merci infiniment.
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

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

Discussions similaires

  1. reprise : Sélection d'une feuille excel avec une listbox
    Par philippe6 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/09/2013, 11h41
  2. [XL-2007] copier une feuille excel d'une instance excel à une autre
    Par marcelisa2 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2012, 23h44
  3. Réponses: 2
    Dernier message: 29/07/2010, 15h16
  4. Sélection des lignes de feuille Excel avec une listbox
    Par wlofab dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/07/2008, 15h35
  5. Réponses: 1
    Dernier message: 28/11/2007, 09h31

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