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 6 et antérieur Discussion :

ouvrir et enregistrer un MsFlexgrid


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut ouvrir et enregistrer un MsFlexgrid
    Bonjour à tous,

    J'ai un MSFlexgrid que j'enregistre en format text avec ce code :

    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
    Private Sub enregistrer_Click()
     
    Dim colonne As Integer
    Dim Ligne As Integer
    Dim cptligne As Integer
    Dim cptcolonne As Integer
    Dim chaine As String
    Dim emp
     
     
    emp = App.Path
     
    Open emp + "nomfichier.txt" For Output As #1
    colonne = Me.MSFlexGrid1.Cols
    Ligne = Me.MSFlexGrid1.Rows
    For cptligne = 0 To Ligne - 1
    For cptcolonne = 0 To colonne - 1
    chaine = chaine & Me.MSFlexGrid1.TextMatrix(cptligne, cptcolonne)
    chaine = chaine & "|"
    Next cptcolonne
    Print #1, chaine
    chaine = ""
    Next cptligne
     
    Close #1
     
    End Sub
    Le résultat n'est pas au top^car il y a plein de traits verticaux sur la feuille mais les données sont bien enregistrées. Le gros problème est de pouvoir ouvrir les fichiers enregistrés au format text.
    J'ai bricoler un bout de code qui utilise la boite de dialogue ouvrir mais je n'arrive pas à lire et encore moins à écrire le contenu du fichier dans mon MSFlexgrid ( j'utilise le même MSFexgrid qui à créer le fichier pour le r'ouvrir)

    voici le code qui ne fonctionne pas :

    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
     
    Private Sub ouvrir_Click()
     
    Dim ff As Integer
    Dim i As Integer
    Dim j As Integer
    Dim A$
    Dim MonFichier
     
    i = MSFlexGrid1.Rows
     
     
    ff = FreeFile
    CommonDialog1.ShowOpen
    MonFichier = CommonDialog1.FileName
    Open MonFichier For Input As #ff
     
    Do While Not EOF(ff)
        MSFlexGrid1.Rows = i + 1
        For j = 0 To 104
            If Not EOF(ff) Then
                Input #ff, A$
                MSFlexGrid1.TextMatrix(i, j) = A$
            Else
                Exit Do
            End If
        Next j
        i = i + 1
    Loop
     
    Close #ff
    End Sub
    il doit me manquer un petit quelque chose que mes maigre connaissances ne me permettent pas de trouver

    merci pour votre aide toujours précieuse

    cordialement

    Didier

  2. #2
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par dmoluc Voir le message
    Le résultat n'est pas au top^car il y a plein de traits verticaux sur la feuille
    Ca me semble normal .... c'est toi qui les ajoute

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    merci c'est déjà ça : à force de piquer des codes à droites à gauche sans les comprendres totalement, je fais des bétises

  4. #4
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    j'ai essayé de faire l'inverse de l'enregistrement en utilisant input, mais je n'arrive toujours pas à ouvrir le fichier

    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
     
     
    Private Sub ouvrir_Click()
     
    Dim MonFichier
    Dim colonne As Integer
    Dim ligne As Integer
    Dim cptligne As Integer
    Dim cptcolonne As Integer
    Dim chaine As String
    Dim emp
     
     
    CommonDialog1.ShowOpen
     
    MonFichier.Text = CommonDialog1.FileName
     
    Open "MonFichier" For Input As #1
    colonne = Me.MSFlexGrid1.Cols
    ligne = Me.MSFlexGrid1.Rows
    For cptligne = 0 To ligne - 1
    For cptcolonne = 0 To colonne - 1
    chaine = chaine & Me.MSFlexGrid1.TextMatrix(cptligne, cptcolonne)
    chaine = chaine & " "
    Next cptcolonne
    Print #1, chaine
    chaine = ""
    Next cptligne
     
    Close #1
     
    End Sub
    "CommonDialog1.FileName" contient bien le fichier mais impossible de l'ouvrir, cette ligne de code ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Open "MonFichier" For Input As #1
    quelqu'un aurait une idée, ce serait sympat, merci

  5. #5
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Peut être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Open MonFichier.text For Input As #1

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim MonFichier
    '................
    MonFichier.Text = CommonDialog1.FileName
    La variable MonFichier n'a pas de propriété Text cette variable n'est pas un objet.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Open "MonFichier" For Input As #1
    Si tu ouvres un fichier en 'INPUT , il faut prendre le code approprié
    pour le lire

    soit
    Mais attention s'il y a des virgules dans le texte...

    ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Line input #1, chaine
    NB: PRINT, c'est pour écrire et on ouvre alors le fichier en OUTPUT ou APPEND

  8. #8
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    cette variable n'est pas un objet.
    Bien vu !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim MonFichier as String
    '........
    Open MonFichier For Input As #1

  9. #9
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Pour enregistrer chaque cellules de ton MSFlexGrid, sépares tes colonnes par Chr(1) plutôt que "|", la lecture avec avec Notepad et/ou Word chr(1) n'est pas visible.
    Pour remplir ton MSFlexGrid, tu split chaque ligne avec ce même séparateur.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  10. #10
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    J'en suis arrivé à écrire dans le flexgrid, hélas ça ne lis toujours pas le fichier, la variable chaine est désespérément vide donc j'obtiens un beau tableau vierge

    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
     
     
    Private Sub ouvrir_Click()
     
    Dim MonFichier As String
    Dim colonne As Integer
    Dim Ligne As Integer
    Dim cptligne As Integer
    Dim cptcolonne As Integer, chaine As String
     
    CommonDialog1.ShowOpen
     
    MonFichier = CommonDialog1.FileName
     
     Open MonFichier For Input As #1
     
    Do While Not EOF(1)    ' Effectue la boucle jusqu'à la fin du fichier.
        Line Input #1, chaine         ' Lit la ligne dans la variable.
     
       colonne = Me.MSFlexGrid1.Cols
    Ligne = Me.MSFlexGrid1.Rows
    For cptligne = 0 To Ligne - 1
    For cptcolonne = 0 To colonne - 1
       Me.MSFlexGrid1.TextMatrix(cptligne, cptcolonne) = chaine
    Next cptcolonne
     
    Next cptligne
    Loop
    Close #1
     
    End Sub

  11. #11
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    Pour enregistrer chaque cellules de ton MSFlexGrid, sépares tes colonnes par Chr(1) plutôt que "|", la lecture avec avec Notepad et/ou Word chr(1) n'est pas visible.
    Pour remplir ton MSFlexGrid, tu split chaque ligne avec ce même séparateur.
    J'ai suivi ton conseil et maintenant j'obtiens le genre de chose qui est sur l'image ci-jointe .....
    Images attachées Images attachées  

  12. #12
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    si je ne met pas de séparateur , j'ai droit à un jolie tableau tout blanc, sinon un truc du genre de l'image jointe tout à l'heure et ça quelque soit le séparateur que j'emplois ( mais je suis loin de tous les connaitres)
    j'ai beau exécuter pas à pas le code, je ne vois toujours pas comment incrémenter ma variable chaine avec le texte ; elle n'aime que les séparateurs

    s'il y a une âme charitable pour regarder ce qui cloche, je joint le projet au format zip
    Fichiers attachés Fichiers attachés

  13. #13
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    Je dois avoir des problèmes de syntaxe avec le split des séparateur. Maintenant j'arrive bien à écrire dans le flexgrid mais ça me mets toutes la ligne dans chaque cellule de celle-ci

    code modifier de l'enregistrement du fichier

    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
     
    Private Sub enregistrer_Click()
     
    Dim colonne As Integer
    Dim Ligne As Integer
    Dim cptligne As Integer
    Dim cptcolonne As Integer
    Dim chaine As String
    Dim emp
     
     
    emp = App.Path
     
    Open emp + "nomfichier.txt" For Output As #1
    colonne = Me.MSFlexGrid1.Cols
    Ligne = Me.MSFlexGrid1.Rows
    For cptligne = 0 To Ligne - 1
    For cptcolonne = 0 To colonne - 1
    chaine = chaine & Me.MSFlexGrid1.TextMatrix(cptligne, cptcolonne)
    chaine = chaine
    Split (chaine & Chr(1)) 'je split sur la colonne
    Next cptcolonne
    Split (chaine & Chr(1))'je split sur la ligne ( mais sans résultat)
    Print #1, chaine
    chaine = ""
    Next cptligne
     
    Close #1
     
    End Sub
    sinon pour écrire j'en suis arrivé là


    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
     
     
    Private Sub ouvrir_Click()
     
    Dim MonFichier As String
    Dim colonne As Integer
    Dim Ligne As Integer
    Dim cptligne As Integer
    Dim cptcolonne As Integer, chaine As String
     
    CommonDialog1.ShowOpen
     
    MonFichier = CommonDialog1.FileName
     
     Open MonFichier For Input As #1
     
    Do While Not EOF(1)    ' Effectue la boucle jusqu'à la fin du fichier.
     
       colonne = Me.MSFlexGrid1.Cols
    Ligne = Me.MSFlexGrid1.Rows
     
    For cptligne = 0 To Ligne - 1
    Line Input #1, chaine
    For cptcolonne = 0 To colonne - 1
       Me.MSFlexGrid1.TextMatrix(cptligne, cptcolonne) = chaine
    Next cptcolonne
    chaine = ""
    Next cptligne
     
    Loop
    Close #1
     
    End Sub

    Il ne doit vraiment pas manquer grand chose, mais quoi ?

    encore merci pour votre aide....

  14. #14
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour,
    J'ai lu (en diagonale) et FlexGrid n'est pas ma tasse de thé, donc pardon si je suis à coté de la plaque
    mais, sauf erreur :
    1/ il existe la propriété Clear pour vider le FlexGrid
    2/ le séparateur de champ est la tabulation et de ligne, vbCrLf
    en formattant les données avec ces séparateurs, il est donc possible d'affecter directement les plages de données avec la propriété Clip.
    De plus si les fichiers texte formatés ainsi sont directement exploitables tels quels
    ils sont aussi beaucoup plus lisibles

    Bonne journée.

    PS: Ne pas oublier les filtres aux boites de Sélection de fichiers

  15. #15
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    Quel que soit le séparateur de champ, pas de problème avec les ligne, mais ça ne sépare pas les colonnes et persiste à écrire toute la ligne dans chaque cellule.
    je commence un peu à désespérer malgré que je sois têtu. Sans enregistrement le programme ne vaut rien et je manque vraiment de connaissances pour trouver seule la solution .....

    encore merci

  16. #16
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par dmoluc Voir le message
    Quel que soit le séparateur de champ, pas de problème avec les ligne, mais ça ne sépare pas les colonnes et persiste à écrire toute la ligne dans chaque cellule.
    Si tu le dis

  17. #17
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut DarkVader , et tous les autres

    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
    Private Sub ouvrir_Click()
     
    Dim MonFichier As String
    Dim colonne As Integer
    Dim Ligne As Integer
    Dim cptligne As Integer
    Dim cptcolonne As Integer, chaine As String
     
    Dim TblColonne() As String '<--------------- New -----------------
     
    CommonDialog1.ShowOpen
     
    MonFichier = CommonDialog1.FileName
     
    Open MonFichier For Input As #1
    'colonne = Me.MSFlexGrid1.Cols
    'Ligne = Me.MSFlexGrid1.Rows
     
    Ligne = -1 ' si pas de ligne fixe, sinon Ligne = 0
    Do While Not EOF(1)    ' Effectue la boucle jusqu'à la fin du fichier.
        Line Input #1, chaine
        TblColonne = Split(chaine, Chr(1)) '<--------------- New -----------------
        Ligne = Ligne + 1
        For cptcolonne = 0 To colonne - 1
            Me.MSFlexGrid1.TextMatrix(Ligne, cptcolonne) = TblColonne(cptcolonne) '<--------------- New -----------------
        Next cptcolonne
    Loop
    Close #1
    End Sub
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  18. #18
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour ProgElecT,
    Je ne comprends pas pourquoi Chr(1) et non vbTab !

    Ex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    contentExemple="ValL1C1"+vbtab+"ValL1C2"+vbtab+"ValL1C3"+vbcrlf
    contentExemple=contentExemple+"ValL2C1"+vbtab+"ValL2C2"+vbtab+"ValL2C3"+vbcrlf
    contentExemple=contentExemple+"ValL3C1"+vbtab+"ValL3C2"+vbtab+"ValL3C3"+vbcrlf
     
    with flex1
      .col=1
      .row=1
      .rowsel=3
      .colsel=3
      .clip=contentExemple
    end with
    à vérifier

  19. #19
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    Maintenant je n'y comprend plus rien si tant soit peu j'y ai compris quelques chose
    le code de ProgElecT ne remplis que la première cellule et avec toute la ligne du fichier text après ça bug : TblColonne(colonne) "is out of range"
    quand au code de DarkVader j'ai beau l'étudié en long et en large je ne vois pas comment il fonctionne
    je crois que je vais aller discuter un peu avec les secrétaires pour voir si en coupant un peu une idée géniale survient, mais je n'y crois pas trop

    enfin merci pour votre aide

  20. #20
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Bon, je suis chez moi, j'ai donc plus de temps, au boulot, il y a toujours quelqu'un qui vous dérange

    A DarkVader
    Chr(1) n'est pas visible (équivalent à un espace) dans quasi tous les éditeurs de fichier txt, alors que vbTab suivant l'éditeur, la séparation des données n'est pas toujours des plus claires, je n'ai eu qu'une seul fois à procéder de la sorte.

    A dmoluc
    Démarres un nouveau projet, dedans tu y places 3 CommandButtons, 1 FlexGrid et 1 CommonDialog.
    Le placement, les intitulés sont fait dans le code (Form_Load).
    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
    Option Explicit
    Dim T As Long, U As Long, NumFich As Integer
    Dim MonFichier As String, Chaine As String, TblCol() As String, SeparateuR As String
     
    Private Sub Form_Load()
    'positionne les éléments
    Command1.Move 120, 60, 1035, 315: Command1.Caption = "Ouvrir"
    Command2.Move 1200, 60, 1035, 315: Command2.Caption = "Enregistrer"
    Command3.Move 120, 420, 2115, 315: Command2.Caption = "Enregistrer"
    MSFlexGrid1.Move 0, 780, 5175, 3075
    Me.Height = 4425: Me.Width = 5415
    MSFlexGrid1.Rows = 10
    MSFlexGrid1.FixedRows = 1
    MSFlexGrid1.Cols = 5
    MSFlexGrid1.FixedCols = 0
     
    'Histoire de remplir le grid
    MSFlexGrid1.FormatString = "colonne 1|colonne 2|colonne 3 |colonne 4|colonne 5" 'titrage des colonnes
    For T = 1 To MSFlexGrid1.Rows - 1
        For U = 0 To MSFlexGrid1.Cols - 1
            MSFlexGrid1.TextMatrix(T, U) = Chr(64 + T + U) 'remplis chaque cellule
        Next U
    Next T
    SeparateuR = vbTab '<---------- caractère quelconque, celui que tu veux
    End Sub
     
    Private Sub Command1_Click()
    'Ouvrir
    MSFlexGrid1.Clear 'vider toutes les cellules du grid
    MSFlexGrid1.Rows = 1: MSFlexGrid1.Cols = 1: T = 1
    CommonDialog1.ShowOpen
    MonFichier = CommonDialog1.FileName
    NumFich = FreeFile
    Open MonFichier For Input As #NumFich
    Do While Not EOF(NumFich)    ' Effectue la boucle jusqu'à la fin du fichier.
        Line Input #NumFich, Chaine ' récupération de la ligne
        TblCol = Split(Chaine, SeparateuR) 'éclate la ligne en colonne
        If T = 1 Then MSFlexGrid1.Cols = UBound(TblCol) + 1 'dimensionne le nombre de colonne du grid (une seule fois)
        MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1 'ajoute une ligne au grid
        For U = 0 To MSFlexGrid1.Cols - 1
            MSFlexGrid1.TextMatrix(T, U) = TblCol(U) 'rempli chaque colonne
        Next U
        T = T + 1 'préparation pour la suite
    Loop
    Close NumFich
    End Sub
    Private Sub Command2_Click()
    'Enregistrer
    CommonDialog1.ShowSave
    MonFichier = CommonDialog1.FileName
    NumFich = FreeFile
    Open MonFichier For Output As #NumFich
    For T = 1 To MSFlexGrid1.Rows - 1
        Chaine = ""
        For U = 0 To MSFlexGrid1.Cols - 1
            Chaine = Chaine & MSFlexGrid1.TextMatrix(T, U)
            'pour ne pas ajouter un séparateur à la dernière colonne
            If U <> MSFlexGrid1.Cols - 1 Then Chaine = Chaine & SeparateuR
        Next U
        Print #NumFich, Chaine 'ecrit la ligne
    Next T
    Close NumFich
    End Sub
    Private Sub Command3_Click()
    'Vider le FlexGrid
    MSFlexGrid1.Clear
    End Sub
    Au premier lancement, enregistre le FlexGrid (bouton Enregistrer)
    Puis effaces le contenu du FlexGrid (bouton Vider le FlexGrid)
    Toutes les cellules du FlexGrid sont blanche.
    Maintenant, charge ton FlexGrid avec le fichier que tu viens de créer (bouton Ouvrir) re

    C'est bon ? en tous cas chez moi le FlexGrid est bien remplis, sauf la ligne fixe, mais si tu as besoin de récupérer aussi le titrage de colonne ....on en rediscute la prochaine fois .
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Ouvrir avec enregistrements verrouillés
    Par mapmip dans le forum Access
    Réponses: 6
    Dernier message: 14/05/2007, 19h09
  2. Réponses: 2
    Dernier message: 24/04/2007, 08h03
  3. Ouvrir, écrire, enregistrer, modifier, créer un fichier .txt
    Par Omion dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 11/12/2006, 07h50
  4. Réponses: 6
    Dernier message: 21/09/2006, 16h08
  5. Ouvrire ou Enregistrer un Fichier Excel
    Par jo281 dans le forum ASP
    Réponses: 1
    Dernier message: 13/12/2005, 18h55

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