Mise en forme d'une listbox dans un userform [Résolu]

chris09300 140 Messages postés lundi 9 juin 2008Date d'inscription 18 avril 2012 Dernière intervention - 4 nov. 2011 à 21:16 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 5 nov. 2011 à 11:20
J'espere que cette fois je suis dans le bon theme, a chaque fois je mis perd.
excuser moi encore

je travaille sur excel 2007
je le probleme suivant.
j'ai un userform dans lequel j'ai une listbox alimentee par des donnees d'une feuille.
j'ai bien le resultat escompter, sans mise en forme, je souhaiterais mettre ces donnees sous forme d'un tableau.
merci pour vos conseil
cris

voici le code que j'ai.

Code Visual Basic :

Option Explicit

Const LIGNE_DEBUT_LISTE As Integer = 2
Const LIGNE_FIN_LISTE As Integer = 70 'est la limite à modifier en fonction de la longueur de la liste du tableau Excel

Const COLONNE_Nº As Integer = 1
Const COLONNE_PRENOM As Integer = 2
Const COLONNE_Nom As Integer = 3
Const COLONNE_datenaissance As Integer = 4

Dim iLigne As Integer


Private Sub Userform_Initialize()
With ThisWorkbook.Sheets(3) 'ou : With ThisWorkbook.Sheets("BD1")
ListBox1.ColumnCount = 3
ListBox1.ColumnWidths = "20;60;60"
For iLigne = LIGNE_DEBUT_LISTE To LIGNE_FIN_LISTE
ListBox1.AddItem
ListBox1.List(iLigne - LIGNE_DEBUT_LISTE, 0) = .Cells(iLigne, COLONNE_Nº).Value
ListBox1.List(iLigne - LIGNE_DEBUT_LISTE, 1) = .Cells(iLigne, COLONNE_PRENOM).Value
ListBox1.List(iLigne - LIGNE_DEBUT_LISTE, 2) = .Cells(iLigne, COLONNE_Nom).Value
Next iLigne
End With
ListBox1.Selected(0) = True
End Sub

Private Sub ListBox1_Click()
For iLigne = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(iLigne) = True Then
datenaissance ThisWorkbook.Sheets(3).Cells(iLigne + LIGNE_DEBUT_LISTE, COLONNE_datenaissance).Value 'datenaissance ... au lieu de : TextBox_datenaissance = ... car le TextBoax se nomme : datenaissance
End If
Next iLigne
End Sub
Private Function fctAge(ByVal DN As Variant) As String
If IsDate(DN) Then
fctAge = CStr(DateDiff("yyyy", Me.datenaissance.Value, Date))
Else
fctAge = ""
End If
End Function
Private Sub datenaissance_Change()
If IsDate(Me.datenaissance.Value) Then Me.Age.Value = fctAge(Me.datenaissance.Value)
End Sub
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 nov. 2011 à 11:20
3
Merci
Bonjour,

