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 :

Afficher les feuilles du classeur dans ListBox3 qui correspond au texte de l'item sélectionner dans ListBox2 [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Points : 53
    Points
    53
    Par défaut Afficher les feuilles du classeur dans ListBox3 qui correspond au texte de l'item sélectionner dans ListBox2
    Bonjour à tous

    Objectif : quand je sélectionne 210V01 dans ListBox2, la ListBox3 affichera toute les feuilles du classeur (ThisWorkbook.Sheets) qui contient *210V01*

    Information :
    - Pour afficher l’Userform : feuilles: (BDD equipements) bouton Chercher ou ajouter équipement, Ecrire 210V01 dans TextBox2
    - A l’ouverture UserForm3 il y a ce code qui me permit de lister les feuilles dans la feuille (listing), qui fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub UserForm_Activate()
    Application.ScreenUpdating = False
     
    With Worksheets("listing").Range("E2:E60000")
           .ClearContents
    End With
     
    Dim i As Integer
    For i = 1 To Sheets.Count
    Worksheets("listing").Cells(1 + i, 5) = Sheets(i).Name
    Next i
     
    Application.ScreenUpdating = True 'Facultatif
    End Sub
    - Voici le code pour la recherche et alimenter la ListBox3, le résultat ne correspond pas à litem sélectionner dans la ListBox2 :

    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
    Private Sub ListBox2_Click()
     
    If ListBox2.ListIndex <> -1 Then
    CommandButton16.Enabled = True
     
    Dim Prem As String
    Dim c As Range
     
    With Me.ListBox3
        .Clear
        .ColumnCount = 2
        .BoundColumn = 2
        .ColumnWidths = "0;160"
    End With
     
    If Me.ListBox2 <> "" Then
        With Worksheets("listing").Range("E2:E65536")
            Set c = .Find(Me.ListBox2.ListIndex, LookIn:=xlValues, Lookat:=xlPart)
            If Not c Is Nothing Then
                Prem = c.Address
                Do
                    With Me.ListBox3
                        .AddItem c.Row
                        .List(.ListCount - 1, 1) = c.Offset(, 5 - c.Column)
                    End With
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> Prem
            End If
        End With
        '...
    End If
    End Sub
    Je vous remercie infiniment pour votre attention

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je ne comprend pas pourquoi tu stockes le nom de tes feuilles dans une feuille dédiée, pour ensuite jouer sur le ListIndex de ta listbox

    voici une proposition où on va utiliser dans chaque feuille la formule NB.SI pour compter le nombre d'occurences de l'item sélectionné

    si NB.SI = 0 alors la référence n'y figure pas.... sinon on ajoute le nom de la feuille dans ListBox3

    la recherche est pas exacte, il suffit que la cellule contienne la référence, grâce aux jokers "*" placés avant et après la référence

    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
    Private Sub ListBox2_Click()
    Dim Feuille As Worksheet
        With Me
            If .ListBox2.ListIndex <> -1 Then
                CommandButton16.Enabled = True
     
                With .ListBox3
                    .Clear
                    .ColumnCount = 1
                    .ColumnWidths = "160"
                End With
     
                If .ListBox2 <> "" Then
                    For Each Feuille In ThisWorkbook.Worksheets
                        If Application.WorksheetFunction.CountIf(Feuille.Cells, "*" & .ListBox2 & "*") > 0 Then .ListBox3.AddItem Feuille.Name
                    Next Feuille
                End If
            Else
                CommandButton16.Enabled = False
            End If
        End With
    End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    Merci joe.levrai tu as raison c'est mieux ainsi, mais comme tu ma dit la recherche nais pas exact par exemple je clique sur eee que j'ai ajouter dans le tableau BDD equipements et j'ai aussi ajouter une feuille nommée eee:
    la feuille ne s’affiche pas dans la ListBox3

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    de la meme manière qu'avec find
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If .ListBox2 <> "" Then
                    For Each Feuille In ThisWorkbook.Worksheets
                       If Not Feuille.Cells.Find(.ListBox2, lookat:=xlPart) Is Nothing Then .ListBox3.AddItem Feuille.Name
                      'If Application.WorksheetFunction.CountIf(Feuille.Cells, "*" & .ListBox2 & "*") > 0 Then .ListBox3.AddItem Feuille.Name
                    Next Feuille
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    merci patricktoulon, même résulta avec la Feuille 'Decennal eee', elle s’affiche pas, désoler mes amies je doit partir, J'espère que vous trouverez la solution ici demain, encore merci , ou bien on recherche la fin du texte si il correspond, encore merci et bonne continuation a demain.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    serait elle masquée par hasard cette feuille ???????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    Bonjour a tous,
    non elle n'est pas masquer,

    le résultat recherche même le mot dans les feuille!, l'objectif est de chercher le mot qui correspond au texte des onglets du classeur, merci encore.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    autant pour moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If .ListBox2 <> "" Then
      For Each Feuille In ThisWorkbook.Worksheets
        If feuille.name like "*" & .listbox2 & "*"  Then .ListBox3.AddItem Feuille.Name
      Next Feuille
    enf if
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    merci patricktoulon merci a tous, bonne journée sa marche parfaitement

  10. #10
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    le recherche n'est pas exacte et c'est normal, c'était ta demande initiale

    Citation Envoyé par nacereddine.mourad Voir le message
    Objectif : quand je sélectionne 210V01 dans ListBox2, la ListBox3 affichera toute les feuilles du classeur (ThisWorkbook.Sheets) qui contient *210V01*
    ainsi, j'avais expliqué comment était intégré cette approximation

    a recherche est pas exacte, il suffit que la cellule contienne la référence, grâce aux jokers "*" placés avant et après la référence
    il suffit donc de supprimer ces jokers dans la ligne 15 de ma proposition pour qu'elle devienne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.WorksheetFunction.CountIf(Feuille.Cells, .ListBox2) > 0 Then .ListBox3.AddItem Feuille.Name

    Et tu as ensuite précisé par la suite que c'était dans le nom des feuilles qu'il fallait faire la recherche, et pas dans la feuille elle-même.
    Donc ma proposition n'est pas adéquate, Patrick t'as donc apporté la bonne solution, puisqu'on a plus besoin de la formule NB.SI pour rechercher dans les feuilles


    Ainsi, tu vois qu'une explication très claire dès le premier message te permet d'obtenir la réponse appropriée immédiatement

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    merci joe.levrai
    je me suis mal exprimé, mais merci encore, j'aurai besoin de ce code aussi pour autre chose

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    salur joe
    Patrick t'as donc apporté la bonne solution, puisqu'on a plus besoin de la formule NB.SI pour rechercher dans les feuilles
    non seulement cela mais plus besoins du sheets listing aussi ]
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/07/2016, 14h05
  2. [XL-2007] Copier cellule dans les feuilles du classeur (noms feuilles variables)
    Par juju_ski dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/06/2015, 13h59
  3. Afficher les feuilles d'une arborescence dans une listbox
    Par bundesthor dans le forum Windows Presentation Foundation
    Réponses: 9
    Dernier message: 14/03/2013, 12h09
  4. Réponses: 1
    Dernier message: 11/10/2012, 19h31
  5. afficher la premiere colonne de toutes les feuilles du classeur
    Par abj8077 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/01/2011, 14h08

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