USF ET LISTBOX

  • Initiateur de la discussion MALLORY
  • Date de début
M

MALLORY

Guest
Bonjour le forum !

Voila, je suis toujour débutant en VBA et j'ai une petite question a propos des usf.

Voilà, j'ai crée un USF de saisie par rapport a une feuille de calcul excel.
Jusque là pas de problemes.
J'arrive a prendre des valeurs dans la feuille pour les mettre dans mon USF et inversement a mettre dans ma feuille les valeurs de mon USF.
Jusque là pas de soucis encore

Mais voilà, ma feuille comportes certaines cellules avec des listbox et je souhaiterais savoir si en mettant une listbox dans mon USF avec les même donnée que dans la listbox de ma feuille, la donné choisie dans ma listbox de mon USF pourra etre "coller" dans la cellule ou se trouve la listebox de ma feuille ?

Pardon pour ma question mais j'arrive pas à etre plus clair! J'espere que vous etes plus intelligent que moi car moi rien que la question me fait mal a la tête!

Merci a tous pour votre aide !

Mallory
 
T

Titi de Monac (lol)

Guest
Bonjour Mallory

J'ai mal à la tête !! lol

Bon si j'ai compris tu veux synchroniser la sélection faite depuis une ListBox1 dans un UserForm vers une ListBox1 sur une Feuille ?

Alors je propose ceci dans un classeur vierge en ayant pris soin de dessiner une ListBox1 (ActiveX de la barre d'outils Contrôles) sur la feuille active, puis aussi une ListBox1 dans un UserForm et de mettre ce code dans le Private Module du UserForm...

Option Explicit

Private Sub UserForm_Initialize()
Dim i As Byte

For i = 1 To 10
Me.ListBox1.AddItem "Toto" & i
ActiveSheet.ListBox1.AddItem "Toto" & i
Next
End Sub

Private Sub ListBox1_Click()
ActiveSheet.ListBox1.ListIndex = Me.ListBox1.ListIndex
End Sub

Est-ce ça ?
Bon Aprèm
@+Thierry
 
M

MALLORY

Guest
Bonjour le forum!

Merci a toi titi !

Mais c'est la même chose si j'ai déjà une feuille de calcul existante avec une Lisbox existante dans cette feuille?

Au fait, titi, désolé de ne pas avoir répondu hier mais j'ai été débordé par le boulot et n'ai pu me consacré ni à mon USF ni à ton message !

Mallory
 
@

@+Thierry

Guest
Bonjour Mallory, le Forum

Ce n'est pas important que tu aies déjà ta ListBox sur la Feuille, ce qui l'est par contre c'est que ce soit bien une ListBox ActiveX.

Ensuite pour l'intégrité de ton truc, il faut qu'il y ait le même nombre d'items si tu veux éviter un plantage...

Ensuite, là c'est toi qui voit, mais il vaut mieux aussi que tes Items soient ordonnées comme il faut, car ListIndex récupère le numéro de l'Item dans sa position sur la ListBox, donc vaut mieux être synchro sur ce coup là...


Bon Aprèm
@+Thierry
 
M

MALLORY

Guest
Bonjour Thierry, le forum,

Merci pour ta réponse, mais dernière petite colle, comment je fais pour ajouter des items dans la listbox que j'ai créée dans mon usf pour que ce soit la meme que la listbox de ma feuille?

Et encore merci a tous

Mallory
 
@

@+Thierry

Guest
Re Mallory, le Forum

Ben oui c'est une colle, car même pour moi je n'en sais fichetrement rien tant que tu ne me donnes pas de détails ... Comment est incrémentée en donnée ta ListBox de Feuille (?)

Il y a bien des méthodes pour incrémenter des données dans une ListBox !!

En voici quatre pour incrémenter une ListBox dans un UserForm de manière dynamique :

METHODE ADDITEM :
Description de l'aide : Ajoute un élément à la liste d'une zone de liste ou d'une liste modifiable à colonne unique. Ajoute une ligne à la liste d'une zone de liste ou d'une liste modifiable multicolonnes.

Exemple concret :
Private Sub UserForm_Initialize()
Dim i As Byte, x As Byte
i = Sheets("Feuil1").Range("A65536").End(xlUp).Row
  For x = 1 To i
    With ListBox1
     .AddItem Sheets("Feuil1").Range("A" & i)
    End With
  Next x
End Sub


METHODE ROWSOURCE : (attention ListBox ou Combobox de UserForm ONLY)
Description de l'aide : Spécifie la source de données fournissant une liste à un contrôle ComboBox ou ListBox.

Exemple concret :
Private Sub UserForm_Initialize()
Dim Plage As String
  With Sheets("Feuil1")
   Plage = .Range("A1:A" & .Range("A65536").End(xlUp).Row).Address
  End With
ListBox1.RowSource = "Feuil1!" & Plage
End Sub

NB : la méthode "RowSource" ci-dessus ne supporte pas des nom de feuille (onglet) avec des espaces et certains caractères spéciaux



METHODE LIST : (Tableau Variant de Plage)
Description de l'aide : Renvoie ou définit la liste des entrées d'un contrôle ListBox ou ComboBox.

Exemple concret :
Private Sub UserForm_Initialize()
Dim Plage As Variant

  With Sheets("Feuil1")
   Plage = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
  End With

Me.ListBox1.List = Plage
End Sub



METHODE LIST : (Tableau Séquentiel)

Exemple concret :
Private Sub UserForm_Initialize()
Dim Plage As Range
Dim Tab1() As String

  With Sheets("Feuil1")
   Set Plage = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
  End With

ReDim Tab1(1 To Plage.Count)
  For Each Cell In Plage
    i = i + 1
    Tab1(i) = Cell
  Next

ListBox1.List = Tab1
End Sub


Et sinon si tu veux plus amples informations concrètes avec une méga démo je ne peux que te conseiller l'indispensable :

=> Fichier Téléchargeable Lien supprimé

=> Fil de Discussion Lien supprimé

Bonne Découverte Mallory car tu as de quoi t'amuser avec tout ça !

Bon Aprèm à tous et à toutes
@+Thierry
 
M

MALLORY

Guest
Bonjour le forum et thierry!

Thierry merci pour ton message.

la methode row fonctionne pour créer la listbox mais je n'arrive pas a mettre dans la cellule de destination de mon classeur la valeur sélectionné dans la listbox!

Quelqu'un aurait il une idée s'il vous plait?

Merci a tous

Mallory
 

Discussions similaires

Réponses
21
Affichages
1 K
Réponses
25
Affichages
819
Réponses
4
Affichages
310

Statistiques des forums

Discussions
312 679
Messages
2 090 849
Membres
104 677
dernier inscrit
soufiane12