J'ai toujours des difficultés à comprendre, dans les cas comme celui-ci (où il s'agit de quoi ? ==>> de "réafficher" finalement en moins bien une portion de feuille) l'utilité de passer par un autre contrôle alors que Excel est le meilleur outil en soi pour présenter des "tableaux".
Même s'il s'agissait de s'offrir la possibilité d'utiliser, dans un userform, une portion de feuille, on peut toujours le faire simplement en créant une nouvelle feuille (y compris temporaire) ne contenant que les données concernées et insérée directement dans le userform (qu'on rend parent de cette feuille). Les avantages sont multiples (mise en forme, calculs éventuels, etc...). Qui plus est : si, pour une raison ou une autre, on souhaite garder ce "tableau", rien de plus simple : on garde cette feuille dans le classeur et on la réaffiche dans le userform à la prochaine ouverture.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de ucfoutu
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 4 nov. 2011 à 21:26
0
Merci
Pas bonjour non plus

Apparemment, tu n'as pas compris ce que "coloration syntaxique" veut dire :
Colle ton code ici
Sélectionne le code collé entièrement
Clique si la 3ème icone à droite
C'est tout, ne touche plus à rien, ne supprime pas de balise.

"je souhaiterais mettre ces donnees sous forme d'un tableau."
Ca ne veut rien dire

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
chris09300 140 Messages postés lundi 9 juin 2008Date d'inscription 18 avril 2012 Dernière intervention - 4 nov. 2011 à 21:33
0
Merci
sur les anciens posts j'ai dis bonjour, ce que je fait toujours en general.
alors bonsoir a tous

je souhaite avoir dans une viewlist mes donnees avec une visualisation comme sur une feuille excel , cest a dire avec des lignes et des colonnes pour mieux m'y retrouver.



Option Explicit

Const LIGNE_DEBUT_LISTE As Integer = 2
Const LIGNE_FIN_LISTE As Integer = 70 'est la limite à modifier en fonction de la longueur de la liste du tableau Excel

Const COLONNE_Nº As Integer = 1
Const COLONNE_PRENOM As Integer = 2
Const COLONNE_Nom As Integer = 3
Const COLONNE_datenaissance As Integer = 4

Dim iLigne As Integer


Private Sub Userform_Initialize()
With ThisWorkbook.Sheets(3) 'ou : With ThisWorkbook.Sheets("BD1")
ListBox1.ColumnCount = 3
ListBox1.ColumnWidths = "20;60;60"
For iLigne = LIGNE_DEBUT_LISTE To LIGNE_FIN_LISTE
ListBox1.AddItem
ListBox1.List(iLigne - LIGNE_DEBUT_LISTE, 0) = .Cells(iLigne, COLONNE_Nº).Value
ListBox1.List(iLigne - LIGNE_DEBUT_LISTE, 1) = .Cells(iLigne, COLONNE_PRENOM).Value
ListBox1.List(iLigne - LIGNE_DEBUT_LISTE, 2) = .Cells(iLigne, COLONNE_Nom).Value
Next iLigne
End With
ListBox1.Selected(0) = True
End Sub

Private Sub ListBox1_Click()
For iLigne = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(iLigne) = True Then
datenaissance ThisWorkbook.Sheets(3).Cells(iLigne + LIGNE_DEBUT_LISTE, COLONNE_datenaissance).Value 'datenaissance ... au lieu de : TextBox_datenaissance = ... car le TextBoax se nomme : datenaissance
End If
Next iLigne
End Sub
Private Function fctAge(ByVal DN As Variant) As String
If IsDate(DN) Then
fctAge = CStr(DateDiff("yyyy", Me.datenaissance.Value, Date))
Else
fctAge = ""
End If
End Function
Private Sub datenaissance_Change()
If IsDate(Me.datenaissance.Value) Then Me.Age.Value = fctAge(Me.datenaissance.Value)
End Sub
Commenter la réponse de chris09300
NHenry 14262 Messages postés vendredi 14 mars 2003Date d'inscription 22 septembre 2018 Dernière intervention - 4 nov. 2011 à 21:46
0
Merci
Bonjour,

Ressemble à un doublon :
http://www.vbfrance.com/forum/sujet-VBA-MISE-FORMED-LISTBOX-DANS-USERFORM_1554329.aspx

Sinon, voici comment tu devrais faire :
[code=vb]MonCode[/ code]

(sans l'espace pour le /code bien sûr)

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 4 nov. 2011 à 23:10
0
Merci
Je ne m'exciterais pas sur la méthode à utiliser pour coloriser du code, je pense que c'est peine perdue.
Oh pis si.
Est-ce que tu prends le temps de lire ce qu'on t'écrit ?
[i]Colle ton code ici
Sélectionne le code collé entièrement
Clique si la 3ème icone à droite
C'est tout, ne touche plus à rien, ne supprime pas de balise./i
Est-ce que c'est si dure à appliquer ?

Quant à ton problème :
Tu nous dis en quelques mots ce que tu souhaites, puis tu nous colles du code, y compris du code qui n'a rien à voir avec le problème.
La prochaine fois, ne colle que la partie qui remplit ta ListView, le reste, on s'en fiche. Pourquoi voudrais-tu qu'un Clic change quoi que ce soit aux données ou à leur présentation ?

Prends le temps d'exposer clairement ton problème.
Dire que ça ne marche pas ne suffit pas.
Que reproches-tu à ton code ?
Que vois-tu ?
Qu'est ce qui ne te plait pas dans ce que tu vois ?

On n'est pas sur un Chat, c'est un forum.
Il faut être clair, précis et donner le maximum de détails à la première demande. N'attends pas qu'on te les demande - on n'est pas 24h/24 devant l'écran pour les doux yeux des autres - si ton problème traine en longueur, on risque de ne plus aller le suivre ...
Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 4 nov. 2011 à 23:20
0
Merci
PS : Pour quelque chose qui ressemble plus à une feuille Excel, je trouve que le DataGridView serait plus adapté esthétiquement parlant.
Commenter la réponse de cs_Jack
chris09300 140 Messages postés lundi 9 juin 2008Date d'inscription 18 avril 2012 Dernière intervention - 5 nov. 2011 à 10:30
0
Merci
bonjour
j'ai regarder pour faire un datagridview mais je n'est pas trouver de tutos. je veux bien essayer. Connais tu un lien ou je pourrais trouver des infos, mercia toi
cris
Commenter la réponse de chris09300

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.