Multi colone dans une listview

Fermé
ocejade17 Messages postés 12 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 25 février 2009 - 8 nov. 2008 à 18:45
 ocejade17 - 29 janv. 2009 à 17:12
Bonjour,

je viens de m inscrire sur votre site car je travail sur un programme de calcul d heure de nuit en vb6 mais je suis bloquer avec un problème de listview et de colonne

explication en détail
j ais une form1 sur laquelle je remplie une listbox je souhaite envoyé cette liste dans une listview qui est placer sur une form2 comme pour un aperçu avant une impression sous forme de colonne

9 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
8 nov. 2008 à 18:55
Bonjour,
Il n'y a pas de colonne dans un listView, c'est un affichage comme dans l'explorateur de fichier où tu ouvre et ferme des lignes.
A+
0
ocejade17 Messages postés 12 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 25 février 2009
8 nov. 2008 à 19:09
bonjour a toi lermite222
merci pour ta rapidité alors qu elle est le meilleur moyen pour faire se type d aperçus

je te mais mon codage pour que tu puisse voir mon probleme
Private Sub Command1_Click()
CalculMinuteFin = TxtMinuteFin
CalculHeureFin = TxtHeureFin

If TxtMinuteFin < TxtMinuteDebut Then
CalculMinuteFin = TxtMinuteFin + 60
End If

If TxtHeureFin < TxtHeureDebut Then
CalculHeureFin = TxtHeureFin + 24
End If


TxtHeureResultat = CalculHeureFin - TxtHeureDebut
TxtMinuteResultat = CalculMinuteFin - TxtMinuteDebut
Txtohsupp = TxtHeureResultat - 6
Txtomsupp = TxtMinuteResultat - 30

Textheurenuit = H2 - TxtHeureDebut

Textminnuit = M2 - TxtMinuteDebut

Text3.Text = DTPicker1 & " " & TxtHeureDebut & " H " & TxtMinuteDebut & " " & TxtHeureFin & " H " & TxtMinuteFin & " " & TxtHeureResultat & " H " & TxtMinuteResultat & " " & Txtohsupp & " H " & Txtomsupp & " " & Textheurenuit & " H " & Textminnuit & vbCrLf

End Sub

Private Sub Command2_Click()

List1.Clear
End Sub


Private Sub Command3_Click()
List1.AddItem Text3.Text
End Sub

Private Sub Command4_Click()
Call Sauveliste(Me.List1)
End Sub

Private Sub Command5_Click()
Call Ouvreliste(Me.List1)
End Sub

Private Sub Form_Load()

End Sub

Private Sub List1_Click()

If List1.ListIndex <> -1 Then
MsgBox List1.List(List1.ListIndex)
End If

End Sub


Private Sub options_Click()
Form2.Show
End Sub



Private Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then
List1.AddItem Text3.Text
Text3.SelStart = -1
Text3.SelLength = Len(Text3.Text)
End If
End Sub
Private Sub Sauveliste(LaListe As ListBox)

Open App.Path & "\" & "laliste.lst" For Output As 1
For i = 0 To List1.ListCount - 1
LaListe.ListIndex = i
Print #1, LaListe.Text
Next
Close 1
End Sub
Private Sub Ouvreliste(LaListe As ListBox)
Open App.Path & "\" & "laliste.lst" For Input As 1
Do Until EOF(1)
Line Input #1, MaString
LaListe.AddItem MaString
Loop
Close 1
End Sub

pour ma form2
Private Sub Document1_GotFocus()
Open App.Path & "\" & "laliste.lst" For Input As 1
Do Until EOF(1)
Line Input #1, MaString
LaListe.AddItem MaString
Loop
Close 1
End Sub



Private Sub Command1_Click()

End Sub

Private Sub Form_Load()

End Sub

Private Sub Label1_Click()
sa c est ma colonne date
End Sub

Private Sub Label2_Click()
sa c est ma colonne heure embauche
End Sub

Private Sub Label3_Click()
sa c est ma colonne fin de service
End Sub

Private Sub Label4_Click()
sa c est ma colonne total heure jour
End Sub

