IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Ouvrir un fichier dans listview sans openfiledialog


Sujet :

VB.NET

  1. #1
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut Ouvrir un fichier dans listview sans openfiledialog
    Bonjour,
    J'ai crée une listview ou je viens ajouter des infos dans 4 colonnes. J'ai un bouton pour sauvegarder en un fichier .txt et un autre bouton pour le recharger.
    Je voudrais le charger automatiquement sans utiliser le OpenFileDialog.
    Comment dois je faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Recharger_Click(sender As Object, e As EventArgs) Handles Recharger.Click
            Using Ouvrir As New OpenFileDialog
                Ouvrir.Filter = "Texte|*.txt" 'Pour plusieurs extensions on fait: Texte|*.txt|Application|*.exe|Tous|*.*
                If Ouvrir.ShowDialog() = DialogResult.OK Then
                    RechargerLesDonnées(ListView1, Ouvrir.FileName)
                End If
     
            End Using
    End Sub
    Merci

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Si tu connais le chemin du ficher de sauvegarde, tu n'as pas besoin de OpenDialog.
    Pour la mise à jour automatique, tu peux mettre en place un FileSystemWatcher pour détecter quand il est modifié.

  3. #3
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    Merci pour votre réponse oui je connais le chemin je dois ouvrir le fichier et le charger dans une listview.


    RechargerLesDonnées(ListView1, C: \test\test.txt) '?

    Merci

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    A partir du moment où vous sauvegarder le contenu de votre ListView dans un fichier, cela signifie que vous connaissez son chemin à un moment donné.
    Il suffit simplement de le garder dans un variable puis de relire ce même fichier en vous basant sur la variable.

    Du coup je ne comprend pas pourquoi vous avez encore un problème avec OpenDialog
    Votre code n'en a plus besoin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Recharger_Click(sender As Object, e As EventArgs) Handles Recharger.Click
     
          RechargerLesDonnées(ListView1, VariableContenantLeCheminDuFichierSauvegardéAvecLePremierBouton)
     
    End Sub

  5. #5
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    Ah ok je commence à comprendre
    J'utilise ça pour sauvegarder donc je reprend la variable sauve.FileName
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sauvegarderlesdonnees(ListView1, sauve.FileName)
    Je vais teste merci

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Non, ce n'est toujours pas ça.
    Bouton de sauvegarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.DataFile = sauve.FileName
    sauvegarderlesdonnees(ListView1, Me.DataFile)
    Puis dans le code qui recharge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RechargerLesDonnées(ListView1, Me.DataFile)

  7. #7
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    Merci pour votre réponse

    Sur le bouton sauvegarde j'ai RechargerLesDonnées en rouge et sauve pourtant c'est déclarer plus haut avec Sub sauvegarderlesdonnees(ByVal liste As ListView, ByVal fichier As String).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Private Sub sauvegarder_Click(sender As Object, e As EventArgs) Handles sauvegarder.Click
            RechargerLesDonnées = sauve.FileName
            sauvegarderlesdonnees(ListView1, RechargerLesDonnées)
        End Sub
     
     
    End Class
    J'ai un peu de mal désolé

  8. #8
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    RechargerLesDonnées = sauve.FileName

    RechargerLesDonnées est un méthode
    sauve.FileName est une chaîne


    Je t'ai pourtant donné le code à mettre et leur emplacement
    Où est passé Me.DataFile ?

  9. #9
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    si je met me.datafile j'ai un message erreur n'est pas un membre de listing
    Je m'arrache les cheveux rrrrr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Public Class Form1
     
        Dim posteatelier As String
     
        Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
     
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Boutonmagasin.Click
            Magasin.Labelmagasin.Text = "Magasin"
            Magasin.ShowDialog()
     
        End Sub
     
        Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
     
     
            posteatelier = Poste.Text
            Création.Labelarticles.Text = posteatelier
     
     
     
     
     
            RechargerLesDonnées(ListView1, Me.DataFile)
     
     
     
     
     
            Création.ShowDialog()
     
     
     
     
        End Sub
     
        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Poste.SelectedIndexChanged
     
        End Sub
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
        End Sub
     
        Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
     
        End Sub
     
        Private Sub Listing_Click(sender As Object, e As EventArgs) Handles boutonlisting.Click
            Listing.ShowDialog()
        End Sub
     
        Private Sub Poste_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Poste.SelectedIndexChanged
     
        End Sub
     
        Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click
     
        End Sub
     
        Private Sub Boutonmagasin_Click(sender As Object, e As EventArgs) Handles Boutonmagasin.Click
     
        End Sub
     
        Private Sub Button2_Click_2(sender As Object, e As EventArgs) Handles Button2.Click
            RechargerLesDonnées(ListView1, Me.DataFile)
        End Sub
    End Class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    Public Class Listing
        Private Sub ajouter_Click(sender As Object, e As EventArgs) Handles ajouter.Click
     
            ListView1.Items.Add(New ListViewItem(New String() {TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text}))
            TextBox1.Clear()
            TextBox2.Clear()
            TextBox3.Clear()
            TextBox4.Clear()
     
            'Dim element As New ListViewItem
            'element.Text = TextBox1.Text
            ' element.SubItems.Add(TextBox2.Text)
            ' element.SubItems.Add(TextBox3.Text)
            ' element.SubItems.Add(TextBox4.Text)
     
     
            ' ListView1.Items.Add(element)
     
        End Sub
     
        Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
     
            If ListView1.SelectedItems.Count > 0 Then
                Dim element As ListViewItem = ListView1.SelectedItems(0)
                TextBox1.Text = element.Text
                TextBox2.Text = element.SubItems(1).Text
                TextBox3.Text = element.SubItems(2).Text
                TextBox4.Text = element.SubItems(3).Text
            Else
                TextBox1.Text = ""
                TextBox2.Text = ""
                TextBox3.Text = ""
                TextBox4.Text = ""
     
            End If
     
     
     
        End Sub
     
        Private Sub supprimer_Click(sender As Object, e As EventArgs) Handles supprimer.Click
            If ListView1.SelectedItems.Count > 0 Then
                Dim element As ListViewItem = ListView1.SelectedItems(0)
                ListView1.Items.Remove(element)
            End If
     
     
     
     
     
        End Sub
     
        Private Sub Listing_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
            'ListView1.Items.Add(New ListViewItem({"3360", "7016G", "unité", "33607016G"}))
            ' ListView1.Items.Add(New ListViewItem({"3358", "7016G", "unité", "33607016G"}))
     
     
     
        End Sub
     
        Private Sub modifier_Click(sender As Object, e As EventArgs) Handles modifier.Click
     
            If ListView1.SelectedItems.Count > 0 Then
                Dim element As ListViewItem = ListView1.SelectedItems(0)
                element.Text = TextBox1.Text
                element.SubItems(1).Text = TextBox2.Text
                element.SubItems(2).Text = TextBox3.Text
                element.SubItems(3).Text = TextBox4.Text
            End If
     
     
     
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles sauvegarder.Click
            Using sauve As New SaveFileDialog
                sauve.Filter = "Fichier texte|*.txt"
     
                If sauve.ShowDialog() = DialogResult.OK Then
     
                    sauvegarderlesdonnees(ListView1, sauve.FileName)
     
                End If
     
            End Using
     
     
        End Sub
     
        Sub sauvegarderlesdonnees(ByVal liste As ListView, ByVal fichier As String)
     
            Dim itemsplit As String = "(*E*)"
            Dim colonnesplit As String = "(*C*)"
            Dim build As New Text.StringBuilder()
            Dim nelement As Integer = liste.Items.Count
     
     
            For Each element As ListViewItem In liste.Items
     
     
                For i As Integer = 0 To liste.Columns.Count - 1
                    build.Append(element.SubItems(i).Text)
                    If (i < liste.Columns.Count - 1) Then
                        build.Append(colonnesplit)
                    End If
     
                Next
                build.Append(itemsplit) 'articles(*C*).....
            Next
     
            Try
                IO.File.WriteAllText(fichier, build.ToString())
                MessageBox.Show("sauvegardé")
            Catch ex As Exception
                MessageBox.Show(ex.Message, "erreur")
     
            End Try
     
        End Sub
     
        Sub RechargerLesDonnées(ByVal Liste As ListView, ByVal Fichier As String)
            Liste.Items.Clear()
            Dim ItemSplit As String = "(*E*)"
            Dim ColonneSplit As String = "(*C*)"
     
     
            Try 'Au cas d'erreur
                If IO.File.Exists(Fichier) Then 'Si le fichier existe
     
                    Dim LesDonnées As String = IO.File.ReadAllText(Fichier) 'Lire toute les données
                    Dim LesElements() As String = LesDonnées.Split(New String() {ItemSplit}, StringSplitOptions.RemoveEmptyEntries) 'Séparer avec (*E*)
     
                    For Each element As String In LesElements 'Pour chaque éléments dans LesElements()
                        If (element.Contains(ColonneSplit)) Then 'Si ça contient le séparateur (*C*)
     
                            Dim LesValeurs() As String = element.Split(New String() {ColonneSplit}, StringSplitOptions.None) 'Séparer avec (*C*)
                            Dim NouveauElement As New ListViewItem 'Nouveau élément a ajouter dans la ListView
     
                            For i As Integer = 0 To LesValeurs.Length - 1 'Pour chaque valeur dans  LesValeurs()
                                If i = 0 Then 'Si c'est la première valeur
                                    NouveauElement.Text = LesValeurs(i) 'Ajouter la valeur dans la première colonne.
                                Else 'Si non l'ajouter dans les autres colonnes
                                    NouveauElement.SubItems.Add(LesValeurs(i)) 'Si i = 1 donc c'est la deuxième colonne etc
                                End If
                            Next
                            Liste.Items.Add(NouveauElement) 'Ajouter l'élément a la ListView
     
                        End If
                    Next
     
     
                End If
     
     
     
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Erreur")
            End Try
     
     
        End Sub
     
        Private Sub Recharger_Click(sender As Object, e As EventArgs) Handles Recharger.Click
            RechargerLesDonnées(ListView1, T:  \Maintenance\Pilotage\Poste de reappro\Articles\articles.txt)
            Using Ouvrir As New OpenFileDialog
                Ouvrir.Filter = "Texte|*.txt" 'Pour plusieurs extensions on fait: Texte|*.txt|Application|*.exe|Tous|*.*
                If Ouvrir.ShowDialog() = DialogResult.OK Then
                    RechargerLesDonnées(ListView1, Ouvrir.FileName)
                End If
     
            End Using
        End Sub
     
        Private Sub recherche_TextChanged(sender As Object, e As EventArgs)
     
        End Sub
     
        Private Sub recherche_TextChanged_1(sender As Object, e As EventArgs) Handles recherche.TextChanged
     
     
     
     
     
     
        End Sub
     
        Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
     
        End Sub
     
        Private Sub sauvegarder_Click(sender As Object, e As EventArgs) Handles sauvegarder.Click
     
            Me.DataFile = sauve.FileName
            sauvegarderlesdonnees(ListView1, Me.DataFile)
        End Sub
     
     
    End Class

  10. #10
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    J'ai volontairement mis le terme "Me" pour t'indiquer où déclarer "DataFile"...

    "Me" représente l'instance de ton Objet, et donc ta fiche Listing dans ce cas là.
    Il suffit de déclarer la variable "DataFile" dans ta fiche Listing...

    Sur Form1, il n'y a aucun référence à RechargerLesDonnées puisque cette méthode est propre à Listing.
    Cela ne peux pas fonctionner.

  11. #11
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    Merci pour les conseils je découvre petit a petit.

    Je vais tester demain listing mais pour form1 tu m'avais dit de la mettre a rechargé, et RechargerLesDonnées et dans listing comment faire ?

    RechargerLesDonnées(ListView1, Me.DataFile).
    Merci

  12. #12
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Citation Envoyé par trucss Voir le message
    mais pour form1 tu m'avais dit de la mettre a rechargé, et RechargerLesDonnées et dans listing comment faire ?
    Je n'ai rien dit de tel.
    Je ne connaissais de ton code que ce tu en as dit. Or, tu avais uniquement parlé de deux boutons.

    Avec plusieurs fiches qui doivent appeler les mêmes procédures de chargement et de sauvegarde cela change la donne et la solution va dependre des réponses à plusieurs questions.

    Ces deux fiches ont elle toutes les deux une Listview pour afficher les données ?
    Est-ce que ce sont des données structurées de la même manière ? Voire carrément les mêmes données ?
    Les données sont elles issues du même fichier ?
    Si les réponses à ces questions sont toutes positives, pourquoi as tu besoin de deux fiches différentes pour présenter les mêmes données de la même façon ?

  13. #13
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    Je suis un peu perdu peux tu me dire en regardant mes codes désolé je débute et c'est peut etre un peu difficile pour un debut.
    Merci
    Fichiers attachés Fichiers attachés

  14. #14
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Citation Envoyé par trucss Voir le message
    Je suis un peu perdu peux tu me dire en regardant mes codes désolé je débute et c'est peut etre un peu difficile pour un debut.
    Merci
    Je ne téléchargerai pas ton fichier (pour des raisons de sécurité).

    Et, les questions que je t'ai posé n'ont absolument rien à voir avec le code.
    Ce sont des questions sur ton fonctionnel auxquelles tu n'as pas besoin de connaître VB pour répondre.

    Ces deux fiches ont elle toutes les deux une Listview pour afficher les données ?
    Pas de code, il s'agit simplement de me dire si tu as déposé un ListView sur ta Form1 (s'il y en a un tu dois le voir physiquement dans l'éditeur)

    Est-ce que ce sont des données structurées de la même manière ? Voire carrément les mêmes données ?
    Là encore, pas de code, je pose une question sur la structure de ton fichier texte et sur ces données.

    Les données sont elles issues du même fichier ?
    Toujours pas de code.
    Il s'agit de savoir si tu as un seul fichier ou plusieurs.


    Si tu ne peux pas répondre à ces questions, je ne peux pas t'orienter vers une solution adaptée.
    Donc pour le moment, je vais partir du principe que c'est Listing qui gère le chargement, l'affichage et la sauvegarde de tes données.
    Et pour que le code de Listing fonctionne, il suffit de déclarer une variable DataFile de type String dans la classe Listing.

    Pour Form1, tant que tu ne me dis pas ce qu'elle est sensé faire, je ne peux pas t'aider.

  15. #15
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    Pour répondre aux questions:
    - non je n'ai pas de listview dans form1 que dans listing
    -Oui la structure du fichier et la meme: articles,couleurs,conditionnement,codebarre
    ex:3364(*C*)7016G(*C*)barre(*C*)33647016G(*E*)
    -oui je veux charger toujours le meme fichier.

    En fait sur le form1 il faut choisir un poste de travail dans un menu deroulant et le valider et au moment de valider je voudrais que ça charge la listview dans listing.
    Et dans listing j'ai un bouton ajouter modifier et supprimer pour alimenter la listview, je peux aussi la sauvegarder et la recharger.
    Mon probléme au depart c'est que quand je cree une listview elle ne se sauvegarde pas donc je penser la recharger automatiquement.( comme si action sur bouton recharger.)

    J'espere que je suis arrivé a me faire comprendre.
    Merci encore

  16. #16
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    OK, nous avons maintenant une base de travail.

    Si je résume correctement tu voudrais que la ListView de la fenêtre Listing soit alimentée automatiquement lors de l'ouverture de ladite fenêtre.
    C'est bien ça ?

    Du coup, j'aurais une autre question:
    Est-ce que le choix du poste dans Form1 a une incidence sur l'emplacement et/ou le nom du fichier ?

  17. #17
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    -Si je résume correctement tu voudrais que la ListView de la fenêtre Listing soit alimentée automatiquement lors de l'ouverture de ladite fenêtre.
    C'est bien ça ? OUI

    -non pas d'incidence sur l'emplacement le choix du poste va juste changer le titre de la fenêtre a ouvrir et par la suite je voudrais faire une recherche d'article manuelle ou pour code barre via la listview c'est pour ça que je dois la charger.

  18. #18
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Il faut donc faire ce chargement au moment où tu charge la fenêtre Listing, c'est à dire dans l'événement Load de cette fenêtre.

    Et puisque le fichier est toujours le même, tu peux considérer que son chemin est prédéterminé.
    Et par extension, tu peux considérer que c'est la fermeture de la fiche qui va déclencher automatiquement la sauvegarde à l'endroit prédéterminé.

    Enfin, puisque la ListView fait partie de la fenêtre, tu n'est pas obligé de la fournir en paramètre des méthodes RechargerLesDonnées et sauvegarderlesdonnees.
    Ce qui fait qu'au final ces deux méthodes n'ont besoin d'aucun paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Imports System.Environment
    Imports System.IO
     
    Public Class Listing
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            ChargerLesDonnees()
        End Sub
     
        Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
            SauverLesDonnees()
        End Sub
     
        Private Sub ChargerLesDonnees()
            Liste.Items.Clear()
            Dim ItemSplit As String = "(*E*)"
            Dim ColonneSplit As String = "(*C*)"
     
            Try
                'Code tronqué pour simplifier
     
                Dim LesDonnees As String = File.ReadAllText(DataFile)
     
            Catch ex As Exception
     
            End Try
        End Sub
     
        Private Sub SauverLesDonnees()
            Dim itemsplit As String = "(*E*)"
            Dim colonnesplit As String = "(*C*)"
            Dim build As New Text.StringBuilder()
            Dim nelement As Integer = Liste.Items.Count
     
     
            For Each element As ListViewItem In Liste.Items
                'Code tronqué pour simplifier
            Next
     
            Try
                File.WriteAllText(DataFile, build.ToString())
     
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Erreur")
            End Try
        End Sub
     
        Private DataFile As String = Path.Combine(GetFolderPath(SpecialFolder.ApplicationData), "MyApplication", "MyFile.Txt")
     
    End Class
    Edit :
    Il faut toutefois avoir conscience que si tu as un gros fichier à charger, cela peut retarder l'affichage de la fenêtre.
    Dans ce cas, il faudra mettre en place un mécanisme de chargement plus souple.
    Mais nous n'en sommes pas encore là...

  19. #19
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2021
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2021
    Messages : 117
    Par défaut
    bonjour,
    Je voudrais charger la liste automatiquement quand j’appuie sur le bouton valider dans le module form1 car dans le module listing c'est juste pour crée ou modifié des articles.

    code form1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Public Class Form1
     
        Dim posteatelier As String
     
        Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
     
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Boutonmagasin.Click
            Magasin.Labelmagasin.Text = "Magasin"
            Magasin.ShowDialog()
     
        End Sub
     
        Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
     
            posteatelier = Poste.Text
            Création.Labelarticles.Text = posteatelier
     
            Création.ShowDialog()
     
        End Sub
     
        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Poste.SelectedIndexChanged
     
        End Sub
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
        End Sub
     
        Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
     
        End Sub
     
        Private Sub Listing_Click(sender As Object, e As EventArgs) Handles boutonlisting.Click
            Listing.ShowDialog()
        End Sub
     
        Private Sub Poste_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Poste.SelectedIndexChanged
     
        End Sub
     
        Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click
     
        End Sub
     
        Private Sub Boutonmagasin_Click(sender As Object, e As EventArgs) Handles Boutonmagasin.Click
     
        End Sub
     
        Private Sub Button2_Click_2(sender As Object, e As EventArgs) Handles Button2.Click
     
        End Sub
    End Class
    Code listing
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    Private Sub ajouter_Click(sender As Object, e As EventArgs) Handles ajouter.Click
     
            ListView1.Items.Add(New ListViewItem(New String() {TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text}))
            TextBox1.Clear()
            TextBox2.Clear()
            TextBox3.Clear()
            TextBox4.Clear(
     
        End Sub
     
        Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged
     
            If ListView1.SelectedItems.Count > 0 Then
                Dim element As ListViewItem = ListView1.SelectedItems(0)
                TextBox1.Text = element.Text
                TextBox2.Text = element.SubItems(1).Text
                TextBox3.Text = element.SubItems(2).Text
                TextBox4.Text = element.SubItems(3).Text
            Else
                TextBox1.Text = ""
                TextBox2.Text = ""
                TextBox3.Text = ""
                TextBox4.Text = ""
     
            End If
     
        End Sub
     
        Private Sub supprimer_Click(sender As Object, e As EventArgs) Handles supprimer.Click
            If ListView1.SelectedItems.Count > 0 Then
                Dim element As ListViewItem = ListView1.SelectedItems(0)
                ListView1.Items.Remove(element)
            End If
     
     
     
     
     
        End Sub
     
        Private Sub Listing_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
     
        End Sub
     
        Private Sub modifier_Click(sender As Object, e As EventArgs) Handles modifier.Click
     
            If ListView1.SelectedItems.Count > 0 Then
                Dim element As ListViewItem = ListView1.SelectedItems(0)
                element.Text = TextBox1.Text
                element.SubItems(1).Text = TextBox2.Text
                element.SubItems(2).Text = TextBox3.Text
                element.SubItems(3).Text = TextBox4.Text
            End If
     
     
     
        End Sub
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles sauvegarder.Click
            Using sauve As New SaveFileDialog
                sauve.Filter = "Fichier texte|*.txt"
     
                If sauve.ShowDialog() = DialogResult.OK Then
     
                    sauvegarderlesdonnees(ListView1, sauve.FileName)
     
                End If
     
            End Using
     
     
        End Sub
     
        Sub sauvegarderlesdonnees(ByVal liste As ListView, ByVal fichier As String)
     
            Dim itemsplit As String = "(*E*)"
            Dim colonnesplit As String = "(*C*)"
            Dim build As New Text.StringBuilder()
            Dim nelement As Integer = liste.Items.Count
     
     
            For Each element As ListViewItem In liste.Items
     
     
                For i As Integer = 0 To liste.Columns.Count - 1
                    build.Append(element.SubItems(i).Text)
                    If (i < liste.Columns.Count - 1) Then
                        build.Append(colonnesplit)
                    End If
     
                Next
                build.Append(itemsplit) 'articles(*C*).....
            Next
     
            Try
                IO.File.WriteAllText(fichier, build.ToString())
                MessageBox.Show("sauvegardé")
            Catch ex As Exception
                MessageBox.Show(ex.Message, "erreur")
     
            End Try
     
        End Sub
     
        Sub RechargerLesDonnées(ByVal Liste As ListView, ByVal Fichier As String)
            Liste.Items.Clear()
            Dim ItemSplit As String = "(*E*)"
            Dim ColonneSplit As String = "(*C*)"
     
     
            Try 'Au cas d'erreur
                If IO.File.Exists(Fichier) Then 'Si le fichier existe
     
                    Dim LesDonnées As String = IO.File.ReadAllText(Fichier) 'Lire toute les données
                    Dim LesElements() As String = LesDonnées.Split(New String() {ItemSplit}, StringSplitOptions.RemoveEmptyEntries) 'Séparer avec (*E*)
     
                    For Each element As String In LesElements 'Pour chaque éléments dans LesElements()
                        If (element.Contains(ColonneSplit)) Then 'Si ça contient le séparateur (*C*)
     
                            Dim LesValeurs() As String = element.Split(New String() {ColonneSplit}, StringSplitOptions.None) 'Séparer avec (*C*)
                            Dim NouveauElement As New ListViewItem 'Nouveau élément a ajouter dans la ListView
     
                            For i As Integer = 0 To LesValeurs.Length - 1 'Pour chaque valeur dans  LesValeurs()
                                If i = 0 Then 'Si c'est la première valeur
                                    NouveauElement.Text = LesValeurs(i) 'Ajouter la valeur dans la première colonne.
                                Else 'Si non l'ajouter dans les autres colonnes
                                    NouveauElement.SubItems.Add(LesValeurs(i)) 'Si i = 1 donc c'est la deuxième colonne etc
                                End If
                            Next
                            Liste.Items.Add(NouveauElement) 'Ajouter l'élément a la ListView
     
                        End If
                    Next
     
     
                End If
     
     
     
            Catch ex As Exception
                MessageBox.Show(ex.Message, "Erreur")
            End Try
     
     
        End Sub
     
        Private Sub Recharger_Click(sender As Object, e As EventArgs) Handles Recharger.Click
            RechargerLesDonnées(ListView1, T:    \Maintenance\Pilotage\Poste de reappro\Articles\articles.txt)
            Using Ouvrir As New OpenFileDialog
                Ouvrir.Filter = "Texte|*.txt" 'Pour plusieurs extensions on fait: Texte|*.txt|Application|*.exe|Tous|*.*
                If Ouvrir.ShowDialog() = DialogResult.OK Then
                    RechargerLesDonnées(ListView1, Ouvrir.FileName)
                End If
     
            End Using
        End Sub
     
        Private Sub recherche_TextChanged(sender As Object, e As EventArgs)
     
        End Sub
     
        Private Sub recherche_TextChanged_1(sender As Object, e As EventArgs) Handles recherche.TextChanged
     
     
     
     
     
     
        End Sub
     
        Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
     
        End Sub
     
        Private Sub sauvegarder_Click(sender As Object, e As EventArgs) Handles sauvegarder.Click
     
        End Sub
     
     
    End Class

  20. #20
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 978
    Par défaut
    Citation Envoyé par trucss Voir le message
    bonjour,
    Je voudrais charger la liste automatiquement quand j’appuie sur le bouton valider dans le module form1 car dans le module listing c'est juste pour crée ou modifié des articles.
    Apparemment, nous n'avons pas la même définition du mot "listing"
    Ta fiche listing affiche tes articles dans une ListView.
    N'est-ce pas ce que tu veux faire lorsque tu cliques sur Valider dans Form1 ?
    D'ailleurs, il serait temps de commencer à nommer tes boutons de manière explicite parce que personne ne pourra deviner ce qui cache derrière Bouton1 ou Bouton2.

    Nous n'avons pas non plus la même définition du mot "créer".
    Tu ne devrais normalement pas avoir besoin d'afficher la liste de tous tes articles pour en créer un nouveau.

Discussions similaires

  1. Ouvrir un fichier dans un autre editeur ?
    Par vnabet dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 07/06/2018, 12h32
  2. Ouvrir un fichier dans son application d'origine
    Par nic1319 dans le forum Delphi
    Réponses: 5
    Dernier message: 21/05/2007, 13h56
  3. ouvrir des fichiers dans un repertoire
    Par Art19 dans le forum Delphi
    Réponses: 5
    Dernier message: 10/04/2007, 14h49
  4. Réponses: 5
    Dernier message: 17/01/2007, 12h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo