Finaliser un USF avec listbox(HELP!!)

alex67800

XLDnaute Impliqué
Bonjour tout le monde,

Grâce à vos nombreuses interventions, j'ai réussit à élaborer un programme de suivit des arrêts machines.

Toute fois une dernière étape est nécessaire pour le finaliser, éditer un état (synthèse) via un USF.

Ce dernier USF est composé de combo, textbox et lisbox.
Sur ce dernier je ni comprend rien, notament réussir à inclure plusieurs colonne dans ces fameuses listbox, en fonctions des critères dans la combo et textbox. Et pour finir pouvoir imprimer cette état.

Un exemple valant tous discours je vous joint un bout de mon fichier reprenant l'usf et les colonnes sources.

Il ne reste plus que cette partie pour boucler mon projet, svp un dernier coup de pouce :eek:

Merci d'avance.
 

Pièces jointes

  • testprojet4 v2.zip
    31.9 KB · Affichages: 43
  • testprojet4 v2.zip
    31.9 KB · Affichages: 44
  • testprojet4 v2.zip
    31.9 KB · Affichages: 45

ledzepfred

XLDnaute Impliqué
Re : Finaliser un USF avec listbox(HELP!!)

Bonjour alex,

une recherche sur le forum t'aurait permis je pense de trouver facilement ce que tu souhaites (les exemples font légion sur ce sujet)!
ci joint un code qui te permet de créer tes listbox sur plusieurs colonnes à adapter à ce que tu veux faire bien sur:

Private Sub UserForm_Initialize()
Dim Rng As Range, Cel As Range
Set Rng = Sheets("feuil1").Range("B7:B" & Range("B65536").End(xlUp).Row) 'c'est ma plage de données sur laquelle la listbox doit s'appuyer, à noter que j'ai délibérement choisi la colonne qui sera en première position dans la listbox
With ListBox1
.BoundColumn = 1 'définit le n° de colonne qui sera la valeur de listbox exemple si je choisis la ligne Nom prenom age et que je définis boundcolumn=1, la valeur de ma textbox sera Nom, 2 prénom 3 age
.ColumnCount = 3 ' définit le nb de colonnes dans ma listbox
.ColumnWidths = "20;100;50" 'définit la largeur de chacune des colonnes de ma listbox (respectivement 1 2 et 3)
.Clear
For Each Cel In Rng
.AddItem Cel 'ce sera la valeur de la listbox
.List(.ListCount - 1, 1) = Cel.Offset(0, 1) 'si en colonne 1 j'ai la valeur de B8 alors en colonne 2 j'aurai C8
.List(.ListCount - 1, 2) = Cel.Offset(0, 2) 'si en colonne 1 j'ai la valeur de B8 alors en colonne 3 j'aurai D8
Next Cel
End With
End Sub

a+
 

bqtr

XLDnaute Accro
Re : Finaliser un USF avec listbox(HELP!!)

Bonjour ales, ledzepfred

Ton fichier modifié :

Seul le bouton "Editer" est codé, pour l'impression où veux tu mettre les données des listbox ? sur une nouvelle feuille ?

A+
 

Pièces jointes

  • testprojet4 v2.zip
    36 KB · Affichages: 30
  • testprojet4 v2.zip
    36 KB · Affichages: 30
  • testprojet4 v2.zip
    36 KB · Affichages: 31

alex67800

XLDnaute Impliqué
Re : Finaliser un USF avec listbox(HELP!!)

Bonjour ledzepfred, bqtr (un plaisir de te croiser à nouveau),

C'est vrai j'ai consulté nombreux fil, mais j'avoue que cela dépasse mes connaissance basic de vba.

Bqtr, oui en effet sur une feuille "synthèse" (que j'ai oublié de mettre dans le fichier, avant impression, avec une présentation la plus sommaire qui reprend les listbox, avec un titre du style Synthèse des arrêts selon période et hop imprimer oui/non

Merci, merci, merci ;)

Je vais de ce pas regarder le code que tu as créé.

Merci à toi ledzepfred je vais plencher sur ton code pour assimiler la logique de la macro.
 
Dernière édition:

alex67800

XLDnaute Impliqué
Re : Finaliser un USF avec listbox(HELP!!)

Bonjour alex,

une recherche sur le forum t'aurait permis je pense de trouver facilement ce que tu souhaites (les exemples font légion sur ce sujet)!
ci joint un code qui te permet de créer tes listbox sur plusieurs colonnes à adapter à ce que tu veux faire bien sur:

