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 :

liste deroulante dans un userform [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut liste deroulante dans un userform
    Bonjour,

    Je dois reprendre un fichier excel que mon collegue à crée.
    Ce fichier comporte un userform avec un bouton de commande qui permet d'imprimer des CAB (codes à barres) associés à des villes.
    Ces CAB sont issu de la feuille "quai"
    Or, lorsqu'un agent veut , sur une ville précise, imprimer un CAB qui a été modifié au préalable, il doit malheureusement imprimer toutes la liste des CAB.
    On me demande de rajouter à cet userform, une liste deroulante qui permettrait de choisir la ville dont le CAB a été modifié et d'un imprimer seul ce CAB.
    La liste des villes se trouve dans la feuille "quai" et dans la colonne intitulée "provenance"

    Je n'aie jamais réaliser une liste déroulante dans un userform.
    Pourriez vous m'aidez ?
    Merci

    Voici le code vba du bouton de commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub AR2_Print_Click()
    With Sheets("Quai").PageSetup
        .Orientation = xlLandscape
    End With
     
    Sheets("Quai").PrintOut Copies:=1, Collate:=True
     
    End Sub

  2. #2
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    .....Ce fichier comporte un userform avec un bouton de commande qui permet d'imprimer des CAB (codes à barres) associés à des villes....
    Bonsoir,

    je vous joins un exemple sur une feuille quai avec qques villes et codes bidon :
    Nom : code.jpg
Affichages : 3169
Taille : 59,3 Ko

    Voici les codes pour le Userform :
    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
    Private Sub OK_Click()
    Dim ws As Worksheet
     
        Set ws = Worksheets("Quai")
     
        l = ComboBox1.ListIndex + 2
        ws.Range(ws.Cells(l, 1), ws.Cells(l, 2)).Select
        Selection.PrintOut Copies:=1, Collate:=True
        Unload UserForm1
    End Sub
     
    Private Sub Cancel_Click()
    Unload UserForm1
    End Sub
     
    Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Dim listville As Range
     
    Set ws = Worksheets("Quai")
    Set listville = ws.Range("A2:A" & CStr(ws.Range("A2").End(xlDown).Row))
    ComboBox1.RowSource = "Quai!A2:A" & CStr(ws.Range("A2").End(xlDown).Row)
    End Sub
    Il faut faire une procédure d'appel sur un bouton également (...uerform1.show...)

    A vous
    un essai : code.xlsm

    geogeo70

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Bonjour geogeo70
    Super ton code..merci
    Mais je m'apercois que j'ai quelques problème encore à resoudre..
    Pour une ville selectionnée, l'impression doit se faire sur toute une ligne et non pas sur une seule cellule : de la colonne A à la colonne I.
    Et pour compliquer la chose, peut on, lors d'une impression d'une ligne complète, imprimer également la ligne des titres qui se trouve en A1 jusqu'a I1..?

  5. #5
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    bonsoir,

    j'ai essayé d'imprimer une sélection disjointe mais les parties sont imprimées par page chez moi...
    je propose donc de réunir les deux plages (titres et données) puis de les copier dans une zone libre (ou dans une feuille à part) , de sélectionner la copie et d'imprimer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub OK_Click()
    Dim ws As Worksheet
    Dim a_imprimer As Range
        Set ws = Worksheets("Quai")
     
        l = ComboBox1.ListIndex + 2
        'J'ai adapté le code en fonction des colonnes demandées (I ou 9)
        Set a_imprimer = Union(ws.Range("A1:I1"), ws.Range(ws.Cells(l, 1), ws.Cells(l, 9))) 'union des deux plages
        a_imprimer.Copy Destination:=ws.Range("A20") 'copie en A20 mais il suffit de l'adapter par exemple dans une feuille à part : "feuil2!A1"
        ws.Range("A20:I21").Select
        Selection.PrintOut Copies:=1, Collate:=True
        Unload UserForm1
    End Sub

    A vous d'essayer ça fonctionne sur l'essai que je vous ai envoyé...

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Bonjour geogeo70 ,
    Avant tout merci de ton aide..j'avance à grand pas..
    Mais entre temps, il y a eu du changement..
    On m'a demandé si je pouvais afficher le code barre sur l'écran afin que les collaborateur flashent les code directement sur l'écran et non plus sur du papier.
    J'ai donc apporté quelques modifications à ton code( cf ci-dessous)

    Lorsque je selectionne une provenance, j'ai les 3 codes barres qui apparaissent (CAB arrivée, CAB Arrivée Quai et CAB depart).
    Et cà fonctionne trés bien.

    Actuellement cet Userform n'est pas figé sur une feuille précise. Lorsque je change de feuille, l'Userform s'affiche sur la feuille séléctionnée.
    je voudrais figé l'Userform sur une feuille Excel (intitulé "CAB").
    Comment puis je m'y prendre ?

    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
    Private Sub ComboBox1_Change()
    Dim ws As Worksheet
     
        Set ws = Worksheets("Global modifiable")
     
        l = ComboBox1.ListIndex + 2
        'ws.Range(ws.Cells(l, 1), ws.Cells(l, 9)).Select
        TextBox1.Text = Sheets("Global modifiable").Cells(l, 5)
        TextBox2.Text = Sheets("Global modifiable").Cells(l, 7)
        TextBox3.Text = Sheets("Global modifiable").Cells(l, 9)
        TextBox4.Text = Sheets("Global modifiable").Cells(l, 2)
        TextBox5.Text = Sheets("Global modifiable").Cells(l, 1)
    End Sub
     
     
     
     
     
    Private Sub OK_Click()
    Dim ws As Worksheet
     
        Set ws = Worksheets("Global modifiable")
     
     
    End Sub
     
    Private Sub Cancel_Click()
    Unload UserForm1
    End Sub
     
    Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Dim listville As Range
     
    Set ws = Worksheets("Global modifiable")
    Set listville = ws.Range("E2:E" & CStr(ws.Range("E2").End(xlDown).Row))
    ComboBox1.RowSource = "Quai!E2:E" & CStr(ws.Range("E2").End(xlDown).Row)
    End Sub

  7. #7
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    hello,

    Pour que le formulaire s'affiche sur la page CAB il suffit de sélectionner la page CAB avant d'afficher le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Sheets("Cab").Select
     UserForm1.Show
    On pourrait lancer la recherche depuis une page menu et afficher "CAB" puis en sortie afficher la page menu...
    J'ai un peu changé ton code, en particulier une ligne qui ne servait pas(que j'avais laissée lors de mes essais). Il vaut mieux utiliser With ... end With si on utilise souvent un objet. Le bouton OK ne sert plus dans ce cas... J'ai modifié mon essai avec ton code je te le joins.
    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
    Private Sub ComboBox1_Change()
    Dim ws As Worksheet
     
    Set ws = Worksheets("Global_modifiable")
    With ws
        l = ComboBox1.ListIndex + 2
        TextBox1.Text = .Cells(l, 5)
        TextBox2.Text = .Cells(l, 7)
        TextBox3.Text = .Cells(l, 9)
        TextBox4.Text = .Cells(l, 2)
        TextBox5.Text = .Cells(l, 1)
    End With
    End Sub
    Private Sub Cancel_Click()
    Unload UserForm1
    End Sub
     
    Private Sub UserForm_Initialize()
    Dim ws As Worksheet
     
    Set ws = Worksheets("Global_modifiable")
    ComboBox1.RowSource = ws.Name & "!E2:E" & CStr(ws.Range("E2").End(xlDown).Row)
    End Sub
    le fichier :code.xlsm

    a++

    geogeo70

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

Discussions similaires

  1. Rafraichir une liste deroulante dans un formulaire
    Par hellosct1 dans le forum IHM
    Réponses: 2
    Dernier message: 09/01/2007, 20h36
  2. Liste deroulante dans formulaire
    Par Levon dans le forum Access
    Réponses: 3
    Dernier message: 22/11/2006, 13h06
  3. Liste Deroulante dans "Oracle developper suite-10g"
    Par guyfab dans le forum Oracle
    Réponses: 6
    Dernier message: 15/09/2006, 18h32
  4. Réponses: 1
    Dernier message: 11/09/2006, 10h14
  5. Réponses: 5
    Dernier message: 25/10/2005, 20h51

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