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..

18 réponses

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

;o)

Polux
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

bon courage pour la suite

;o)

Polux
0
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
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
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
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
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
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
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
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
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
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
Polux31 Messages postés 7219 Statut Membre 1 204
 
rhooooo ... c'est pas pro ça ....

mais si ça marche ...

;o)

polux
0