enlever des lignes non utile dans listbox

Dennnisss

XLDnaute Occasionnel
Bonjour a tous
J'ai réaliser une listbox pour vérifier mes changement de pièces sur mon vélo ,,, étant donne que je change des pièces a l'occasion j'ai donc des ligne qui sert a rien dans ma listbox ,,, Est-ce possible d'afficher une listbox et effacer les lignes non essentiel ,,,, pour le test j'ai fait environ une 50 ligne ,,,, dans ma listbox j'ai mit le code d'un subtri qui n'est vraiment pas essentiel car lorsque que je fait mes entrée de mes sorties il le fait par date donc il se tri déjà ..... Dans le dossier Entree je peut trier a partir de la colonne (O) des dépenses car si il a une dépenses il a obligatoirement une pièces de changer .... Donc ma question c'est éliminer les lignes qui n'on pas de dépense juste afficher mon besoin ,,,, Est-ce réalisable ,,,, je vous remercie de votre messieurs les pros

denis Gauthier ;) :)
 

Pièces jointes

  • Pieces.zip
    16.9 KB · Affichages: 48

mécano41

XLDnaute Accro
Bonjour,

Peut-être ainsi...
Code:
Private Sub UserForm_Initialize()
Dim Plage As Range
Dim Lig As Long, Col As Long, ColList As Long
Dim Tlist()

With Sheets("Entree")
  Set Plage = .Range("B3:P" & .[B65000].End(xlUp).Row)
  ReDim Tlist(Plage.Columns.Count, 1)
  For Lig = 1 To Plage.Rows.Count
  If Plage.Cells(Lig, 14).Value <> "0" Then
  For ColList = 1 To 14
  Tlist(ColList, UBound(Tlist, 2)) = Plage.Cells(Lig, ColList).Value
  Next ColList
  ReDim Preserve Tlist(Plage.Columns.Count, UBound(Tlist, 2) + 1)
  End If
  Next Lig
ReDim Preserve Tlist(Plage.Columns.Count, UBound(Tlist, 2) - 1)
Me.ListBox1.List = WorksheetFunction.Transpose(Tlist)
End With
End Sub
 

Dennnisss

XLDnaute Occasionnel
Bonjour,

Peut-être ainsi...
Code:
Private Sub UserForm_Initialize()
Dim Plage As Range
Dim Lig As Long, Col As Long, ColList As Long
Dim Tlist()

With Sheets("Entree")
  Set Plage = .Range("B3:P" & .[B65000].End(xlUp).Row)
  ReDim Tlist(Plage.Columns.Count, 1)
  For Lig = 1 To Plage.Rows.Count
  If Plage.Cells(Lig, 14).Value <> "0" Then
  For ColList = 1 To 14
  Tlist(ColList, UBound(Tlist, 2)) = Plage.Cells(Lig, ColList).Value
  Next ColList
  ReDim Preserve Tlist(Plage.Columns.Count, UBound(Tlist, 2) + 1)
  End If
  Next Lig
ReDim Preserve Tlist(Plage.Columns.Count, UBound(Tlist, 2) - 1)
Me.ListBox1.List = WorksheetFunction.Transpose(Tlist)
End With
End Sub
 

Dennnisss

XLDnaute Occasionnel
Allo Mecano41
d'abord merci pour ton intervention j'apprécie ,,,,, j'ai transposer ton code dans mon userform ,,,, dans ton code j'ai perdu la colonne des pièces que j'ai changer ,,,,J'ai changer dans mon user la configuration du ColumWidth pour faire apparaitre les dates et les prix mais j'ai pas réussi a faire apparaitre la colonne des pièces changer .
La colonne des dates est (B) ,,, la colonne du prix déboursés (O) et pour finir la colonne des pièces changer est (P) dans la présentation du listbox j'aimerais qu'il affiche les trois colonnes

ex: 22 Octobre 15 $48 Sacoche
09 fevrier 16 $30 Pneu et pose
16 aout 17 $25 Changer pneu arrière et ainsi de suite

merci a toi Mecano et passe une belle journée
Vu le décalage d'heure entre toi et moi je manquerai pas de te lire car ton aide est precieuse

denis Gauthier Canada, Quebec
 

mécano41

XLDnaute Accro
Pour le cas où tu ne souhaiterais que les colonnes 1, 14 et 15 dans ta liste, tu peux également modifier le code comme ci-dessous. Il n'y a pas à modifier dans les propriétés de la liste.

Cordialement

Code:
Private Sub UserForm_Initialize()
Dim Plage As Range
Dim Lig As Long, Col As Long, ColList As Long, ColListFinale As Long
Dim Tlist()

