Pb listbox

o-sixty-o -  
Polux31 Messages postés 7219 Statut Membre -
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. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    0
  2. o-sixty-o
     
    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
    0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Avec cette procédure ta sélection peut être presque infinie ...

    ;o)

    Polux
    0
  4. o-sixty-o
     
    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 !$
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    0
  7. o-sixty-o
     
    Merci beaucoup , une fois de plus !
    0
  8. o-sixty-o
     
    Merci beaucoup , une fois de plus !
    0
  9. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Content pour toi si ça marche :o)

    bon courage pour la suite

    ;o)

    Polux
    0
  10. o-sixty-o Messages postés 25 Statut Membre
     
    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
    0
  11. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    0
  12. o-sixty-o Messages postés 25 Statut Membre
     
    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
    0
  13. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    0
  14. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    0
    1. o-sixty-o Messages postés 25 Statut Membre
       
      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


      0
  15. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    0
  16. o-sixty-o Messages postés 25 Statut Membre
     
    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 !
    0
  17. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
    0
  18. o-sixty-o Messages postés 25 Statut Membre
     
    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 :)
    0
  19. Polux31 Messages postés 7219 Statut Membre 1 204
     
    rhooooo ... c'est pas pro ça ....

    mais si ça marche ...

    ;o)

    polux
    0