AddItem ListBox

  • Initiateur de la discussion Tonio
  • Date de début
T

Tonio

Guest
Bonsoir le Forum


J’ai encore besoin de votre aide.
J’ai un USF avec une ListBox ou je voudrais avoir uniquement les colonnes A :B :C :D et J
Apres quelques recherches sur ce merveilleux forum, j’ai trouvé ce petit code


Private Sub UserForm_Initialize()
Dim i As Byte
Dim WS As Worksheet

Set WS = ThisWorkbook.Worksheets('Feuil1')

For i = 0 To 10
With Me.ListBox1
.ColumnCount = 5
.ColumnWidths = '80;80;150;120;60'
.AddItem WS.Range('A' & i + 1)
.Column(1, i) = WS.Range('B' & i + 1)
.Column(2, i) = WS.Range('C' & i + 1)
.Column(3, i) = WS.Range('D' & i + 1)
.Column(4, i) = WS.Range('J' & i + 1)

End With
Next i
End Sub

Mais malheureusement je ne réussi à afficher que 10 lignes sur 1100 malgrée tous les essais que j’ai fait
Je voudrais aussi savoir si après modification des données depuis un TextBox de se même USF s’il était possible de réactualiser la ListBox ou avoir les modification en temps réel.

Quelqu’un pourrais t’il m’aider

A++ Tonio………..
 
T

Tonio

Guest
Bonsoir le Forum
Bonsoir Mytå

Merci pour ton aide Myta, tu avait raison avec As Integer ça fonctionne beaucoup mieux.

Mais je me suis aperçu qu'avec cette Boucle l'initialisation d el'USF est trop longue.
Donc j'ai changé de code et j'ai mis celui-ci:

Dim c As Variant

c = ThisWorkbook.Worksheets('Feuil1').Range('a2:j1060')

With Me.ListBox1
.ColumnCount = 10
.ColumnWidths = '80;80;160;135;0;0;0;0;0;60'
.List = c
End With

Mais maintenant je voudrais pouvoir filtre la colonne 'J' et n'afficher
Que les cellules 'non vides' a l'initialisation de l'USF

Si quelqu'un peut m'aider.

Merci d'avance

A++ TONIO.............
 

ChTi160

XLDnaute Barbatruc
Salut Tonio
bonsoir le fil
tonio peux tu mettre un exemple qui permettra de mieux comprendre ce que tu désires
Mais maintenant je voudrais pouvoir filtre la colonne 'J' et n'afficher
Que les cellules 'non vides' a l'initialisation de l'USF

celà veut dire que si une cellule est vide en colonne J tu supprimes la ligne entière ou alors faut il décaler les cellules
tu fais le ménage avant l'insertion des données, tu vois je me pose des questions

Amicalement
Jean Marie
 
T

Tonio

Guest
oups

le fichier n'est pas passer.

[file name=Essais Tonio_20050508225737.zip size=15569]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Essais Tonio_20050508225737.zip[/file]
 

Pièces jointes

  • Essais Tonio_20050508225737.zip
    15.2 KB · Affichages: 99
T

Tonio

Guest
Bonsoir le Forum

Quelqu'un peut il M'aider

J'ai réussi a filtre la colonne a l'ouverture de l'USF mais pas a récupérer les éléments filtrées

Si quelqu'un a une idée elle est la bienvenue

A++ Tonio.........
 

ChTi160

XLDnaute Barbatruc
Salut Tonio
bonjour le Fil
bonjour le forum
en pièce jointe une interprétation
Amicalement
Jean Marie [file name=EssaisV1 Tonio_20050509112552.zip size=19630]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/EssaisV1 Tonio_20050509112552.zip[/file]
 
Dernière édition:

Hervé

XLDnaute Barbatruc
Bonjour tonio, myta, le forum

salut chti

Une autre méthode, si le filtre de la plage ne sert à récupérer que les lignes renseignées en colonne J.

Tout faire par tableau variant :

Private Sub UserForm_Initialize()
Dim c As Variant
Dim i As Integer
Dim j As Byte, x As Byte

With Me.ListBox1
.ColumnCount = 10
.ColumnWidths = '80;80;160;135;0;0;0;0;0;60'

c = ThisWorkbook.Worksheets('Feuil1').Range('a2:j1060')
x = 0
For i = 1 To UBound(c, 1)
If c(i, 10) <> '' Then
.AddItem c(i, 1)
For j = 1 To 9
.List(x, j) = c(i, j + 1)
Next j
x = x + 1
End If
Next i

End With

End Sub

Salut
 
M

Mytå

Guest
Salut le Forum

Pour récuperer directement des éléments filtrés dans une ListBox :

Code:
Private Sub UserForm_Initialize()

Dim myVisibleRng As Range
Dim myFilterRng As Range
Dim myCell As Range
Dim cCtr As Long

Set myFilterRng = Range('a1:j' & Range('J65536').End(xlUp).Row)

myFilterRng.AutoFilter Field:=10, Criteria1:='<>' 'Filtre sur Colonne J cellule non-vide

If myFilterRng.Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count = 1 Then GoTo Fin

With myFilterRng
    Set myVisibleRng = .Resize(.Rows.Count - 1, 1) _
    .Offset(1, 0).Cells.SpecialCells(xlCellTypeVisible)
End With

With ListBox1
    .ColumnCount = 10
    .ColumnWidths = '80;80;160;135;0;0;0;0;0;60'
For Each myCell In myVisibleRng.Cells
    .AddItem myCell.Value
For cCtr = 2 To 10 'Colonne B à J
    .List(.ListCount - 1, cCtr - 1) = myCell.Offset(0, cCtr - 1).Value
Next cCtr
Next myCell
End With

Fin:
Selection.AutoFilter

End Sub

Myt&aring;
 
T

Tonio

Guest
Bonsoir tout le Monde

Un Grand, Grand Merci a vous tous
Jean Marie, Hervé et Myta

Je voudrais vous remercier pour votre aide et votre enthousiasme
Grâce à votre aide et au choix multiple de codes que vous m’avez fait parvenir
J’ai put les essayer et adapter a mon application et cela fonctionne a merveille
Juste une petite remarque sur le code à Herve (pour info)
Ton code récupère bien les données filtre mais dans une colonne avec des formules donc la valeur et zéro il les récupère également, même si ' options, valeurs zéro = désactiver '
Comme une question en amène une autre
1°/ Je voudrais savoir s’il est possible après modification des données dans un Textbox additionner a la ListBox.ListIndex, de réactualiser les valeurs de la ListBox. En temps réel.
2°/ je voudrais imprimer le contenue de la ListBox (ça pas de problème), le souci est que j’ai un model de bon de commande qui ne contient que 42 lignes et la ListBox peut contenir de 1 articles a 500 articles voir plus (1 articles = 1 ligne) donc plusieurs pages avec le même model
Et la je ne sais pas faire.

Si vous pouviez m’aider ça serait génial

Sans vouloir abuser de votre patience, Merci

Merci d’avance

A++ Tonio………….
 

Hervé

XLDnaute Barbatruc
Bonjour tonio

:)

Pour la correstion de la macro, concernant la valeur 0, tu peut corriger la macro comme ceci : If c(i, 10) <> '' And c(i, 10) <> 0 Then

pour ta question 1 : tu veux réinitialiser ta listbox apres changement du tableau via une textbox, c'est bien ca ??

Alors, le plus simple c'est de créer une procédure initlistbox, ou tu va placer la macro qui te sert à remplir ta listbox.

Ensuite tu fais référence à cette procédure, lors de l'initialisation de ton userform, et suite au remplissage via ta textbox.

pour la question2 : je n'ai pas de solution mais le plus simple est surement de copié 42 valeurs dans le modèle, l'imprimer, puis recopier 42 valeurs suivantes , etc....

ou de copier l'onglet modele avec à chaque fois 42 valeurs, et ensuite imprimer les onglets.

voila, espérant t'avoir éclairer.

En pièce jointe, un exemple pour la question 1
[file name=Essais Tonio3_20050514102308.zip size=17308]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Essais Tonio3_20050514102308.zip[/file]
 

Pièces jointes

  • Essais Tonio3_20050514102308.zip
    16.9 KB · Affichages: 133
T

Tonio

Guest
Bonsoir le Fil, Bonsoir Hervé

Avant tout désole pour la réponse tardive, une petite semaine de vacances ne font de mal a personne!!

Merci Hervé pour ta demo sur la InitListBox, effectivement ça marche a merveille.
Quand a ton idée de copier 42 fois les valeurs et les imprimes, je ne vois pas trop comment faire, mais je vais y pensée et étudier le problème.

Merci a tous pour votre aide.

A++ Tonio……….
 

Discussions similaires

Statistiques des forums

Discussions
312 508
Messages
2 089 132
Membres
104 042
dernier inscrit
tropsy89