Private Sub UserForm_Initialize()
Dim Rng As Range, Cel As Range
Set Rng = Sheets("feuil1").Range("B7:B" & Range("B65536").End(xlUp).Row) 'c'est ma plage de données sur laquelle la listbox doit s'appuyer, à noter que j'ai délibérement choisi la colonne qui sera en première position dans la listbox
With ListBox1
.BoundColumn = 1 'définit le n° de colonne qui sera la valeur de listbox exemple si je choisis la ligne Nom prenom age et que je définis boundcolumn=1, la valeur de ma textbox sera Nom, 2 prénom 3 age
.ColumnCount = 3 ' définit le nb de colonnes dans ma listbox
.ColumnWidths = "20;100;50" 'définit la largeur de chacune des colonnes de ma listbox (respectivement 1 2 et 3)
.Clear
For Each Cel In Rng
.AddItem Cel 'ce sera la valeur de la listbox
.List(.ListCount - 1, 1) = Cel.Offset(0, 1) 'si en colonne 1 j'ai la valeur de B8 alors en colonne 2 j'aurai C8
.List(.ListCount - 1, 2) = Cel.Offset(0, 2) 'si en colonne 1 j'ai la valeur de B8 alors en colonne 3 j'aurai D8
Next Cel
End With
End Sub

a+
Re,
Si ce que j'ai mis en rouge est la colonne de référence, comment intégrer la colonne C, d et E ensuite? C'est List(.ListCount - 1, 1) = Cel.Offset(0, 1) mais à quoi correspond -1, 1 et 0,1?

C'est là que j'ai du mal en fait. Désolé j'ai le cerveau lent! :p

désolé d'abuser de votre patience.
 

alex67800

XLDnaute Impliqué
Re : Finaliser un USF avec listbox(HELP!!)

Bonjour ales, ledzepfred

Ton fichier modifié :

Seul le bouton "Editer" est codé, pour l'impression où veux tu mettre les données des listbox ? sur une nouvelle feuille ?

A+

Re bqtr,

Je relis ton code c'est axactement ce que je veux, mais pour moi c'est encore du chinois. C'est dans toutes ces déclarations de variables ou constantes que je ne métrise pas du tout pour l'instant, mais je ne désepère pas bien au contraire. Que de chemin parcourut depuis mes débuts.:rolleyes:
 

bqtr

XLDnaute Accro
Re : Finaliser un USF avec listbox(HELP!!)

Re,

Voici ton fichier modifié :

Ajout de la feuille "Synthèse"
Ajout de la macro "Imprime"

Pour l'instant c'est l'aperçu avant impression qui s'affiche, pour imprimer :
Dans la macro "Imprime", il faut mettre une ' devant la ligne qui finit par PrintPreview et enlever celui devant la ligne juste en dessous.

A+
 

Pièces jointes

  • testprojet4 v2.zip
    29.6 KB · Affichages: 55
  • testprojet4 v2.zip
    29.6 KB · Affichages: 57
  • testprojet4 v2.zip
    29.6 KB · Affichages: 56

bqtr

XLDnaute Accro
Re : Finaliser un USF avec listbox(HELP!!)

Re,

Pour bien comprendre les codes utilise l'aide de VBA.

Sélectionne le mot (par EX Offset) et appuis sur F1. Tu auras l'explication.

Dans les Listbox la 1ère colonne a pour n° 0, la deuxième 1 .../...

Pour Offset, cela te permet de te déplacer par rapport à une cellule de départ (Vers le haut, le bas, la gauche ou la droite).
Offset(ligne,colonne).
EX cellule active B2 avec :
offset(0,1) renvoie sur C2, même ligne(0), 1 colonne à droite(1)
offset(-1,0) renvoie sur B1, la ligne du dessus(-1), même colonne(0)
offset(1,1) renvoie sur C3, la ligne du dessous(1), colonne à droite(1)

A+
 

alex67800

XLDnaute Impliqué
Re : Finaliser un USF avec listbox(HELP!!)

Re Bonsoir bqtr,
Merci bcp à toi, ledzepfred également.

C'est exactement ce que je voulais.

C'est vrai que l'on oubli souvent F1. Mais faut reconnaître que les experts de ce forum valent bien plus que F1.;)

En tout cas merci à tous, hasco, Jean-Pierre, bqtr, Pierrot93, et j'en oublis sûrement.
 

ledzepfred

XLDnaute Impliqué
Re : Finaliser un USF avec listbox(HELP!!)

bonsoir alex, bqtr, le forum,

désolé de n'avoir pu suivre plus avant ton post.
Je voulais te préciser que les propriétés boundcolumn, columncount et columnwidths présentes dans le code que je t'ai transmis peuvent être intégrées directement dans les propriétés de la listbox (dans éditeur vba, sélectionne ta listbox puis clic droit propriétés ou F4.
L'intérêt de mettre ces propriétés dans le code c'est quand ta listbox doit être paramétrée differemment selon condition
exemple :
if range("A1")=3 then
listbox1.columncount=2
else listbox1.columncount=3
End If

Si ta listbox n'a pas besoin d'être adaptée alors privilégies la définition dans les propriétés (F4), cela allègera ton code vba

A+
 

Statistiques des forums

Discussions
312 305
Messages
2 087 093
Membres
103 467
dernier inscrit
Pandiska