ListBox1.ColumnCount = 3
ListBox1.ColumnWidths = "90;40;40"
With Sheets("Entree")
  Set Plage = .Range("B3 : P" & .[B65000].End(xlUp).Row)
  ReDim Tlist(3, 1)
  For Lig = 1 To Plage.Rows.Count
  If Plage.Cells(Lig, 14).Value <> "0" Then
  ColListFinale = 0
  For ColList = 1 To 15
  If ColList = 1 Or ColList = 14 Or ColList = 15 Then
  ColListFinale = ColListFinale + 1
  Tlist(ColListFinale, UBound(Tlist, 2)) = Plage.Cells(Lig, ColList).Value
  End If
  Next ColList
  ReDim Preserve Tlist(3, UBound(Tlist, 2) + 1)
  End If
  Next Lig
ReDim Preserve Tlist(3, UBound(Tlist, 2) - 1)
ListBox1.List = WorksheetFunction.Transpose(Tlist)
End With
End Sub
 

Dennnisss

XLDnaute Occasionnel
Pour le cas où tu ne souhaiterais que les colonnes 1, 14 et 15 dans ta liste, tu peux également modifier le code comme ci-dessous. Il n'y a pas à modifier dans les propriétés de la liste.

Cordialement

Code:
Private Sub UserForm_Initialize()
Dim Plage As Range
Dim Lig As Long, Col As Long, ColList As Long, ColListFinale As Long
Dim Tlist()

ListBox1.ColumnCount = 3
ListBox1.ColumnWidths = "90;40;40"
With Sheets("Entree")
  Set Plage = .Range("B3 : P" & .[B65000].End(xlUp).Row)
  ReDim Tlist(3, 1)
  For Lig = 1 To Plage.Rows.Count
  If Plage.Cells(Lig, 14).Value <> "0" Then
  ColListFinale = 0
  For ColList = 1 To 15
  If ColList = 1 Or ColList = 14 Or ColList = 15 Then
  ColListFinale = ColListFinale + 1
  Tlist(ColListFinale, UBound(Tlist, 2)) = Plage.Cells(Lig, ColList).Value
  End If
  Next ColList
  ReDim Preserve Tlist(3, UBound(Tlist, 2) + 1)
  End If
  Next Lig
ReDim Preserve Tlist(3, UBound(Tlist, 2) - 1)
ListBox1.List = WorksheetFunction.Transpose(Tlist)
End With
End Sub
 

Dennnisss

XLDnaute Occasionnel
Salut Mecano

j'ai entree ton nouveau code que tu a modifier et j'ai le même probleme j'ai seulement 2 colonnes dans la listbox au lieu de trois ....
J'ai modifier le code suivant que tu a rediger
For ColList = 1 To 15
If ColList = 1 Or ColList = 14 Or ColList = 15 Then
ColListFinale = ColListFinale + 1
Tlist(ColListFinale, UBound(Tlist, 2)) = Plage.Cells(Lig, ColList).Value
End If

J'ai changer If ColList = 1 Or ColList = 15 Or ColList = 16 then
cette formule ma afficher la date et les pièces changer
quand je prend ton code il afficher dans le user les dates et le montant payé
Je réussi jamais a avoir les trois dans la listbox
J'ai tenter dans ton test du If d'integrer un 3ieme Or ColList = 14 Or ColList = 15 Or ColList =16 Then
et bien sur j'ai obtenue un erreur
Bonne nuit a toi il est tard probablement chex vous et bonnne journée demain

denis Gauthier canada :):)
 

Dennnisss

XLDnaute Occasionnel
Salut Mecano 41
Désolé si la réponse a été tardive ,,,, tu m'avais envoyer ta réponse en format xlms et je suis encore de la vielle formule je suis en format xls ,,,, j'ai donc du allée chez des amis qui était disponible aujourd'hui pour le transférer en xls ,,,, enfin réussi ,,,, J'ai essayer ton code il est parfait c'est le résultats que je voulais
alors merci a toi et apprécie tellement votre site ,,, vous êtes d'une aide tellement précieuse pour que l'on puisse réaliser nos projets personnelle

merci a toi Mécano 41 et passe une tres belle journée denis Gauthier :):)
 

Dennnisss

XLDnaute Occasionnel
Bonjour Nicole et Mécano 41

