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 :

Compter les lignes CSV en VB6


Sujet :

VB 6 et antérieur

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut Compter les lignes CSV en VB6
    Bonjour,

    j'ai l'habitude d'utiliser les fonctions Open/Close Line Input#/Print#/Get# pour stocker ou lire des données dans des fichiers csv avec une interface VB6 mais aujourd'hui je bloque sur un problème :

    comme lire simplement le nombre de lignes d'un fichier csv que chaque jour j'exporte et qui varie.

    Je peux vous aider en vous donnant le chemin de mon fichier :
    Trim(VarPathApplication) & "\cmx_export.csv

    A la limite je souhaiterais récupéré ce nombre de ligne dans un label "LabelNbLigneCSV"

    Merci de votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    Re, vous pouvez fermer ma demande j'ai réussi en faisant ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim strLigne As String
    Dim nbligne As Integer
     
    Open Trim(VarPathApplication) & "\cmx_export.csv" For Input As #1
     
    Do While Not EOF(1)
        Line Input #1, strLigne
        nbligne = nbligne + 1
    Loop
     
    MsgBox " Nombre de lignes : " & nbligne
    Voilà

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    Re bonjour,

    maintenant que j'ai réussi à ouvrir mon fichier et compter mon nombre de lignes totales je souhaiterais extraire les valeurs correspondant à chaque colonne.

    En effet pour chaque ligne j'ai :

    ligne 1 : 0.3452;0.28945;0.432566;0.2113
    ligne 2 : 0.876652;0.945;0.432564;0.2
    etc ....

    le chaque point virgule représente un séparateur de colonne donc j'aimerais avoir 4 variables qui reprennent mes 4 valeurs par ligne.

    Exemple pour ma 1ere ligne :
    var1 = 0.3452
    var2 = 0.28945
    var3 = 0.432566
    var4 = 0.2113

    Quelqu'un peux t-il m'aider ??
    Merci d'avance

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    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
    Option Explicit
    Private Type MultipleTableau
     LeData() As String
    End Type
     
     
    Private Sub Form_Load()
    Dim MonTableau() As MultipleTableau
    Dim T As Integer, U As Integer
    Dim Msg$
    Dim NbrLgn As Integer, NbrCln As Integer
    Dim NumFich As Integer
    Dim CheminNomFichier As String
     
    CheminNomFichier = "?????????????"
    Msg$ = ""
    NumFich = FreeFile
    Open CheminNomFichier For Input As #NumFich
    Msg$ = Input(FileLen(CheminNomFichier), NumFich)
    Close #NumFich
    If Msg$ = "" Then
     MsgBox "le fichier est vide", vbCritical
     Unload Me
    End If
     
    'variables intermediaires à 1 indice, servant à construire le tableau "MonTableau" a 2 indices
    Dim DecoupeContenuLg() As String
    Dim DecoupeContenuCl() As String
     
    'création du tableau "DecoupeContenuLg", pour 1° indice (Ligne) du tableau "MonTableau"
    DecoupeContenuLg = Split(Msg$, vbCrLf)
    'création du tableau "DecoupeContenuCl", pour 2° indice (colonne, "LeData") du tableau "MonTableau"
    DecoupeContenuCl = Split(DecoupeContenuLg(0), ",")
    'recuperation du Nbr de lignes et Nbr de colonne
    NbrLgn = UBound(DecoupeContenuLg) - 1 '(-1 car le fichier ce termine par une ligne vierge)
    NbrCln = UBound(DecoupeContenuCl)
     
    'maintenant que le Nbr de lignes et le Nbr de colonnes est connu
    'dimensionnement de la variable tableau "MonTableau"
    ReDim MonTableau(NbrLgn)
     
    'remplis le tableau "MonTableau" a 2 dimensions
    For T = 0 To NbrLgn
     'recuperation de chaque ligne
     DecoupeContenuCl = Split(DecoupeContenuLg(T), ",") 'la separation de chaque colonnes est une virgule
     For U = 0 To NbrCln
      ReDim Preserve MonTableau(T).LeData(U)
      MonTableau(T).LeData(U) = DecoupeContenuCl(U)
     Next U
    Next T
     
    'Lecture du tableau "MonTableau" a 2 dimensions
    For T = 0 To NbrLgn
        For U = 0 To NbrCln
            Debug.Print MonTableau(T).LeData(U)
        Next U
    Next T
    End Sub
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    Tout d'abord merci à ProgElect pour sa réponse mais j'aimerais avoir des précisions :



    En fait je souhaite traduire des données de patients parkinsoniens que je récupère en fichier csv.

    Par exemple, pour le fichier Test.csv quand j'ouvre j'ai :

    X Data;Y Data;Z Data;Time Data
    -0.724487;-0.307907;-0.742599;0
    -0.724487;-0.307907;-0.760712;0.01
    -0.706375;-0.307907;-0.742599;0.02
    -0.724487;-0.307907;-0.742599;0.03
    -0.724487;-0.307907;-0.742599;0.04
    -0.706375;-0.289795;-0.724487;0.05
    -0.706375;-0.289795;-0.706375;0.06
    -0.706375;-0.253571;-0.706375;0.07
    -0.706375;-0.271683;-0.724487;0.08
    -0.688263;-0.253571;-0.724487;0.09


    Mon souhait des de lire l'ensemble des lignes dont le nombre peut varier d'un fichier à l'autre est les mettre dans un tableau.

    Ensuite lire ce tableau ligne par ligne qui a affiché les valeurs dans un label.

    Pouvez-vous m'aider ??

    Merci

  6. #6
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Bonjour,

    Quand tu fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim strLigne As String
    Dim nbligne As Integer
     
    Open Trim(VarPathApplication) & "\cmx_export.csv" For Input As #1
     
    Do While Not EOF(1)
        Line Input #1, strLigne
        nbligne = nbligne + 1
    Loop
     
    MsgBox " Nombre de lignes : " & nbligne
    Si tu fais un split de la variable strLigne, le résultat sera une variable tableau.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    merci, mais je ne comprends pas trop la procédure à adopter.
    Avant je récupérais mes données en format .mat

    matlab, beaucoup plus simple pour moi à comprendre du coup je faisais un Get pour récupérer dans mon tableau et je traçais 3 courbes (X, Y, Z), une par axe en fonction du temps (le temps c'est mon 4ème chiffre de chaque ligne)

    Là j'aimerais faire de même avec le csv mais je ne sais pas comment construire mon tableau de données

  8. #8
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Re,

    Ta variable strLigne contient les données séparées par un point-virgule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Donnees = Split(strLigne, ";")
    La variable "Donnees" devient un tableau à plusieurs dimensions
    Donnees(0) contiendra -0.724487
    Donnees(1) contiendra -0.307907
    Donnees(2) contiendra -0.742599
    Donnees(3) contiendra 0
    Et pour parcourir ce tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i = 0 to ubound(Donnees)
       msgbox Donnees(i)
    next
    C'est plus clair ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    Bonjour,

    j'ai découvert ta réponse ce matin et j'ai testé. Effectivement je récupère bien les données avec ta méthode c'est génial.

    Dernière demande de ma part, quand je récupérais les données en fichier .mat (binaire) j'avais un traitement qui me permettait de construire mon tableau qui s’appelait VarTab3VoiesBrutes déclarée comme une globale variable :

    Déclaration puis récupération données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Global VarTab3VoiesBrutes(1 to 3, 1 to 233356) as variant
    avec 1 to 3 pour les 3 axes et 233356 comme valeur max.

    codes pour remplir VarTab3VoiesBrutes :
    For TmpCompteur = (DebutTmp_Tableau - 1) To (FinTmp_Tableau - 1)
    Get #1, (Tmp_Position_Mat + 1 + 2 * TmpCompteur), VarTab3VoiesBrutes(1, (TmpCompteur Mod 120000) + 1)
    Next TmpCompteur
    Ma question est la suivante :
    pour ne pas changer le reste de mon programme, j'aimerais accrémenter mes données obtenues par Donnees=Split(strLigne, ";") à chaque passage dans ma boucle. Est ce possible ???

    J'ai essayé ca sans succès:

    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
    'pour Axe 1
    For i = 0 To nbligne
    Donnees = Split(strLigne, ";")
    VarTab3VoiesBrutes(Donnees(0), i)
     
    Next
     
    'pour Axe 2
     
    For i = 0 To nbligne
    Donnees = Split(strLigne, ";")
    VarTab3VoiesBrutes(Donnees(1), i)
     
    Next
     
    'pour Axe 3
     
    For i = 0 To nbligne
    Donnees = Split(strLigne, ";")
    VarTab3VoiesBrutes(Donnees(2), i)
     
    Next

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 11
    Par défaut
    Salut,

    Je ne comprend pas trop ce que tu entend par :
    accrémenter mes données obtenues par Donnees=Split(strLigne, ";")
    _ ajouter quoi et où ? à la fin (après 120000) du tableau ? à la fin du dernier data (TmpCompteur Mod 120000) + 1 entré au tableau?

  11. #11
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour nicodiablo,

    ProgElecT t'a donné la solution: voir son code
    et en plus étudie son code car c'est une bonne leçon sur l'emploi des tableaux.

    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
     
    'sauf à remplacer ici la virgule par un point virgule
    DecoupeContenuCl = Split(DecoupeContenuLg(0), ",")
    'et dans ton exemple de faire
    'pour Axe 1
    For i = 0 To NbrLgn 'variable qui contient le nnombre de lignes
      MonTableau(i).LeData(0)
    Next
     
    'pour Axe 2
    For i = 0 To NbrLgn
      MonTableau(i).LeData(1)
    Next
     
    'pour Axe 3
    For i = 0 To NbrLgn
      MonTableau(i).LeData(2)
    Next
    

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    Tout d'abord bonne année et merci à tous d'avoir répondu ou apporter des réponses à mon problème.
    Je ne dois pas comprendre forcément vos réponses car quand j'essaie ça ne fonctionne pas.

    J'ai tenté d'utiliser votre code de Progelect source mais en vain car j'ai deux blocages que je vous mets en gras dans votre code initial.


    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
    Option Explicit
    Private Type MultipleTableau
     LeData() As String
    End Type
     
     
    Private Sub Form_Load()
    Dim MonTableau() As MultipleTableau
    Dim T As Integer, U As Integer
    Dim Msg$
    Dim NbrLgn As Integer, NbrCln As Integer
    Dim NumFich As Integer
    Dim CheminNomFichier As String
     
    CheminNomFichier = "?????????????"
    Msg$ = ""
    NumFich = FreeFile
    Open CheminNomFichier For Input As #NumFich
    Msg$ = Input(FileLen(CheminNomFichier), NumFich)
    Close #NumFich
    If Msg$ = "" Then
     MsgBox "le fichier est vide", vbCritical
     Unload Me
    End If
     
    'variables intermediaires à 1 indice, servant à construire le tableau "MonTableau" a 2 indices
    Dim DecoupeContenuLg() As String
    Dim DecoupeContenuCl() As String
     
    'création du tableau "DecoupeContenuLg", pour 1° indice (Ligne) du tableau "MonTableau"
    DecoupeContenuLg = Split(Msg$, vbCrLf)
    'création du tableau "DecoupeContenuCl", pour 2° indice (colonne, "LeData") du tableau "MonTableau"
    DecoupeContenuCl = Split(DecoupeContenuLg(0), ",")
    'recuperation du Nbr de lignes et Nbr de colonne
    NbrLgn = UBound(DecoupeContenuLg) - 1 '(-1 car le fichier ce termine par une ligne vierge)
    NbrCln = UBound(DecoupeContenuCl)
     
    'maintenant que le Nbr de lignes et le Nbr de colonnes est connu
    'dimensionnement de la variable tableau "MonTableau"
    ReDim MonTableau(NbrLgn)
     
    'remplis le tableau "MonTableau" a 2 dimensions
    For T = 0 To NbrLgn
     'recuperation de chaque ligne
     DecoupeContenuCl = Split(DecoupeContenuLg(T), ",") 'la separation de chaque colonnes est une virgule
     For U = 0 To NbrCln
      ReDim Preserve MonTableau(T).LeData(U)
      MonTableau(T).LeData(U) = DecoupeContenuCl(U)
     Next U
    Next T
     
    'Lecture du tableau "MonTableau" a 2 dimensions
    For T = 0 To NbrLgn
        For U = 0 To NbrCln
            Debug.Print MonTableau(T).LeData(U)
        Next U
    Next T
    End Sub
    En fait j'avais développé une appli me permettant de lire les résultats d'un capteur porté par des patients parkinsonnien. Je récupérais des données en matlab et donc avec la fonction Get j'arrivais à construire un tableau.

    Aujourd'hui avec un nouveau capteur je récupère des valeurs dans un fichier CSV et je n'arrive absolument pas à construire mon tableau. Du coup le reste des calculs ne se font pas et je n'ai pas d'interprétation du degré de progression de la maladie chez mes patients.
    Pourriez-vous m'aider ?

    Merci beaucoup par avance
    Nicolas

  13. #13
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour,

    De Nicodiablo

    J'ai tenté d'utiliser votre code de Progelect source mais en vain car
    j'ai deux blocages que je vous mets en gras dans votre code initial.
    Je ne vois nulle part une partie du code en gras dans ton post?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    Bonjour iclic, effectivement j'avais pas mis en gras sur mon poste, désolé.
    Par contre depuis ce matin j'ai avancé et levé un des problèmes.

    Voici mon code actuel :


    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
    TypeAffichage = "NvFich"   'pour eviter l'evenement ScrollSignal_Change
     
     
     
      '---------------  Effacements  -----------------------------------
      GraphSignalComplet.Picture = LoadPicture()
      GraphEchantillon.Picture = LoadPicture()
      LabelFileName.Caption = "": LabelFileName.Refresh
      LabelLengthSignal.Caption = "": LabelLengthSignal.Refresh
      Text_Comment1.Text = "": Text_Comment1.Refresh
      Text_Comment2.Text = "": Text_Comment2.Refresh
     
      '-----  Test si un fichier est sélectionné  -----------------------
      If Len(Trim(FileSaved.FileName)) = 0 Then
        VarFichierSimple = "ERROR"
        Exit Sub
      End If
     
      '---------------  Init Nom Fichier  -------------------------------
      VarFichierSimple = UCase(Trim(FileSaved.FileName))
      If Len(Trim(FileSaved.Path)) = 3 Then
        VarFichierComplet = UCase(Trim(FileSaved.Path) & Trim(VarFichierSimple))
      Else
        VarFichierComplet = UCase(Trim(FileSaved.Path) & "\" & Trim(VarFichierSimple))
      End If
     
      '---------------  TEST Type Fichier=CSV  -----------------------
      If LCase(Right(Trim(VarFichierSimple), 4)) <> ".csv" Then
        VarFichierSimple = "ERROR"
        Exit Sub
      End If
     
     
     
    '********************************************************
    'comptage des lignes dans fichier csv
    '********************************************************
     
    'Dim strLigne As String
    'Dim nbligne As Variant
    Dim Donnees As Variant
    Dim MonTableau() As MultipleTableau
    Dim T As Integer, U As Integer
    Dim Msg$
    Dim NbrLgn As Integer, NbrCln As Integer
    Dim NumFich As Integer
    Dim CheminNomFichier As String
     
     
    '********************************************************
     
    CheminNomFichier = VarFichierComplet
    Msg$ = ""
    NumFich = FreeFile
    Open CheminNomFichier For Input As #NumFich
    Msg$ = Input(FileLen(CheminNomFichier), NumFich)
    Close #NumFich
    If Msg$ = "" Then
     MsgBox "le fichier est vide", vbCritical
     Unload Me
    End If
     
    'variables intermediaires à 1 indice, servant à construire le tableau "MonTableau" a 2 indices
    Dim DecoupeContenuLg() As String
    Dim DecoupeContenuCl() As String
     
    'création du tableau "DecoupeContenuLg", pour 1° indice (Ligne) du tableau "MonTableau"
    DecoupeContenuLg = Split(Msg$, vbCrLf)
    'création du tableau "DecoupeContenuCl", pour 2° indice (colonne, "LeData") du tableau "MonTableau"
    DecoupeContenuCl = Split(DecoupeContenuLg(0), ";")
    'recuperation du Nbr de lignes et Nbr de colonne
    'NbrLgn = UBound(DecoupeContenuLg) - 1 '(-1 car le fichier ce termine par une ligne vierge)
    NbrCln = UBound(DecoupeContenuCl)
    NbrLgn = UBound(DecoupeContenuLg)
     
     
    Text3.Text = NbrLgn + 1 'vérification dans un champs texte du nombre de ligne
    Text7.Text = NbrCln + 1 'vérification dans un champs texte du nombre de colonne
     
     
    'maintenant que le Nbr de lignes et le Nbr de colonnes est connu
    'dimensionnement de la variable tableau "MonTableau"
    ReDim MonTableau(NbrLgn)
     
    'remplis le tableau "MonTableau" a 2 dimensions
    For T = 0 To NbrLgn
     'recuperation de chaque ligne
     DecoupeContenuCl = Split(DecoupeContenuLg(T), ";") 'la separation de chaque colonnes est un point virgule
    Next
     
    'Pour l'axe 1
    For i = 0 To NbrLgn 'variable qui contient le nombre de lignes
    MonTableau(i).LeData (0)
    Next
     
    'Pour l'axe 2
    For i = 0 To NbrLgn 'variable qui contient le nombre de lignes
    MonTableau(i).LeData (1)
    Next
     
    'Pour l'axe 3
    For i = 0 To NbrLgn 'variable qui contient le nombre de lignes
    MonTableau(i).LeData (2)
    Next
    le message d'erreur renvoyé à la ligne 93 est :

    compil error :
    Expected Sub, Function, or property
    Merci de ton aide

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    Ne te manque t il pas la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Explicit
    Private Type MultipleTableau
     LeData() As String
    End Type
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  16. #16
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    tu dois mettre la valeur du tableau dans une variable
    (voir dans la MSDN comment faire un graphique)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 0 To NbrLgn 'variable qui contient le nombre de lignes
    Variable = MonTableau(i).LeData (0)
    Next
    OU pour vérifier si tu veux pour visualiser les colonnes tu peux ajouter 3 listbox indicée

    et en ajoutant dans son 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
     
    'pour Axe 1
    For i = 1 To NbrLgn 'variable qui contient le nombre de lignes
     List1(0).AddItem MonTableau(i).LeData(0)
    Next
     
    'pour Axe 2
    For i = 1 To NbrLgn
      List1(1).AddItem MonTableau(i).LeData(1)
    Next
     
    'pour Axe 3
    For i = 1 To NbrLgn
      List1(2).AddItem MonTableau(i).LeData(2)
    Next
    End Sub

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut iclic , dans le code proposé par nicodiablo , la variable tableau à 2 indices n'est pas remplis.
    Ayant été dérangé lors de ma dernière intervention, je n'y avais pas prêter plus attention.
    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
    'remplis le tableau "MonTableau" a 2 dimensions
    ' donc imbriquer 2 boucles For ... Next, une par ligne + une par colonne
    For T = 0 To NbrLgn
     'récupération provisoire de chaques colonnes depuis le tableau DecoupeContenuLg
     DecoupeContenuCl = Split(DecoupeContenuLg(T), ";") 'la separation de chaque colonnes est un point virgule
     For U = 0 To NbrCln
      'récupération de chaque colonnes pour cette ligne
      ReDim Preserve MonTableau(T).LeData(U)
      MonTableau(T).LeData(U) = DecoupeContenuCl(U)
     Next U
    Next T
     
     
     
    '********** provisoire, pour mise au point et vérification ***********
    'Ecriture dans la fenêtre d'exécution (Ctrl+G) de, chaque colonnes pour chaque lignes
    For T = 0 To NbrLgn
     For U = 0 To NbrCln
       Debug.Print MonTableau(T).LeData(U)
     Next U
    Next T
    '********** Fin provisoire, pour mise au point et vérification ***********
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    Je vous remercie pour vos réponses.

    ProgElect, oui j'ai bien déclaré la variable dans Option Explicit ()

    Je teste vos réponses et je reviens vers vous.

  19. #19
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour Nicodiablo,

    Tu peux même mettre tes données dans un graphique.

    Exemple:
    choisir Projet
    Puis Composants
    Ensuitr Cocher Microsoft Chart Control 6.0

    Insérer sur la feuille l'objet MSChart
    Puis ajouter le 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
    28
    29
     
    Dim Column As Integer, Row As Integer, valeur As Double
    Dim index1, index2, index3, index4
    With MSChart2
          ' Affiche un graphique en 2d en ligne avec NbrLgn colonnes et
          ' 3lignes de données.(x,y,z)
          .chartType = VtChChartType2dLine
          .ColumnCount = 3
          .RowCount = NbrLgn
          .DataGrid.ColumnLabel(1, 1) = MonTableau(0).LeData(0)
          .DataGrid.ColumnLabel(2, 1) = MonTableau(0).LeData(1)
          .DataGrid.ColumnLabel(3, 1) = MonTableau(0).LeData(2)
          For Column = 1 To 3
             For Row = 1 To NbrLgn
                 valeur = Val(MonTableau(Row).LeData(Column - 1))
                .Column = Column
                .Row = Row
                .Data = valeur
             Next Row
          Next Column
          ' Utilise le graphique comme fond de la légende.
          .ShowLegend = True
          .SelectPart VtChPartTypePlot, index1, index2, _
          index3, index4
          .EditCopy
          .SelectPart VtChPartTypeLegend, index1, _
          index2, index3, index4
          .EditPaste
       End With
    Voir le résultat et à adapter... selon

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Par défaut
    Bonjour,

    je reviens vers vous car grâce à votre aide j'ai réussi à récupérer les données de mon csv et à les ranger dans un tableau que j'ai appelé comme suggéré par vous :

    Dim MonTableau() As multipletableau

    Dans mon précédent code que je vous joins ma matrice de récupération était un "integer" nommé VarTab3VoiesBrutes que j'avais déclaré comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Global VarTab3VoiesBrutes (1 to 3, 1 to 3, 1to 120000) as integer
    Je joins le code qui m'a permis dans ma version de créer le graphique avec les données de l'Axe 1 :

    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
    ' AFFICHAGE DE TOUT LE FICHIER SUR AXE 1 FENETRE DU HAUT
     
      Dim QA_AxeY  As Integer
     
      QA_AxeY = 2048  'Echelle du graph : brute -2048/+2048
     
      GraphEchantillon.Picture = LoadPicture(): GraphEchantillon.Refresh
     
     
      GraphSignalComplet.ScaleHeight = 4096 ' GraphSignalComplet étant ma picture box ou je dessine
      GraphSignalComplet.ScaleWidth = Largeur_Graph
      GraphSignalComplet.Picture = LoadPicture()
     
      GraphSignalCompletSaved.ScaleHeight = GraphSignalComplet.ScaleHeight
      GraphSignalCompletSaved.ScaleWidth = GraphSignalComplet.ScaleWidth
      GraphSignalCompletSaved.Picture = LoadPicture()
     
      '---------------  Dessine axe abscisses  --------------------------
      For i = 6000 To 180000 Step 6000   'Graduations toutes les minutes
        GraphSignalComplet.Line (i, 3950)-(i, 4096), 0
      Next i
      For i = 60000 To 180000 Step 60000   'Graduations toutes les 10 minutes
        GraphSignalComplet.Line (i, 3800)-(i, 4096), 0
      Next i
     
     
      '---------------  Affichage Courbes  ------------------------------
     
       MemTmpValeur = (VarTab3VoiesBrutes(1, 1) - ZeroV1) 'zero étant le zéro offset du capteur
     
     
     
       For TmpCompteur = 2 To Largeur_Graph 'Step 2
     
     
         TmpValeur = (VarTab3VoiesBrutes(1, TmpCompteur) - ZeroV1) ' rectification des 0 par rapport au capteur
     
         GraphSignalComplet.Line (TmpCompteur - 1, QA_AxeY - MemTmpValeur)-(TmpCompteur, QA_AxeY - TmpValeur), Coul1
     
         MemTmpValeur = TmpValeur
     
     
       Next TmpCompteur
     
     
     
       GraphSignalComplet.Refresh
       GraphSignalCompletSaved.Picture = GraphSignalComplet.Image
     
       VarXGraphSignalComplet = 1    '1/1024
    Je cherche à faire la même chose, dessiner mon axe 1 à partir de ma nouvelle variable qui est MonTableau mais je ne sais pas faire pour une variable de type multipletableau.

    Pourriez vous m'aider ?

Discussions similaires

  1. Compter les lignes d'un fichier CSV à partir d'une ligne
    Par miniRoshan dans le forum Général Java
    Réponses: 6
    Dernier message: 03/06/2010, 11h16
  2. Réponses: 4
    Dernier message: 02/06/2010, 17h23
  3. Compter les lignes du fichier CSV
    Par miniRoshan dans le forum Général Java
    Réponses: 5
    Dernier message: 28/05/2010, 11h37
  4. [CSV] Compter les lignes d’un fichier csv
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 11h16
  5. [C#] Compter les lignes d'un DataSet
    Par alexischmit dans le forum ASP.NET
    Réponses: 13
    Dernier message: 26/04/2004, 15h17

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