Private Sub Label5_Click()
sa c est ma colonne heure supp
End Sub

Private Sub Label6_Click()
sa c est ma colonne total heure nuit
End Sub

Private Sub ListView1_Click()

End Sub

j espère que sa vas mieux te parler
j attend vite une reponce de ta part et encore merci
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
8 nov. 2008 à 19:16
Quand tu dit Form1 et Form2 c'est quoi ?
Tu est en VB6 ?
A+
0
ocejade17 Messages postés 12 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 25 février 2009
8 nov. 2008 à 19:25
oui je travail en vb6

form1 ma feuille principal
form2 ma feuille secondaire
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
8 nov. 2008 à 21:45
Donc, si j'ai compris tu veux mettre le contenu de la liste de la forme 1 dans la liste de la forme 2 ?
A+
EDIT:
A tout hazard..
'Dans Load de Form2
Private Sub Form_Load()
    For i = 0 To Form1.List1.ListCount - 1
        List1.AddItem Form1.List1.List(i)
    Next i
End Sub

0
ocejade17 Messages postés 12 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 25 février 2009
9 nov. 2008 à 07:27
en gros oui sauf que dans la form2 c est une listview

j ai tester ton code et sa me sort une erreur d exécution 424 ( un objet et requis ) pourquoi ?

comme tu a pu le voir ma listbox1 est enregistre dans un dossier nome laliste on peut pas l ouvrir directement dans la listiew en ouvrant la form2 ?

A BIENTOT
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
9 nov. 2008 à 10:34
Re,
Si, j'ai bien vu que tu employas un fichier, mais dans la forme 2 ce n'est pas nécessaire d'ouvrir le fichier à nouveau puisque les données sont déjà dans la liste de la forme 1
et concernant la forme2, LaListe c'est une ListView ? Quel est l'intéret de mettre une ListView alors qu'il n'y a q'une seule "Node" ?

pour la remplir voir...
Il faut la lier avec un contrôle ImageList et y ajouter des images
   'Remplir le Treeview
   Dim nodX As Node
   Set nodX = TreeView1.Nodes.Add(, , "Clé", "Texte de la Node", 1)

1 = le N° de l'icône dans ImageList1
Tu dit...
0
ocejade17 Messages postés 12 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 25 février 2009
11 nov. 2008 à 14:19
bonjour

bon j en suis toujours au mémé point malgré ton aide qui est très bien

mon fichier laliste est un enregistrement de ma liste1 et je souhaite que dans ma form2 la mise en page soit différente
c est a dire avec des colonnes qui sépare chaque donnés avec aussi des entête sur chaque colonnes je penser qu avec une listview on pouvez le faire mais je vois que non alors avec quoi je peut le faire ?


au secours j en est marre

a bientôt
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191 > ocejade17 Messages postés 12 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 25 février 2009
11 nov. 2008 à 14:23
Re,
Avec un FlexGrid, tu en met un sur la forme tu le sélectionne et tu tape F1, tu aurras les explications nécessaires pour commencer et quand tu bloque, revient.
A+
0
ocejade17 Messages postés 12 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 25 février 2009 > lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020
14 nov. 2008 à 12:36
salut a toi

je suis sur l étude du flexgrid comme tu me la conseiller .c est vrai que c est mieux je peut crée mes colonnes et pour le reste pour l instant je rame car pour ouvrir mon fichier j ai pas encore trouver mais ça vas venir pour la touche f1 on oublie pas avec ma version de vb6 donc pas de msdn

grâce a toi sa avance bien par contre si tu a teste mon code tu a due voir qu au niveau des heures supp çà coince tu en pense quoi ?

a bientôt
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
14 nov. 2008 à 18:35
L'approche pour le calcul des heures n'est pas fameuse, mais ça dépend de la façon dont tu les met dans le fichier.
Faudrait que les variables soient déclarée en long et travailler avec des TimeSerial.
Charge le projet Sur Cjoint tu le dézipe.
Je crois que c'est un bon exemple pour travailler avec des dates et heures, il y a aussi un MSHFlexGrid qui devrait être une bonne démo.
Il y a assez bien d'explications
A+

