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 :

Affichage d'une feuille selon ListBox [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut Affichage d'une feuille selon ListBox
    Bonjour à tous,

    Dans un formulaire j'ai une ListBox (L1) qui peut contenir soit "Primaire" soit "Maternelle".

    A partir de ce qui est affiché la feuille ("ResMat") ou la feuille ("ResEp") doit s'afficher.

    Je ne sais pas comment procéder. Pouvez-vous m'apporter votre aide s'il vous plait ?
    Merci par avance

    J'ai pensé à quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If L1.List="Primaire" then
    Sheets("ResEp").activate
    etc...
    Idem pour l'autre feuille. Cela vous paraît-il bien ?

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,

    ben, à mon avis, faut essayer !!

    mets ton code dans l'évènement click de ta listbox et essayes le

    Bonne journée

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Points : 723
    Points
    723
    Par défaut
    Salut,

    C'est en effet dans ce goût là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If ListBox1.ListIndex = 0 Then '1ère ligne sélectionnée
        Sheets("ResEp").activate
    Else '2ème ligne sélectionnée
        Sheets("ResMat").activate
    End if
    Inverse si tes données sont dans l'autre sens dans ta ListBox.

    Je te conseille http://silkyroad.developpez.com/VBA/ControlesUserForm

    Y'a pas mieux pour les UserForms : tu feras TOUT avec.

    A+

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Voici mon code, mais c'est toujours la feuille ("ResMat") qui est activée

    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
     
     
    If UFsais.Ch1.Value = True Then 'si la CheckBox Ch1 est activée alors...
    If L1.ListIndex = "Primaire" Then '1ère ligne sélectionnée
        Sheets("ResEp").Activate
    Else '2ème ligne sélectionnée
        Sheets("ResMat").Activate
    End If
    With ActiveSheet
    [G39].Value = "X"
        [I2].Value = CDate(UFsais.T1)
        [D18].Value = UFsais.C1.Value
        [D20].Value = UFsais.L2.List
        [K18].Value = UFsais.L4.List
        [E22].Value = UFsais.L3.List
        [F25].Value = CDate(UFsais.T3)
        [F27].Value = UFsais.T6.Value
        [F31].Value = UFsais.T2.Value
        [F33].Value = UFsais.T8.Value
        [F35].Value = UFsais.T7.Value
        [F37].Value = UFsais.T5.Value
    ActiveSheet.Visible = True
    End With
    Unload Me
    End If

  5. #5
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Points : 49
    Points
    49
    Par défaut
    bonjour, voila ma participation ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L1.list(L1.listindex)="primaire" then sheets("resep").select else sheets("resmat").select
    mais s'il n'y a que 2 valeur dans ta listbox et que celle ci est utilisé pour faire un choix alors tu devrai peut etre utiliser un combobox non ?

  6. #6
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour les amis le forum pas sur d'avoir tout compris brute 2 possibilitees
    exemple 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub L1_Click()
    If L1 = "Primaire" And Ch1 = True Then Sheets("ResEp").Activate Else Sheets("ResMat").Activate
    End Sub
    que fait tu si Ch1 = false????????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub L1_Click()
    If L1 = "Primaire" And Ch1 = True Then Sheets("ResEp").Activate
    If L1 = "Maternelle" And Ch1 = True Then Sheets("ResMat").Activate
    End Sub

  7. #7
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    merci garion, ce n'est simplement qu'une ListBox, l'élément y figurant provient du choix fait dans une Combo.
    Il n'y a que 2 éléments possible dans cette List selon l'école choisie, c'est soit Maternelle soit Primaire.
    Je teste ton code

    Bonjour laetitia,

    L'événement ne se déclanche pas sur un click de L1, mais sur un bouton de validation Cmb1.

    Si Ch1 est à false, il ne se passe rien car les feuilles n'ont pas besoin d'être affichée.

    Ch1 est cliqué si un bus doit être réservé, les feuilles "ResMat et ResEp" sont des demandes de réservation, une pour les maternelles l'autre pour les primaires.

  8. #8
    Membre du Club
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Points : 49
    Points
    49
    Par défaut
    en faite tu choisi une école dans un combobox et ca insere dans la listbox primaire et maternelle ?
    ce qui veut dire que ca di ce que contient l'école choisi, c'est bien ca ? alors un combobox peut très bien remplacer ta listbox ^^
    mais bon vu qu'au niveau du nombre de ligne ca revien au même, c'est kiff kiff

  9. #9
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re le bouton Cmb1 est dans l'user!!
    tu mets le code dans cmb1 non??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Cmb1_Click()
    If L1 = "Primaire" And Ch1 = True Then Sheets("ResEp").Activate
    If L1 = "Maternelle" And Ch1 = True Then Sheets("ResMat").Activate
    End Sub

  10. #10
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Oui, le bouton est dans l'User et c'est lui qui déclenche le code.

    Voici ce que j'ai fait, mais les feuilles ne s'affichent 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
     
    If L1 = "Primaire" And Ch1 = True Then
    Sheets("ResEp").Activate
    Sheets("ResEp").Visible = True
    With ActiveSheet
    [G39].Value = "X"
        [I2].Value = CDate(UFsais.T1)
        [D18].Value = UFsais.C1.Value
        [D20].Value = UFsais.L2.List
        [K18].Value = UFsais.L4.List
        [E22].Value = UFsais.L3.List
        [F25].Value = CDate(UFsais.T3)
        [F27].Value = UFsais.T6.Value
        [F31].Value = UFsais.T2.Value
        [F33].Value = UFsais.T8.Value
        [F35].Value = UFsais.T7.Value
        [F37].Value = UFsais.T5.Value
    End With
    End If
    If L1 = "Maternelle" And Ch1 = True Then
    Sheets("ResMat").Activate
    Sheets("ResMat").Visible = True
    With ActiveSheet
    [G39].Value = "X"
        [I2].Value = CDate(UFsais.T1)
        [D18].Value = UFsais.C1.Value
        [D20].Value = UFsais.L2.List
        [K18].Value = UFsais.L4.List
        [E22].Value = UFsais.L3.List
        [F25].Value = CDate(UFsais.T3)
        [F27].Value = UFsais.T6.Value
        [F31].Value = UFsais.T2.Value
        [F33].Value = UFsais.T8.Value
        [F35].Value = UFsais.T7.Value
        [F37].Value = UFsais.T5.Value
    End With
    End If
    Unload Me
    End Sub

  11. #11
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re , est simplement comme cela!!
    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 Cmb1_Click()
    If L1 = "Primaire" And Ch1 = True Then Sheets("ResEp").Activate
    If L1 = "Maternelle" And Ch1 = True Then Sheets("ResMat").Activate
    With ActiveSheet
    [G39].Value = "X"
        [I2].Value = CDate(UFsais.T1)
        [D18].Value = UFsais.C1.Value
        [D20].Value = UFsais.L2.List
        [K18].Value = UFsais.L4.List
        [E22].Value = UFsais.L3.List
        [F25].Value = CDate(UFsais.T3)
        [F27].Value = UFsais.T6.Value
        [F31].Value = UFsais.T2.Value
        [F33].Value = UFsais.T8.Value
        [F35].Value = UFsais.T7.Value
        [F37].Value = UFsais.T5.Value
    End With
    End Sub

  12. #12
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    re, le problème est qu'il y a déjà une feuille active et c'est elle qui se remplie non pas la feuille ("Res..").
    C'est de ma faute j'aurai du le préciser. Il faut donc que cette feuille reste visible mais non active et que ce soit une des feuilles ("Res..") qui soit active.

    Voici le code complet à partir du bouton Cmb1

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    Private Sub Cmb1_Click()
    Dim erreur(2) As Boolean, msg As String, I As Byte
    Dim Tablo As Variant
        Tablo = Array("", "Lieu ?", "Date ?")
        erreur(1) = UFsais.T3.Value = ""
        erreur(2) = UFsais.T2.Value = ""
        For I = 1 To 2
            If erreur(I) Then msg = msg & vbCrLf & "-" & " " & Tablo(I)
        Next
        If msg <> "" Then
            MsgBox "Vous avez oublié" & msg, 0, "A vérifier"
        Exit Sub
     End If
    ActiveSheet.Activate
    If Range("A6") = "" Then
        Range("A6").Select
    Else
        Range("A5").End(xlDown).Select
        ActiveCell.Offset(1, 0).Range("a1").Select
    End If
    ActiveCell.Value = CDate(T1)
    If UFsais.Ch2.Value = True Then
        ActiveCell.Offset(0, 1).Value = CDate(UFsais.T3)
            ActiveCell.Offset(0, 2).Value = UFsais.T20.Value
            ActiveCell.Offset(0, 3).Value = UFsais.T2.Value
        End If
    If UFsais.Ch1.Value = True Then
    ActiveCell.Offset(0, 5).Value = CDate(UFsais.T3)
    ActiveCell.Offset(0, 6).Value = UFsais.T2.Value
    ActiveCell.Offset(0, 14).Value = UFsais.T4.Value
    ActiveCell.Offset(0, 15).Value = UFsais.T19.Value
    ActiveCell.Offset(0, 16).Value = UFsais.T5.Value
    End If
    If UFsais.Ch9.Value = True Then
    ActiveCell.Offset(0, 17).Value = "X"
    End If
    If UFsais.Ch7.Value = True Then
    ActiveCell.Offset(0, 8).Value = "X"
    End If
    If UFsais.Ch8.Value = True Then
    ActiveCell.Offset(0, 9).Value = "X"
    End If
    If UFsais.Ch6.Value = True Then
    ActiveCell.Offset(0, 10).Value = "X"
    End If
    If UFsais.Ch4.Value = True Then
    ActiveCell.Offset(0, 11).Value = "X"
    End If
    If UFsais.Ch5.Value = True Then
    ActiveCell.Offset(0, 12).Value = "X"
    End If
    If L1 = "Primaire" And Ch1 = True Then Sheets("ResEp").Activate
    If L1 = "Maternelle" And Ch1 = True Then Sheets("ResMat").Activate
    With ActiveSheet
    [G39].Value = "X"
        [I2].Value = CDate(UFsais.T1)
        [D18].Value = UFsais.C1.Value
        [D20].Value = UFsais.L2.List
        [K18].Value = UFsais.L4.List
        [E22].Value = UFsais.L3.List
        [F25].Value = CDate(UFsais.T3)
        [F27].Value = UFsais.T6.Value
        [F31].Value = UFsais.T2.Value
        [F33].Value = UFsais.T8.Value
        [F35].Value = UFsais.T7.Value
        [F37].Value = UFsais.T5.Value
    End With
    Unload Me
    End Sub
    Citation Envoyé par garion28 Voir le message
    en faite tu choisi une école dans un combobox et ca insere dans la listbox primaire et maternelle ?
    ce qui veut dire que ca di ce que contient l'école choisi, c'est bien ca ? alors un combobox peut très bien remplacer ta listbox ^^
    mais bon vu qu'au niveau du nombre de ligne ca revien au même, c'est kiff kiff
    Ma liste contient soit Primaire soit Maternelle, jamais les deux en même temps.
    L'affichage dépend de l'école choisie dans la Combo

  13. #13
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re comme le dit garion28 une combox serait suffisante ou mieux une textbox
    cela serait plus simple autremenent essai comme cela si j ai compris

    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
    Private Sub Cmb1_Click()
    Dim x As String
    L1.ListIndex = 0
    If L1 = "Primaire" And Ch1 = True Then x = "ResEp"
    If L1 = "Maternelle" And Ch1 = True Then x = "ResMat"
    If Ch1 = False Then Exit Sub
    With Sheets(x)
    .[G39].Value = "X"
        .[I2].Value = CDate(UFsais.T1)
        .[D18].Value = UFsais.C1.Value
        .[D20].Value = UFsais.L2.List
        .[K18].Value = UFsais.L4.List
        .[E22].Value = UFsais.L3.List
       .[F25].Value = CDate(UFsais.T3)
       .[F27].Value = UFsais.T6.Value
        .[F31].Value = UFsais.T2.Value
        .[F33].Value = UFsais.T8.Value
        .[F35].Value = UFsais.T7.Value
        .[F37].Value = UFsais.T5.Value
    End With
    Unload Me
    ps re modifier je reste sur 2 lignes de condition + gestion si ch1=false

    exit sub ou unload me

  14. #14
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour laetitia,

    J'ai mis ton code en place. Les feuilles se remplissent bien des éléments saisis, mais elles ne s'affichent pas, elles ne sont pas visibles. Elles ne sont pas visibles au moment de la saisie.
    La ListBox n'est pas accessible par l'utilisateur, le contenu est modifié selon le choix fait dans la Combo.
    J'ai essayé avec
    .Activate
    .Visible
    .Select
    Mais sans effet. Je vais approfondir la question. Je ne comprends pas ????

  15. #15
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    C'est bon j'y suis arrivé. J'avais tout simplement oublié de mettre =True derrière .Visible, quel c...

    Voici donc le code corrigé :
    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
     
    L1.ListIndex = 0
    If L1 = "Primaire" And Ch1 = True Then x = "ResEp"
    If L1 = "Maternelle" And Ch1 = True Then x = "ResMat"
    If Ch1 = False Then Exit Sub
    With Sheets(x)
    .Visible = True
        .[G39].Value = "X"
        .[I2].Value = CDate(UFsais.T1)
        .[D18].Value = UFsais.C1.Value
        .[D20].Value = UFsais.L2.List
        .[K18].Value = UFsais.L4.List
        .[E22].Value = UFsais.L3.List
        .[F25].Value = CDate(UFsais.T3)
        .[F27].Value = UFsais.T6.Value
        .[F31].Value = UFsais.T2.Value
        .[F33].Value = UFsais.T8.Value
        .[F35].Value = UFsais.T7.Value
        .[F37].Value = UFsais.T5.Value
    End With
    Unload Me
    Merci laetitia et à tous les autres pour leur précieuse aide.

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

Discussions similaires

  1. affichage d'une feuille avec décalage
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/08/2007, 13h27
  2. Affichage d'une Form selon l'option sélectionnée
    Par roura dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 04/08/2007, 16h21
  3. [VBA E] affichage d une feuille a partir d un userform
    Par patbou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/03/2007, 21h55
  4. Affichage d'une feuille fille
    Par rphenix dans le forum WinDev
    Réponses: 5
    Dernier message: 16/01/2007, 15h41
  5. [VB6]affichage d'une feuille modale / message d'erreur 400
    Par getea85 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/01/2006, 18h37

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