Pb listbox

Bonjour,

Bon vu que je n'ai pas eu de réponses à mon anciennne question je vais essayer de la reformuler plus clairement .

Sur vb g une feuille avec une list box et un bouton . J'aimerai lorsque je selectionne plusieurs valeurs de la list box et que j'appui sur le bouton , que ces valeurs s'affichent les unes en dessous des autres dans excel à partir de la case B6 !!
Pour le moment je n'arrive à afficher qu'une valeur même si j'en sélectionne plusieurs et ça m'ennerve !! svp aidez moi c urgent et ça me bloque pour la suite de mon travail!!

Merci..
Configuration: Windows XP
Internet Explorer 6.0

18 réponses

  1. ué c'est ce que j'ai essayé de faire..." call procedure x " ms bon ça marche pas ! tampis g recopié le code 5 fois :)
    1. Bonjour,

      Non je ne crois pas que l'on puisse faire un selection multiple sur plusieurs listbox en même temps ... mais on peut faire une procédure commune pour chaque listbox ...

      ;o)

      Polux
      1. C'est possible de sélectionner plusieurs listbox en même temps ? car j'ai un même code pour les 5 listbox et j'aimerai faire une procédure !
        1. re

          pour recopier la formule il faut faire :

          Worksheets("Feuil1").Rows(i).FillDown

          i étant le numéro de la ligne à recopier ...

          Pour le reste je ne sais pas :s

          Si tu peux, fais moi passer ton fichier par msn ce soir, je regarderai ...

          ;o)

          Polux
          1. re

            pffffff

            c'est simple ... j'avais la tête ailleur.

            Remplace :

            Worksheets("EstimChargeSSE-CTP").Range("C" & j).Value = Delete

            par :

            Worksheets("EstimChargeSSE-CTP").Range("C" & j).EntireRow.Delete

            voilà ... ça doit marcher

            ;o)

            Polux
            1. Oui, merci, enfaite moi aussi j'ai trouvé la solution 2 min après avoir posté le message lol . dsl

              Sinon, j'ai deux autres petits problèmes ( décidément, en viendrais-je à bout ?? lol )

              _lorsque je supprime des lignes et que je veus en rajouter cela engendre des problèmes ( selon le nombre de lignes que j'ai supprimer) sur des ordres que j'ai donné sur les lignes qui suivent !!! ( par exemple aux endroits ou ça devait rajouter des lignes ca ne le fait plus !)

              _ Ensuite J'ai sur certaines lignes des formules, et lorsque j'ajoute des nouvelles lignes forcément les formules n'apparaissent pas..comment les faires apparaître ??

              vOilou

          2. bonjour sixty,

            Remplace :

            Worksheets("EstimChargeSSE-CTP").Range("C" & j).Value = Delete

            par :

            Worksheets("EstimChargeSSE-CTP").Range("C" & j).Value = ""

            Mais là tu ne vas qu'effacer la valeur de la cellule.

            Je n'ai pas Excel sous la main là :s ... et je n'ai pas en tête la méthode ... mais je vais regarder comment sélectionner la ligne et la supprimer cet aprem ou ce soir et je te poste la solution ...

            ;o)

            polux
            1. bonjour !
              Merci polux pour ta fonction returnNbJour , elle m' a bien inspirée et j'ai réussi à faire ce que je souhaitai !

              Je rencontre un nouveau petit problème :$

              Toujours avc ma listbox et excel lol . Alors enfaite j'ai crée un bouton Supprimer . Et j'aimerai ,en selectionnant une valeur de ma listbox et en appuyant sur Supprimer , que ça recherche la valeur selectionné dans excel et si on la trouve ben ça supprime la ligne !!!

              Voila mon code, qui ne reconnait pas mon delete... :

              Private Sub cmdSupprimer_Click()
              Dim i As Integer
              Dim j As Integer
              Dim first As Integer
              Dim last As Integer
              j = 11

              With ListBox1
              For i = 0 To .ListCount - 1

              If .Selected(i) Then

              If Worksheets("EstimChargeSSE-CTP").Range("C" & j).Value = .List(i) Then
              Worksheets("EstimChargeSSE-CTP").Range("C" & j).Value = Delete

              End If
              End If
              Next
              End With
              End Sub
              1. bonjour,

                Pour faire ce que tu demandes je ferais une fonction avec comme paramètre d'entrée la valeur de ta listbox et en paramètre de retour le résultat issu d'un select case. Par exemple :

                Public Function ReturnNbJour(Byval str As Variant) As String
                     Select Case str
                        case "xxx"
                               ReturnNbJour = "5 jours"
                        case "xyyxx"
                               ReturnNbJour = "3 jours"
                ' etc ... pour chaque élément de ta listbox
                     End Select
                End function


                Ensuite dans le bouton CmdAjouter1_Click(), tu ajoutes :
                Worksheets("EstimChargeSSet").Range("G" & j).Value = ReturnNbJour(.List(i))

                Je pense que ça doit résoudre ton blème.

                ;o)

                polux
                1. Je rencontre à nouveau un problème...

                  J'ai donc une useform avec une listbox et un bouton. J'ai donc ds ma useform le code suivant :
                  ListBox1.AddItem "xxx"
                  ListBox1.AddItem "xyyxx"
                  ListBox1.AddItem "xyyyxx"
                  etc....

                  J'ai réussi à faire de sorte que quand je sélectionne un élément de ma listbox , cet élément s"affiche dans excel parfaitement ( c'était mes question précédentes ) . Mais maintenant j'aimerai attribuer des Valeurs à chaque éléments ! Par exemple dire pour le premier élément de la listbox qu'il vaut 5 jours , le second élément de la listbox vaut 3 jours etc.. Et lorsque je sélectionne un élément(ou plusieurs) , il va s'afficher comme d'habitude en B6 mais j'aimerai que s'ajoute sur la même ligne en g6 sa valeurs qui est de 5 jours !

                  Les jours ne doivent pas apparaître dans ma listebox mais seulement ds mon code et sur EXCEL !

                  EXEMPLE: j'ai attribué 5 jours à lélément 1 de ma listebox , 3jours à l'élément2, 4 jours à lément3, 10jours à lélément4.
                  Je séléctionne l'élément 1 et 3 de ma list box et appui sur OK.
                  Je veus obtenir comme résultat : en B6 : le nom du premier élément de la listbox et en G6 "5jours" . Et en C7 le nom du troisème élément de la list box avec en G7 son nombre de jours correspondant cad : "4jours"

                  Comment faire cela ??
                  Comment attribué une valeur à un élément de ma list box , sachant que c'est une séléction multiple !

                  Le code de mon bouton est celui ci pour l'instant (celui qui permet dafficher mes éléments sélectionner ):

                  Private Sub CmdAjouter1_Click()
                  Dim i As Integer
                  Dim j As Integer

                  j = firstlinetowrite

                  With ListBox1
                  For i = 0 To .ListCount - 1
                  If .Selected(i) Then
                  Do While Worksheets("EstimChargeSSet").Range("B" & j).Value <> ""
                  j = j + 1
                  Loop
                  If Not doesExist(.List(i)) Then
                  If j > addline Then
                  Worksheets("EstimChargeSSET").Cells(j, 1).EntireRow.Insert
                  End If
                  Worksheets("EstimChargeSSet").Range("B" & j).Value = "xxxx"
                  Worksheets("EstimChargeSSet").Range("C" & j).Value = .List(i)
                  j = j + 1
                  End If
                  End If
                  Next
                  End With
                  End Sub

                  HELP HELP
                  1. Bonjour,

                    SI tes cellules sont vides, avec le code que je t'ai donné ça suffit. Si le cellule B10 contient une valeur il faut effectivement insérer les lignes supplémentaires. Il faut faire ceci à la place de la procédure donnée précédemment.

                    Private Sub cmd_Click()
                    Dim i As Integer
                    Dim j As Integer
                    
                        j = 6
                    For i = 0 To List1.ListCount - 1
                        If j >= 9 Then
                            Worksheets("Feuil1").Rows(( j + 1) & ":" & (j + 1)).Select
                            Selection.Insert Shift:=xlDown
                       End If
                       If List1.Selected(i) Then
                           Worksheets("Feuil1").Range("B" & j).Value = Me.List1.List(i)
                            j = j + 1
                        End If
                    Next i
                    End Sub


                    J'ai pas testé mais ça devrait marcher

                    ;o)

                    Polux
                    1. Suite du problème...j'arrive pas à insérer des nouvelles lignes grrr ! J'aimerai que lorsqu'on atteint la cellule b9 ( donc si le nombre de valeur est supérieur à 3 ) ben on insère une ligne ! ( ex : donc si le nombre de valeurs choisis est 5 il y aura 2 lignes insérer en + )

                      Je sais c tout bète mais jtrouve vraiment pas :/

                      help !$
                      1. Avec cette procédure ta sélection peut être presque infinie ...

                        ;o)

                        Polux
                        1. merci beaucoup ça marche !!! Il me reste plus qu'à trouver comment ajouter des lignes si le nombre de valeurs selectionnées est supérieur à 3 ...vi je débute hein alors faut pas se moquer lol
                          1. bonjour

                            Inspires toi de ça :

                            Private Sub cmd_Click()
                            Dim i As Integer
                            Dim j As Integer
                            
                                j = 6
                            For i = 0 To List1.ListCount - 1
                                If List1.Selected(i) Then
                                    Worksheets("Feuil1").Range("B" & j).Value = Me.List1.List(i)
                                    j = j + 1
                                End If
                            Next i
                            End Sub
                            


                            ;o)

                            Polux