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 :

Concaténer choix ListBox : Select Case [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Par défaut Concaténer choix ListBox : Select Case
    Bonjour à tous et à toutes,

    J'essaie de créer une petite fonction qui puisse concaténer sur un format texte les choix réalisés dans une ListBox.
    Ça fonctionne pour n= 0 et n= 1, la fonction renvoie bien respectivement les string A & B et A & C.
    En revanche, pour n=3, elle renvoie A & C et non A & D.
    Auriez-vous une idée du plantage ?

    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
    Public Function ConcatenerList() As String
    Dim Txt As String
    Dim i As Integer
    Dim A, B, C, D As String
     
    A = "Texteeeeeee "
    B = "Texteeeeeeeeeeeee "
    C = "Texteeeeeeeeeeeeeeee, "
    D = "Texteeeeeeeeeee, "
     
    With UserForm1
     
        Select Case .ListBoxIADL.Selected(i)
            Case i = 0
                Txt = A & B
            Case i = 1
                Txt = A & C
            Case i = 2
                Txt = A & D
        End Select
     
    End With
     
    ConcatenerList = Txt
     
    End Function
    J'en profite pour une autre petite question :
    Le Select Case permet-il l'utilisation d'un opérateur du style AND ? Je n'ai rien trouvé sur ce sujet.
    Dans mon cas ça serait un truc du genre (qui bien sûr ne fonctionne pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select Case .ListBoxIADL.Selected(i)
         Case i = 0 AND i=1 AND i= 2
             Txt = A & B & C

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par florent77 Voir le message
    Bonjour,

    A tester :
    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
     
    Public Function ConcatenerList() As String
    Dim Txt As String
    Dim i As Integer, NbSelectionnes As Integer, Nb012 As Integer
    Dim A, B, C, D As String
     
        A = "A "
        B = "B "
        C = "C "
        D = "D "
        Txt = ""
        NbSelectionnes = 0
        Nb012 = 0
     
        With UserForm1
     
            With .ListBoxIADL
                 For i = 0 To .ListCount - 1
                     If .Selected(i) = True Then
                         NbSelectionnes = NbSelectionnes + 1
                        Select Case i
                               Case 0
                                    Txt = A & B
                                    Nb012 = Nb012 + 1
                               Case 1
                                    Txt = A & C
                                     Nb012 = Nb012 + 1
                               Case 2
                                    Txt = A & D
                                    Nb012 = Nb012 + 1
                               Case Else
                                    Txt = ""
                        End Select
                      End If
                Next i
                Select Case Nb012
                       Case 2
                            Txt = ""
                       Case 3
                            Txt = A & B & C & D
                End Select
     
                If NbSelectionnes > 3 Then Txt = ""
     
            End With
     
        End With
     
        ConcatenerList = Txt
     
    End Function
     
     
    Sub Test()
     
        With UserForm1
     
             With .ListBoxIADL
                 .List = Array("Cas 1", "Cas 2", "Cas 3", "Cas 4")
             End With
     
             .Show
     
        End With
     
    End Sub

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    re
    re
    bonjour
    ben c'est un pau normal que le 3° ne fonctionne pas
    ta listbox index 0,1,2
    .ListBoxIADL.Selected(i)renvoie true ou false 1 ou 0 forcement ca peut pas marcher
    maintenant peut etre que si tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select Case .ListBoxIADL.listindex
    
    case 0:text=A & b
    
    case 1:text=A & C
    
    case 2:text=A & D
    
    case else:text=""
    end select
    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

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Par défaut
    De retour après quelques jours d'absence...

    Bonjour à toutes et à tous,


    @ Eric : merci beaucoup pour ce code astucieux qui va bien me servir

    @ Patrick : je ne connaissais pas le listindex, bien pratique également, merci

    Je réitère l'une de mes questions :
    Existe-t-il une méthode dans le Select Case qui puisse agir comme le AND ?
    Dans l'exemple ci-dessous : je coche les cas 1, 5 et 6 et je les concatène

    Nom : Concat.jpg
Affichages : 321
Taille : 15,6 Ko

    Ça serait un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select Case ListBox.listindex
             Case 0 And 4 And 5 : Txt = Cas1 & Cas5 & Cas6 
    End Select

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par florent77 Voir le message
    Bonjour,

    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
     
    Sub Test()
     
        With UserForm1
     
             With .ListBoxIADL
                 .List = Array("Cas 1", "Cas 2", "Cas 3", "Cas 4", "Cas 5", "Cas 6")
             End With
     
             .Show
     
        End With
     
    End Sub
     
    Public Function ConcatenerList() As String
    Dim Txt As String
    Dim i As Integer, NbSelectionnes As Integer, Nb012 As Integer
     
        ConcatenerList = ""
        Txt = ""
        With UserForm1
     
            With .ListBoxIADL
                 For i = 0 To .ListCount - 1
                     If .Selected(i) = True Then Txt = Txt & .List(i)
                Next i
            End With
     
        End With
        ConcatenerList = Txt
     
    End Function
    Dans le Userform :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Private Sub CommandButton1_Click()
     
        Me.TextBox1 = ConcatenerList
        Debug.Print ConcatenerList
     
    End Sub

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Par défaut
    Bonjour le forum,

    Bonjour Eric et merci !! ça fonctionne désormais impeccable !

    J'ai juste rajouté :
    - un Array (les sélections renvoyant à des strings différentes des intitulés)
    - une constante "A, "


    Nom : listboxconcat.jpg
Affichages : 342
Taille : 26,9 Ko


    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
    Public Function ConcatenerList() As String
    Dim Txt As String
    Dim i As Integer
    Dim Listing As Variant
     
        Listing = Array("B, ", "C, ", "D, ", "E, ", "F, ", "G, ")
        ConcatenerList = ""
        Txt = "A, "
     
        With UserForm1
     
            With .ListBoxIADL
                 For i = 0 To .ListCount - 1
                     If .Selected(i) = True Then Txt = Txt & Listing(i)
                Next i
            End With
     
        End With
     
        ConcatenerList = Txt
     
    End Function

    Problème résolu sans le Select Case, merci encore à Eric et Patrick

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

Discussions similaires

  1. Utiliser un objet "wsExcel" ( worksheet) selon le choix d'un "Select Case"
    Par sossso112333 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 20/07/2015, 15h57
  2. Problème SELECT, CASE et Group by
    Par Royd938 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/10/2014, 07h41
  3. vérification de passage dans un select case
    Par arsgunner dans le forum ASP
    Réponses: 5
    Dernier message: 14/06/2004, 10h05
  4. Listbox selection multipe et colonnes
    Par Sylvain245 dans le forum IHM
    Réponses: 2
    Dernier message: 01/03/2004, 02h01
  5. Concaténation de 2 select en 1 seul
    Par Fleep dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/08/2003, 11h38

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