Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

AddItem ListBox

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 😀 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………..
 
Salut Tonio

Pour avoir 1100 items utilise

Dim i As Integer

Car Dim i As Byte te permet que 255 items tu pourras aller jusqu'à
32767 items.

Mytå
 
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.............
 
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
 
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.........
 
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:
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 :


Salut
 
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;
 
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………….
 
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

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……….
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
658
Réponses
3
Affichages
918
Réponses
2
Affichages
1 K
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
899
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…