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 :

Garder en memoire valeur DataGridView


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 32
    Points : 18
    Points
    18
    Par défaut Garder en memoire valeur DataGridView
    bonjour
    je vais chercher un fichier excel que je met dans un datagridview pour avec des variables en memoire que je vais utilisé
    je souhaite les garder sans faire appel a la connexion a chaque fois car le fichier sera sur une clé usb afin personne ne puissent faire des modifications
    je ferais appel a ce fichier que si je dois modifier des valeurs en mode administrateur

    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
    Imports System.Data.SqlClient
    Public Class Form1
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                Me.OpenFileDialog1.FileName = Nothing
                If Me.OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                    Me.TextBox1.Text = Me.OpenFileDialog1.FileName
                End If
                Try
                    Dim Myconnection As System.Data.OleDb.OleDbConnection
                    Dim dataSet As System.Data.DataSet
                    Dim Mycommand As System.Data.OleDb.OleDbDataAdapter
                    Dim path As String = OpenFileDialog1.FileName
                    Myconnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data source=" + path + ";Extended Properties=Excel 12.0")
                Mycommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Feuil1$]", Myconnection)
     
                dataSet = New System.Data.DataSet
                    Mycommand.Fill(dataSet)
                    DataGridView1.DataSource = dataSet.Tables(0)
     
                    Myconnection.Close()
     
                Catch ex As Exception
                    MsgBox(ex.Message.ToString)
     
                End Try
            End Sub
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
     
        End Sub
    End Class
    merci encore

  2. #2
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Tu utilises XLS comme une table de DB et tu extrais les infos que tu veux par un SELECT ... .
    Dans ces conditions, il te "suffit" d'utiliser SQL pour toutes les opérations : UPDATE pour les mises à jour de lignes existantes, INSERT pour l'ajout de lignes, DELETE pour la suppression de lignes.

    Personnellement, je suis pour la mise à jour de la "DB" dès qu'un changement est confirmé par l'utilisateur. Mais les approches sont multiples ...


  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    Mon fichier xls me sert juste à paramètres une fois à la mise en service de l app.
    Je garde en mémoire des variables pour la suite des opérations.
    Donc je ne souhaites pas interroger à chaque fois xls afin d'éviter que tierce personnes supprime ou modifie celui-ci

  4. #4
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Attaquer une feuille XLS pour lire une fois quelques paramètres me parait bien lourd.

    Y a-t-il "tant" de paramètres ?

    Un fichier TXT avec quelques lignes (du genre fichier ini) éditable avec NotePad, ou un fichier XML, ne serait-il pas suffisant ?

    Pour en revenir à XLS, tu peux effectivement le lire avec un SELECT ce qui rend facile son affichage dans un DGV, mais tu peux enregistrer des modifs en écrivant (avec VB) directement dans les cellules de la feuille XLS. J'ai quelques exemples de manipulations de valeurs XLS à partir de VB.Net.

    ...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    Je veux bien des exemples
    Si quelqu'un supprime le fichier uni ou Excel je n'ai plus de variable.
    C'est pour cela que je souhaiterais les stocker en dur dans le programme et pouvoir modifier le cas échéant.
    J'ai environ 100 variables à traiter
    Merci de votre réponse

  6. #6
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Une centaine de variables c'est pas beaucoup.
    Avec un fichier TXT, INI, XML, CSV, ... une centaine de courtes lignes. Une centaine de lignes également dans une feuille XLS.

    Exemple, pour un TXT ou CSV, avec une ligne par variable :
    NomVariable; SaValeur;
    NomUneAUtre; LaValeurCelleCi;
    UneAutre; SaValeurAElle
    ;

    Intérêt du fichier CSV, il est accessible par le NotePad et Excel l'ouvre comme une feuille de calcul. Pour le lire en VB, System.IO.StreamReader avec un String.Split(";"). Pour l'écrire System.IO.StreamWriter.

    Exemple d'accès aux cellules XLS en VB :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Imports Excel = Microsoft.Office.Interop.Excel
    ' ... ... ...
            XLSAPP = New Excel.Application
            XLSAPP.Visible = True
            XLSAPP.Workbooks.Open("D:\Tmp\ProbExcel\Test.xls")
            XLSAPP.Sheets("Feuil1").Select()
    ' ... ... ...
            XLSAPP.Range("C4").Select()                 'sélectionner une cellule
            XLSAPP.ActiveCell.FormulaR1C1 = "359"   'y placer la valeur 359
     
            XLSAPP.Run("UneMacro")  ' appel d'une macro enregistrée dans la feuille ....
    ' ... ... ...

    Comme tu l'as annoncé précédemment, tu veux garder ce support d'infos (TXT, INI, XLS, ...) sur une clé USB de sorte à ne pas le laisser sur l'ordi. De ce côté, pas de problème.
    Mais il faut bien que tu laisses un exemplaire sur le PC où tourne le programme.
    Tu peux lancer ton programme, régler tous les paramètres comme tu veux et retirer la clé USB. Tant que le programme tourne, si l'utilisateur n'a pas le droit de modifier ces valeurs, tout ira bien. Mais que se passera-t-il si le programme doit redémarrer (suite à une coupure de courant, par exemple) ? Il faudra que tu reviennes le paramétrer.
    Le mieux sera sans doute que tu laisses un fichier de paramètres à côté de l'EXE du programme, ce fichier étant lu par le programme au démarrage. De la sorte, tu ne devras revenir avec l'USB que lorsque quelqu'un aura maladroitement touché aux paramètres et que le programme aura redémarré avec des mauvaises valeurs.

    Mais peut-être que je n'ai pas bien compris ce que tu veux faire ...

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    OK je regarde cela dès mon retour donc jeudi et je vous tiens informé
    Merci

  8. #8
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    OK. En attendant, je viens de réactualiser un ancien test de CSV.

    Vois la vidéo : https://www.dropbox.com/s/1y5eg3xpiezs0iw/CSV.mp4?dl=0

    Voici le project du programme de la vidéo : CSV_0B.zip

    A bientôt,


  9. #9
    Membre régulier
    Homme Profil pro
    Etude technique THT
    Inscrit en
    Juillet 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etude technique THT
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 84
    Points : 111
    Points
    111
    Par défaut
    Bonsoir,
    Je partage l’avis de Phil Rob (Le mieux sera sans doute que tu laisses un fichier de paramètres à côté de l'EXE du programme) mais en cryptant le fichier.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    bonjour et merci deja

    donc le code fonctionne bien par contre on se retrouve avec 2 fois le nom de la colonne

    comment fait on dans une boucle do until de lire a partir de la deuxième ligne

  11. #11
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    bonjour
    jai rajouté unopenfiledialog , le probleme est que si je recherche un fichier c'est bon cela fonctionne mais ne s'affiche pas si j'ai fait une recherche avant avec le fichier par defaut Parametres.csv
    par contre si je fait appel a celui ci au démarrage cela fonctionne
    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
    Imports System.IO
    Public Class FTest_CSV
     
        Dim NomFichier As String
        Dim LesDonnees As DataTable
     
        Private Sub FTest_CSV_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
            LesDonnees.Dispose()
        End Sub
     
        Private Sub FTest_CSV_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            NomFichier = "C:\Users\cisco\Downloads\CSV_0B\CSV_0B\Parametres.csv"
            TBFichier.Text = NomFichier
            DGVParametres.AllowUserToAddRows = True
            LesDonnees = New DataTable
            LesDonnees.Columns.Add("ROOM")
            LesDonnees.Columns.Add("STA_SiteNumber")
            LesDonnees.Columns.Add("CPT")
            LesDonnees.Columns.Add("CALO")
        End Sub
     
        Private Sub BLecture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BLecture.Click
     
            datalire()
     
        End Sub
     
        Private Sub BEcriture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BEcriture.Click
            Dim FichierAEcrire As System.IO.StreamWriter
            Dim LigneAEcrire As String
            Dim SeparateurSplit As Char() = {";"}
            NomFichier = "C:\Users\cisco\Downloads\CSV_0B\CSV_0B\Parametres.csv"
            MessageBox.Show(NomFichier)
            FichierAEcrire = New System.IO.StreamWriter(NomFichier, False, System.Text.Encoding.Default)
            For R As Integer = 0 To DGVParametres.Rows.Count - 2
                LigneAEcrire = DGVParametres.Item(0, R).Value & SeparateurSplit & DGVParametres.Item(1, R).Value & SeparateurSplit & DGVParametres.Item(2, R).Value & SeparateurSplit & DGVParametres.Item(3, R).Value
                FichierAEcrire.WriteLine(LigneAEcrire)
            Next
            FichierAEcrire.Close()
        End Sub
     
     
        Private Sub Brecherche_Click(sender As Object, e As EventArgs) Handles Brecherche.Click
            Me.OpenFileDialog1.FileName = Nothing
            If Me.OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                Me.TBFichier.Text = Me.OpenFileDialog1.FileName
            End If
            Me.DGVParametres.DataSource = Nothing
            datalire()
     
        End Sub
        Private Sub datalire()
            Dim FichierALire As System.IO.StreamReader
            Dim LigneLue As String
     
            Dim SeparateurSplit As Char() = {";"}
            Dim DonneesTMP() As String
            NomFichier = TBFichier.Text
            MessageBox.Show(NomFichier)
     
            If DGVParametres.RowCount > 0 Then
                DGVParametres.DataSource = Nothing
                DGVParametres.Rows.Clear()
            End If
     
            If Not System.IO.File.Exists(NomFichier) Then
                MessageBox.Show("Fichier " & NomFichier & " non trouvé")
                DGVParametres.DataSource = LesDonnees
                Exit Sub
            End If
     
            FichierALire = New System.IO.StreamReader(NomFichier)
     
            ' Aquisition des données
            Do Until FichierALire.Peek = -1
                LigneLue = FichierALire.ReadLine
                DonneesTMP = LigneLue.Split(SeparateurSplit)
                LesDonnees.Rows.Add(DonneesTMP)
            Loop
     
            FichierALire.Close()
            FichierALire.Dispose()
     
            ' Remplissage du DataGridView avec les données
            DGVParametres.DataSource = LesDonnees
        End Sub
    End Class

  12. #12
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Pour ne pas lire la première ligne du fichier, fais un LigneLue = FichierALire.ReadLine avant la boucle. Cette lecture sera aussitôt remplacée par le premier passage dans la boucle.

    Mais, je ne vois pas pourquoi tu obtiens 2 fois es entêtes de colonne. Tu les as enregistrées dans le fichier ?

    Si tu veux une version codée comme le suggère DD-78, j'en ai une toute simple qui produit le fichier suivant avec l'exemple de la vidéo. Mais il n'est plus valablement éditable avec le NotePad, ni avec Excel. Et puis, si quelqu'un y change un chiffre, il te faudra quand même revenir ave ton USB. Avantage, s'il y a dans ce fichier des logins et mots de passe sensibles, aucune chance de les trouver.

    Contenu codé :
    775233775571613313681571133433571233033313871421801891813481933481161
    933433313613481261313133061801101813481933481161
    901701501291301101891801313433733013933775813433641133061




  13. #13
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Je n'avais pas vu ton message de 16h47, il a dû arrivé pendant que j'écrivais le mien (de 16h53).

    Je crois que tu dois avoir une seule fois le nom du fichier dans ton programme, qu'il soit général pour le Form. Il faudra aussi lui donner le CurDir du démarrage ou le Application.StartupPath, bref, le chemin de l'EXE si ton fichier paramètre est bien enregistré à cet endroit. Pendant tes travaux de mise au point, c'est pratique de donner un chemin fixe facilement accessible.

    Pour l'instant, tu travailles sur la code que je t'ai envoyé et tu as un problème lorsque tu choisis le fichier avec l'OpenFileDialog. Tu mets le résultat de l'OpenFileDialog dans la TextBox mais cette TextBox ne sert qu'à nous informer. En fait dans le Form_Load, j'utilise la variable NomFichier.

    J'espère que j'ai bien compris le problème et que ceci t'aidera.


  14. #14
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    merci 1er probleme resolu

    je garde bien NomFichier = TBFichier.Text

    le probleme est quil ne charge pas les données , il me met les anciennes

  15. #15
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Désolé, j'ai oublié une ligne ... ça arrive trop souvent ...

    Il faut ajouter la ligne LesDonnees.Clear() là où on vide le DGV.

    Voici ton code corrigé :
    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
     
    Imports System.IO
    Public Class FTest_CSV
     
        Dim NomFichier As String = "C:\Users\cisco\Downloads\CSV_0B\CSV_0B\Parametres.csv"
        ' Dim NomFichier As String = "D:\Tmp\CSV_0B\Parametres.csv"
        Dim LesDonnees As DataTable
     
        Private Sub FTest_CSV_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
            LesDonnees.Dispose()
        End Sub
     
        Private Sub FTest_CSV_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            '' NomFichier = "C:\Users\cisco\Downloads\CSV_0B\CSV_0B\Parametres.csv"
            TBFichier.Text = NomFichier
            DGVParametres.AllowUserToAddRows = True
            LesDonnees = New DataTable
            LesDonnees.Columns.Add("ROOM")
            LesDonnees.Columns.Add("STA_SiteNumber")
            LesDonnees.Columns.Add("CPT")
            LesDonnees.Columns.Add("CALO")
        End Sub
     
        Private Sub BLecture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BLecture.Click
     
            datalire()
     
        End Sub
     
        Private Sub BEcriture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BEcriture.Click
            Dim FichierAEcrire As System.IO.StreamWriter
            Dim LigneAEcrire As String
            Dim SeparateurSplit As Char() = {";"}
            ''   NomFichier = "C:\Users\cisco\Downloads\CSV_0B\CSV_0B\Parametres.csv"
            MessageBox.Show(NomFichier)
            FichierAEcrire = New System.IO.StreamWriter(NomFichier, False, System.Text.Encoding.Default)
            For R As Integer = 0 To DGVParametres.Rows.Count - 2
                LigneAEcrire = DGVParametres.Item(0, R).Value & SeparateurSplit & DGVParametres.Item(1, R).Value & SeparateurSplit & DGVParametres.Item(2, R).Value & SeparateurSplit & DGVParametres.Item(3, R).Value
                FichierAEcrire.WriteLine(LigneAEcrire)
            Next
            FichierAEcrire.Close()
        End Sub
     
     
        Private Sub BRecherche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BRecherche.Click
            Me.OpenFileDialog1.FileName = Nothing
            If Me.OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                Me.TBFichier.Text = Me.OpenFileDialog1.FileName
            End If
            '   Me.DGVParametres.DataSource = Nothing
            datalire()
        End Sub
     
     
        Private Sub datalire()
            Dim FichierALire As System.IO.StreamReader
            Dim LigneLue As String
     
            Dim SeparateurSplit As Char() = {";"}
            Dim DonneesTMP() As String
            NomFichier = TBFichier.Text
            MessageBox.Show(NomFichier)
     
            If DGVParametres.RowCount > 0 Then
                DGVParametres.DataSource = Nothing
                DGVParametres.Rows.Clear()
                LesDonnees.Clear()                       ' ********* la ligne oubliée ... :(
            End If
     
            If Not System.IO.File.Exists(NomFichier) Then
                MessageBox.Show("Fichier " & NomFichier & " non trouvé")
                DGVParametres.DataSource = LesDonnees
                Exit Sub
            End If
     
            FichierALire = New System.IO.StreamReader(NomFichier)
     
            ' Aquisition des données
            Do Until FichierALire.Peek = -1
                LigneLue = FichierALire.ReadLine
                DonneesTMP = LigneLue.Split(SeparateurSplit)
                LesDonnees.Rows.Add(DonneesTMP)
            Loop
     
            FichierALire.Close()
            FichierALire.Dispose()
     
            ' Remplissage du DataGridView avec les données
            DGVParametres.DataSource = LesDonnees
        End Sub
     
    End Class
    Bonne journée ...

  16. #16
    Membre émérite Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Points : 2 865
    Points
    2 865
    Par défaut
    Suite ...

    Comme tu as isolé dans une procédure datalire() tout le code de lecture des paramètres, pour quoi ne pas lui passer le nom du fichier en paramètre (je crois que tu n'auras pas cette Textbox dans ton application finale) ?

    Exemple :

    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
     
        Private Sub BLecture_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BLecture.Click
     
            datalire( Me.TBFichier.Text)  
     
        End Sub
     
        Private Sub BRecherche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BRecherche.Click
            Me.OpenFileDialog1.FileName = Nothing
            If Me.OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
              Me.TBFichier.Text = Me.OpenFileDialog1.FileName
           End If
            '   Me.DGVParametres.DataSource = Nothing
     
            datalire(Me.TBFichier.Text)   ' **********
        End Sub
     
        Private Sub datalire(NomFichier As String)     ' ce NomFichier est ici une variable locale à la procédure, pas d'interférence avec le NomFichier déclaré ailleurs
            Dim FichierALire As System.IO.StreamReader
            Dim LigneLue As String
     
            Dim SeparateurSplit As Char() = {";"}
            Dim DonneesTMP() As String
     '*****       NomFichier = TBFichier.Text
     
    ' ... ... ...
    ... ... ...

  17. #17
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2020
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2020
    Messages : 32
    Points : 18
    Points
    18
    Par défaut
    merci encore sujet résolu pour le moment , je continu mon application

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Garder en memoire la valeur d'un champ
    Par Akim13 dans le forum Langage
    Réponses: 3
    Dernier message: 18/07/2007, 14h05
  2. [VB.NET] Garder en memoire certaines valeur
    Par mael94420 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/10/2006, 08h49
  3. Réponses: 3
    Dernier message: 26/09/2006, 11h06
  4. casting DWORD en string, garder la même valeur
    Par titouille dans le forum SL & STL
    Réponses: 2
    Dernier message: 19/08/2005, 21h17
  5. garder en memoire un resultat d'une fonction
    Par khadidja dans le forum C++
    Réponses: 6
    Dernier message: 26/07/2004, 14h52

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