Multi colone dans une listview

ocejade17 Messages postés 12 Statut Membre -  
 ocejade17 -
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
Configuration: Windows Vista
Firefox 3.0.3

9 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  2. ocejade17 Messages postés 12 Statut Membre
     
    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
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Quand tu dit Form1 et Form2 c'est quoi ?
    Tu est en VB6 ?
    A+
    0
    1. ocejade17 Messages postés 12 Statut Membre
       
      oui je travail en vb6

      form1 ma feuille principal
      form2 ma feuille secondaire
      0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1. ocejade17 Messages postés 12 Statut Membre
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1. ocejade17 Messages postés 12 Statut Membre
       
      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
      1. lermite222 Messages postés 9042 Statut Contributeur 1 199 > ocejade17 Messages postés 12 Statut Membre
         
        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
      2. ocejade17 Messages postés 12 Statut Membre > lermite222 Messages postés 9042 Statut Contributeur
         
        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
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1. ocejade17
       
      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
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1. ocejade17 Messages postés 12 Statut Membre
       
      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
  9. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1. ocejade17
       
      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
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Tu peu pas me metrtre ça en ZIP, j'ai pas de logiciel installé pour les Rar
    0
    1. ocejade17
       
      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