0
bonjour a toi

bon je te répond tardivement car pas u le temps de travailler sur mon prog .
ta ma conseiller un ms flexgrid ca marche mais je n arrive pas a centre mon texte dans la ligne deux .
voici l exemple que j ais utiliser pour ouvrir mon fichier texte
Private Sub Form_Load()
Dim laliste As String
Open App.Path & "\" & "laliste.lst" For Input As 1
Do Until EOF(1)
Line Input #1, mastring
MSFlexGrid1.AddItem mastring
Loop
Close 1
MSFlexGrid1.ColWidth(0) = 6500
MSFlexGrid1.Row = 0
MSFlexGrid1.Text = " date" & " " & " heures embauches " & " " & " fin services " & " " & " Heures supp " & " " & " Heures nuit " & vbCrLf


MSFlexGrid1.Cols = 1
'permet de mettre le titre sur 2 lignes
MSFlexGrid1.WordWrap = True
'on modifie la hauteur de la ligne de titre afin qu'il soit visible
MSFlexGrid1.RowHeight(0) = 600
'on se place sur la 1re ligne
MSFlexGrid1.Row = 0
'pour chaque colonne:
For c = 1 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Col = c
'on centre le titre
MSFlexGrid1.CellAlignment = 4

MSFlexGrid1.CellAlignment = flexAlignLeftCenter
Next c
End Sub

Sub Format_Grille()
Set Fg = Grille
'écrit le titre des colonnes
'< = le contenu de la colonne est alligné à gauche
'> = le contenu de la colonne est alligné à droite
s$ = "<Code|<Titre|<Nom des Auteurs|>Quantité"
Fg.FormatString = s$
'permet de mettre le titre sur 2 lignes
Fg.WordWrap = True
'on modifie la hauteur de la ligne de titre afin qu'il soit visible
Fg.RowHeight(0) = 500
'on se place sur la 1re ligne
Fg.Row = 0
'pour chaque colonne:
For c = 0 To Fg.Cols - 1
Fg.Col = c
'on centre le titre
Fg.CellAlignment = 4
'on définit la largeur des colonnes
Fg.ColWidth(c) = 960
Next c

End Sub

donne moi le conseille qu il me manque s il te plait
a bientot
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
5 déc. 2008 à 22:26
CellAlignement n'intervient que sur la cellule active déterminée par Col et Row
pour aligner par colonne voir
    Fg.ColAlignment(x) = flexAlignCenterCenter 'pour centre/Centrer les colonnes 'normales'
    Fg.ColAlignmentFixed(x) = flexAlignCenterCenter ' idem pour colonnes titres

Tu emploi un Grid mais tu met tout dans une seule colonne ? je ne vois pas l'intérèt de pratiquer comme cela, tu devrais mettre chaque titres dans une colonne et chaque données dans des colonnes séparées!
Je te rappel que ta première idée était de mettre dans des colonnes séparées !!

Si tu veu faire un Clip avec ton entrée fichier...(il faut 5 colonnes)
mastring  = "date" & vbTab  & " heures embauches " & vbTab   & " fin services " &  vbTab  & " Heures supp " &  vbTab  & "Heures nuit " 
    with MSFlexGrid1
        .ro = 0 : .Col = 0
        .Text = mastring  
    end with

Et pour sauver tes données ou les lire voir du côté de la propriété Clip, mais je vais pas tout dire d'une fois,
A+
0
ocejade17 Messages postés 12 Date d'inscription samedi 8 novembre 2008 Statut Membre Dernière intervention 25 février 2009
4 janv. 2009 à 14:08
bonjour lermite 222

je reviens ver toi pour plus de conseille sur le flexgrid j ais trouver l exemple qui suit mais je peux pas faire un row de titre et puis explique moi comment entre ma listbox dans mais cellule ???


exemple
Option Explicit
Private Sub Command1_Click()

Dim oWord As Word.Application
Dim oDoc As Word.Document
Dim oRange As Word.Range

'Dim oWord As Object
'Dim oDoc As Object
'Dim oRange As Object
Dim row As Integer
Dim col As Integer
Dim i As Integer
Dim n As Integer
Dim sTemp As String
Dim arr() As String

ReDim arr(MSFlexGrid1.Rows - 1, MSFlexGrid1.Cols - 1)

'Créer une instance de word
Set oWord = CreateObject("Word.Application")

'rendre le document word visible
oWord.Visible = True

'Ouivrir un nouveau document
Set oDoc = oWord.Documents.Add

For row = 0 To MSFlexGrid1.Rows - 1
n = 0
For col = 0 To MSFlexGrid1.Cols - 1
arr(i, n) = MSFlexGrid1.TextMatrix(row, col)
n = n + 1
Next
i = i + 1
Next

'ENregistrer sur un tableau
For i = LBound(arr, 1) To UBound(arr, 1)
For n = LBound(arr, 2) To UBound(arr, 2)
sTemp = sTemp & arr(i, n)
If n = UBound(arr, 2) Then
sTemp = sTemp & vbCrLf
Else
sTemp = sTemp & vbTab
End If
Next
Next

'Avoir l'emplacelent sur le document
Set oRange = oDoc.Bookmarks("\EndOfDoc").Range

oRange.Text = sTemp

'Convertire le format et le texte
oRange.ConvertToTable vbTab, Format:=wdTableFormatColorful2

Set oRange = Nothing

End Sub


Private Sub Form_Load()

Dim i As Integer
Dim n As Integer
'Alimenter FlexGrid
With MSFlexGrid1
.MergeCells = 1
MSFlexGrid1.MergeRow(1) = True
.Rows = 2
.Cols = 6
.MergeCells = 0
.MergeRow(0) = True

.ColWidth(1) = 1100
.ColWidth(2) = 1100
.ColWidth(3) = 1100
.ColWidth(4) = 1100
.ColWidth(5) = 1100
.TabStop = False
'Ajouter filds

.row = 0


.Text = "relever d heures "
.row = 1
.col = 0
.Text = "date "
.row = 1
.col = 1
.Text = "heure embauche "
.row = 1
.col = 2
.Text = "fin service "
.row = 1
.col = 3
.Text = "total jour "
.row = 1
.col = 4
.Text = "heure supp "
.row = 1
.col = 5
.Text = "heure nuit "
'Ajouter des données
For i = 1 To 31
.Rows = .Rows + 1
.row = .Rows - 1
.col = 0
.Text = DTPicker1
For n = 1 To 5
.col = n
.Text = "Row " & i & ",Col " & n
Next
Next
End With

End Sub
j espere avoir vite de tes nouvelles et encore merci
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
5 janv. 2009 à 10:47
Re,

Met les formes , le projet et un fichier, enfin tout le répertoir quoi.. dans un zip et met sur Cjoint.
Parce que comme ça ça peut durer longtemps.
Ensuite tu met le lien dans un poste suivant.
0
bonjour a toi lermite 222

comme tu me la demander voila l adresse ou ce trouve mon projet https://www.cjoint.com/?bukYL5LrCt
tu pourras mieux comprendre mes problème et pouvoir m aider plus efficacement
enfin grasse a toi j ais énormément progresser

je reste dans l attente de t on soutien

a bientot
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
18 janv. 2009 à 23:21
Bonjour,
Tu peu pas me metrtre ça en ZIP, j'ai pas de logiciel installé pour les Rar
0
bonjour a toi

j espéré que ce lien vas mieux te convenir https://www.cjoint.com/?bwsQTncO3c

je reste en contact pour tes question

a plus merci
0
bonjour lermite 222

j ais fait ce que tu m a dit mais je n ais pas vus si tu avait bien reçu ma source.
parce que je l ais déposer sur le site codes-sources a ce lien https://codes-sources.commentcamarche.net/ regarde si tu peut m aider avec le flexgrid (a enregistrer et a ouvrir les donner)

j espéré avoir de tes nouvelles bientôt et encore merci
0