Je viens de voir que vous m'aviez envoyer aussi un code pour mon besoin je l'ai essayer et je lui apporter une légèrement modifier exemple : ColVisu = Array(1, 14, 15, 16) .... cette ligne j'ai changer les numéros des lignes soir 1,2,15,16 ,,,, cela répondait mieux a mon besoin ..... maintenant Est-ce que l'on peut changer le format de lettres sur la ligne du code Array ,,,,, j'ai modifier la largeur de votre userform et changer la grandeur des lettres je l'ai mis en écriture Times Roman et en mode gras et en type 16 pt ,,,, en faisant cette correction il va de soit que les array sont maintenait trop petit ,,,, si je pousse ma demande encore plus loin Est-ce possible dans votre code intégrer ces recommandions ,,,,,dans la colonne 2 et 3 Est-ce que l'on peut faire lire c'est colonne en mode .Text car ma lecture des dates ne me convient pas et dans la colonnes 3 le signe de dollars me serais important .... dans le document pour faire le trie c'est données sont déjà dans ce type de format c'est pour cette raison en les identifiant en mode .Text

alors merci a vous de votre être intégrer dans la conversation elle est apprécier

attend votre réponse et bonne journée ou soirée
denis Gauthier canada
 

Pièces jointes

  • Copie de Copie de FormCascadeListBoxColonneNonContigue.xls
    78 KB · Affichages: 32

Si...

XLDnaute Barbatruc
Bonsoir ou Bon jour

Si … tu ne veux que "voir", filtrer la plage suffit comme dans l'exemple proposé sinon il faudra compléter ton formulaire et ça, c'est une autre histoire.
VB:
Private Sub Worksheet_BeforeRightClick(ByVal R As Range, Oust As Boolean)
  If R.Address = [A1].Address Then
  [P:P].AutoFilter 1, "<>"
  [C1:N1].EntireColumn.Hidden = 1
  Oust = 1: [B1].Select
  End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal R As Range)
  If R.Address = [A1].Address Then [C1:N1].EntireColumn.Hidden = 0: [P:P].AutoFilter
End Sub
 

Pièces jointes

  • FilrePlage.xls
    55 KB · Affichages: 36

Dennnisss

XLDnaute Occasionnel
Allo Nicole

merci beaucoup a toi pour ce projet il est parfait et plus clair a lire ,,,, je te remercie beaucoup et passe une belle journée ,,,,, votre aide et votre site wow super bien efficace et vous nous juger pas

denis Gauthier canada :D:D:D
 

Si...

XLDnaute Barbatruc
Hello
votre aide et votre site wow super bien efficace et vous nous juger pas

Merci pour ton avis quant à ma proposition !

Dis-moi, prends-tu la macro donnée telle quelle ou essaies-tu de la comprendre ?
En l'analysant, Nicole, peux-tu me dire stp,
- A propos des déclarations de variables : seule celle du tableau Tbl (tableau redimensionné) est obligatoire.
Pourquoi n'en déclarer que quelques-unes ?
[Tendance personnelle]
Pour ma part, je préfère les déclarer toutes afin de mieux les contrôler et comprendre leur utilité (sans type, c'est général donc Variant et ça passe partout).
Mais si c'est facultatif cela permet quand même de mieux progresser.
[/Fin]

- D'où vient le 27*dans x=27 ?
- Quel est l'intérêt des * 1# ?
- Pourquoi, dans une macro qui se veut générale, ne pas s'occuper de la hauteur, la largeur des objets ? Est-ce parce que le choix des Polices est difficile à gérer (donc *tâtonnement)?

Merci pour les réponses et :cool:

Puisque tu sembles tenir à une macro, je reprends, dans le fichier joint,mais à ma sauce, celle donnée.
 

Pièces jointes

  • ListBox Colonnes NonContigues(Usf).xls
    64.5 KB · Affichages: 42

gosselien

XLDnaute Barbatruc
Bonjour à tous,

ce qui est curieux , c'est que chez moi (Xl 2010) ça planet au même endroit avec vos 2 codes:

ListBox1.ColumnWidths = Cw ' si...
ou
Me.ListBox1.ColumnWidths = temp ' bisson

Mais fonctionne si je mets un chiffre en dur :)

P.
 

Si...

XLDnaute Barbatruc
Salut gosselien:)

J'ai déjà eu des problèmes avec des contrôles créés dans d'autres versions. Certains sont résolus en supprimant le contrôle récalcitrant un en insérant un du même type.

As-tu essayé cela o_O ?

Pour les largeurs de colonnes, en direct, je n'ai pas d'ennuis quand, dans la propriété ColumnsWidths, je saisis 12;25;14 (transformée automatiquement en 12 pt;24,95 pt;13,95 pt ce qui m'a fait déclarer Cw en String). Mais c'est avec ma version 2010 d'Excel et ses bibliothèques prédéfinies !
 

Discussions similaires

Réponses
25
Affichages
603
Réponses
18
Affichages
505
Réponses
4
Affichages
165

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof