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

Macros et VBA Excel Discussion :

Optimiser la lecture du nombre de lignes et colonnes d'un fichier texte


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Points : 96
    Points
    96
    Par défaut Optimiser la lecture du nombre de lignes et colonnes d'un fichier texte
    Bonjour,

    J'aimerais savoir si il existe une autre manière de coder ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    While Not src.atendofline 'tant qu'on n'est pas en fin de fichier on saute des colonnes
         src.Skip (1)
    Wend
     
    nbzone = (src.Column - 22) / 21 / 2
     
    While Not src.AtEndOfStream 'tant qu'on n'est pas en fin de fichier on saute des lignes
         src.skipline
    Wend
     
    nbligne = src.Line
     
    ReDim Tableau_Extraction_Temperature(1 To nbligne, 0 To nbzone) As Single

    Le problème c'est que j'ai une fichier texte avec plus de 51 000 lignes, donc cette manière de coder prends pas mal de temps.
    Si vous connaissez une manière d'aller plus vite, je vous en serais fortement reconnaissant

    Merci !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Bonjour,

    Comment as-tu défini "src" ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre régulier
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Points : 96
    Points
    96
    Par défaut
    Merci de ta réponse.
    Voici les déclarations :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim fs As Object, src As Object
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set src = fs.OpenTextFile(x, 1)
    Cordialement

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Si ton but est de trouver le nombre de lignes et de colonnes, utilise plutôt ADO. L'objet recordset te donne le nombre de champs (colonnes) :

    "Rst" étant le recordset,

    et le nombre de lignes :

    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Une approche avec FSO pour le nombre de lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nblignes = UBound(Split(src.ReadAll, vbCrLf))
    Pour le nombre de colonnes, je ne comprends pas ce que tu fais; est-il variable ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  6. #6
    Membre régulier
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Points : 96
    Points
    96
    Par défaut
    Merci pour tes réponses.

    "Rst" étant le recordset,
    Ce n'est pas une variable? Je n'ai pas besoin de le definir?


    Pour le nombre de colonnes, je ne comprends pas ce que tu fais; est-il variable ?
    Ce n'est pas moi qui est codé à l'origine, je ne fais que reprendre un code existant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbzone = (src.Column - 22) / 21 / 2
    Ce que je peux te dire, c'est que le fichier Texte comprend un certain nombre de lignes que l'on va toutes extraires.
    Par contre les colonnes c'est différents. On ne va pas extraire toutes les données (seulement la température)
    Chaque Cas renvoie à deux choses du fichier texte (température et y). Mon nombre de colonne correspond au nombre de cas donc :
    /2 c'est pour n'avoir qu'une colonne sur deux (la température)
    /21 c'est parce que chaque colonne (dans mon futur tableau) correspond à 21 colonnes (du fichier texte) car il y a 21 caractères pour chaque température.
    -22 c'est parce que la première colonne à 22 caractères et correspond aux temps.


    Exemple :
     0.000000000000E+00    0.000000000000E+00   0.000000000000E+00   0.000000000000E+00   0.000000000000E+00
     colonne temps (22c)   colonne T°C (21c)    colonne y (21c)      colonne T°C (21c)    colonne y (21c)   
    le scr.Column va nous donner => 106 colonnes du fichier texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbzone = (src.Column - 22) / 21 / 2 = (106-22) / 21 / 2 = 2
    J'espère avoir été assez explicit
    Du coup, parmi les solutions que tu m'as proposé, quelle est pour toi la plus rapide?

    Cordialement.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Désolé, je ne comprends pas ton explication pour le nombre de colonnes. Est-ce qu'il s'agit d'un fichier texte classique (les champs sont séparés par une tabulation) ? Est-ce que le nombre de colonnes est fixe ? Est-ce que tu peux mettre un fichier exemple de 3 ou 4 lignes en disant ce qu'il faut récupérer ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour,

    la méthode la plus rapide est la lecture de l'intégralité du fichier texte en une seule fois dans une variable tableau,
    et VBA étant déjà bien outillé, FSO pas nécessaire.

    Tout dépend en fait du besoin, un fichier exemple et une présentation claire & exhaustive aideraient bien …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    Bonjour
    Exemple :




    0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00
    colonne temps (22c) colonne T°C (21c) colonne y (21c) colonne T°C (21c) colonne y (21c)
    si tu veux que les températures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    tablotemp=split(tontexte,"(")
     
    for i= 0 to ubound(tablotemp)
    tablotemp(i)=split(tablotemp(i),")")(0)
    next
    dans ton tablo tu a toutes les températures

    maintenant si tu veux la même chose sur plusieurs colonne correspondant a chaque ligne
    il te faut associer la méthode split par le "vbcrlf" que ta donner Marc je crois et la mienne sur chaque ligne avec la fonction redim preserve sur chaque élément du tablo ligne /colonne

    pas tres compliqué ton truc
    ca ira tu a compris ou je te fait un exemple
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre régulier
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Points : 96
    Points
    96
    Par défaut
    Bonjour,
    Merci pour vos réponses

    un fichier exemple et une présentation claire & exhaustive aideraient bien
    Voici un exemple
    exemple.txt

    Ce que je souhaite, c'est qu'il me renvoie le nombre de lignes et ce que j'appelle nombre de zones
    Avec l'exemple, il faudrait que cela renvoie
    nblignes = 3
    nbzones = 3

    Pour le nombre de lignes c'est plutôt pratique car il est égale au nombre de lignes du fichier texte.
    Pour le nombre de zones c'est différent.
    Dans l'exemple il y a 7 séries de chiffres. La première on l'ignore toujours, il en reste plus que 6. Et ensuite j'en comptabilise une sur 2. Donc 6/2=3

    Avec cette métode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    While Not src.atendofline 'tant qu'on n'est pas en fin de fichier on saute des colonnes
         src.Skip (1)
    Wend
     
    nbzone = (src.Column - 22) / 21 / 2
     
    While Not src.AtEndOfStream 'tant qu'on n'est pas en fin de fichier on saute des lignes
         src.skipline
    Wend
     
    nbligne = src.Line
     
    ReDim Tableau_Extraction_Temperature(1 To nbligne, 0 To nbzone) As Single
    Du coup avec cette méthode, il calcule bien le nombre de lignes, par contre je suis obligé de faire la petite formule pour le nombre de zones car il a compté chaque caractère comme une colone.

    Donc quand j'ai plusieurs milliers de lignes et colonnes, ça prend pas mal de temps.

    J'espère avoir été plus claire avec cet exemple.


    ca ira tu a compris ou je te fait un exemple .
    Je veux bien un petit exemple, car pour le moment je souhaites juste récupéer le nombre de lignes et zones.
    C'est plus tard dans le code qu'il récupère le temps (1ère série de caractères) et les températures (1 série de caractères sur 2)


    En vous remerciant

  11. #11
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set Fs = CreateObject("Scripting.FileSystemObject")
    Set Src = Fs.OpenTextFile("C:\Users\Daniel\Documents\Donnees\Daniel\Excel\ADO\volume.txt", 1)
    While Not Src.AtEndOfLine 'tant qu'on n'est pas en fin de fichier on saute des colonnes
         Src.Skip (1)
    Wend
    nbzone = (Src.Column - 22) / 21 / 2
    nblignes = UBound(Split(Src.ReadAll, vbCrLf)) + 1
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  12. #12
    Membre régulier
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Points : 96
    Points
    96
    Par défaut
    Merci !

    Du coup, je vais gagner du temps seulement sur le nombre de lignes?

  13. #13
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Non, avec le code suivant, toutes les lignes sont dans la variable "Tablo". Chaque élément représente une ligne. Il est beaucoup plus rapide de lire une variable en mémoire que de lire un 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
    Dim Data As String, Tablo As Variant, nbzone As Integer
    Set Fs = CreateObject("Scripting.FileSystemObject")
    Set Src = Fs.OpenTextFile("C:\Users\Daniel\Documents\Donnees\Daniel\Excel\ADO\volume.txt", 1)
    While Not Src.AtEndOfLine 'tant qu'on n'est pas en fin de fichier on saute des colonnes
         Src.Skip (1)
    Wend
    nbzone = Src.Column
    Data = Src.ReadAll
    Tablo = Split(Data, vbCrLf)
    'nbzone = (Src.Column - 22) / 21 / 2
    For Each Item In Tablo
        'item représente une ligne
        'tu fais ton traitement ici
    Next Item
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  14. #14
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous

    Tu dis
    ... car pour le moment je souhaites juste récupéer le nombre de lignes et zones.
    Et comme tu veux être rapide (du moins c'est ce que j'ai compris), dans ce cas moi j'ouvrirai mon fichier Texte dans Excel directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Workbooks.OpenText Filename:=file_select, _
            Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
            Array(Array(0, 1), Array(21, 1), Array(25, 1), Array(67, 1)), _
            TrailingMinusNumbers:=True
    (Les Arrays te donne l'endrois ou tu coupes ton fichiers en colonnes que tu veux)
    Une fois fait c'est un feuille Excel et tu en fais ce que tu veux

    C'est hyper hyper rapide

    Nb : file_select : est une variable qui contient ton fichier Texte

    Tu dis si cela te conviens

    @+
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  15. #15
    Membre régulier
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Points : 96
    Points
    96
    Par défaut
    Non, avec le code suivant, toutes les lignes sont dans la variable "Tablo". Chaque élément représente une ligne. Il est beaucoup plus rapide de lire une variable en mémoire que de lire un fichier.
    Merci Daniel ! Pour le moment je suis sur une autre partie du code. Dès que je l'ai finis, je teste ta solution et te donne un retour


    Et comme tu veux être rapide (du moins c'est ce que j'ai compris), dans ce cas moi j'ouvrirai mon fichier Texte dans Excel directement :
    Le truc c'est qu'après les données vont dans des cases précises et elle sont utilisées plusieurs fois.
    La sub ne fais extraire les données et les placer dans un tableau "fictif".
    Je te montre la sub entière de manière à ce que ça soit plus explicit (et j'ai surement pas tout saisie ce que tu as proposé)
    Ce n'est pas moi qui est codé cette partie, elle fonctionne parfaitement, juste un peu lente pour les gros fichiers textes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    Sub ExtractionTemp(x As String)
        Dim i As Long, j As Integer, Nbzone As Long, nbligne As Long
        Dim temps As Double, Pastps As Double, tps As Double, temp As Double
        Dim Ptps As String
        Dim fs As Object, src As Object
     
        'On initialise à 0 cette variable permet de commencer la 2ème séquence à la fin de la 1ère pour le temps
        'Lorsqu'on a plusieurs séquence on rajoute le temps de la séquence précédente
        tps = 0
     
     
        'Si on n'a pas entré de fichiers on sort de la sub, on n'a pas de calculs à faire
        If x = Empty Then
            Exit Sub
        End If
     
        'A mettre lors de la création d'un fichier
        'src correspond à l'ouverture du fichier résultat
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set src = fs.OpenTextFile(x, 1)
     
     
        '           ***** Compte le nombre de lignes et colonnes du fichier courant *****
     
        'tant qu'on n'est pas en fin de ligne on saute un caractère
        While Not src.atendofline
            src.Skip (1)
        Wend
     
        Nbzone = (src.Column - 22) / 21 / 2
     
        'tant qu'on n'esr pas en fin de fichier on saute des lignes
        While Not src.AtEndOfStream
            src.skipline
        Wend
     
        nbligne = src.Line
     
        'création du tableau en fonction du nombre de lignes et de zones
        ReDim Tableau_Extraction_Temperature(1 To nbligne, 0 To Nbzone) As Single
     
        'On ferme le fichier
        src.Close
     
     
        '                    ***** Lecture du fichier *****
     
        Set src = fs.OpenTextFile(x, 1)
     
            'on boucle sur les lignes
            For i = 1 To UBound(Tableau_Extraction_Temperature, 1) - 1
     
                'on rempli manuellement la 1ère colonne du tableau avec les temps
                j = 0
                'on saute les 2ers caractères qui correspondent à des blancs
                src.Skip (2)
                'on lit les 18 prochains caractères qui correnspondent aux T°
                Ptps = src.read(18)
                'on remplace les points par des virgules
                Ptps = Replace(Ptps, ".", ",")
                'on transforme la chaine de caractère en réel et on ajoute le temps de la séquence précédente
                Pastps = CDbl(Ptps) + tps
     
                'on introduit la colonne temps dans la 1ere colonne du tableau
                Tableau_Extraction_Temperature(i, 0) = Pastps
     
     
                'on saute 2 caractères pour arriver à la lecture des températures
                src.Skip (2)
     
                For j = 1 To Nbzone
                    'on saute le 1er caractère qui est un blanc
                    src.Skip (1)
     
                    'on fait un test sur le caractère d'après pour savoir si c'est un "-" ou un blanc
                    If src.read(1) = " " Then 'si c'est un blanc on saute ce caractère
                        'src.Skip (1)
                        'on arrondie les T° à 2entiers
                        temp = Round(Val(src.read(18)), 2)
                        'on rempli le tableau avec les T°
                        Tableau_Extraction_Temperature(i, j) = temp
                        'on saute les 22 prochains caractères qui correspondent à la colonne humidité
                        src.Skip (22)
                        'quand on arrive à la dernière colonne on passe à la ligne
                        If j = Nbzone Then
                        src.skipline
                        End If
                    Else
                        'on arrondie les T° à 2entiers
                        temp = Round(Val(src.read(18)), 2)
                        temp = -temp
                        'on rempli le tableau avec les T°
                        Tableau_Extraction_Temperature(i, j) = temp
                        'on saute les 22 prochains caractères qui correspondent à la colonne humidité
                        src.Skip (22)
                        'quand on arrive à la dernière colonne on passe à la ligne
                        If j = Nbzone Then
                        src.skipline
                        End If
                    End If
                Next j
          Next i
     
    'on donne à la variable tps le dernier temps de la séquence pour commencer la 2eme séquence avec le temps final de la précédente
    tps = Pastps
     
    'on ferme le fichier
    src.Close
     
    End Sub
    Cordialement

  16. #16
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Encore une fois, ça serait bien d'avoir des données avec le code; sinon, c'est comme avoir les couverts sans le plat.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  17. #17
    Membre régulier
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Points : 96
    Points
    96
    Par défaut
    Encore une fois, ça serait bien d'avoir des données avec le code; sinon, c'est comme avoir les couverts sans le plat.
    Je comprends, mais je n'ai sans doute pas le droit de diffuser le code.
    Ensuite je ne peux pas mettre tout le code impliqué avec la sub, il serait trop long.
    Je pensais qu'en mettait la sub entière se serait assez explicite car elle est assez indépendante du reste du code.
    Il y a seulement le x qui correspond à l'adresse du fichier txt présent dans un sous dossier (parmi un dossier).

    Je suis prêt à te donner d'autres renseignement si tu le souhaites et si l'exemple du fichier text n'est pas suffisant.

    Merci

  18. #18
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    C'est la structure des données qui importe. S'il y a des données confidentielles avec les températures, change-les. Encore une fois, je n'ai besoin que de 3 ou 4 lignes.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  19. #19
    Membre régulier
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Janvier 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte matériel
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 113
    Points : 96
    Points
    96
    Par défaut
    Le fichier exemple que j'avais posté n'est pas suffisant?
    Si tu ne l'avais pas vu, je le reposte

    exemple.txt

    Cordialement

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut une demo pour pour toi
    selon ton fichier texte de 3 ligne

    je te propose ceci:
    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
    Sub recuptemps()
    ' Lit le contenu d'un fichier dans une variable
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile("C:\Users\Patrick\Desktop\exemple.txt", 1)'chemin complet du fichier a adapter
    texte_complet = f.ReadAll
    nbligne = Split(texte_complet, vbCrLf)
    For i = LBound(nbligne) To UBound(nbligne)
    nbcolonnes = UBound(Split(nbligne(i), "   "))
    MsgBox "ligne  " & i + 1 & "  contient " & nbcolonnes + 1 & vbCrLf & "***************************************" & _
     vbCrLf & " les voici " & vbCrLf & "le 2 eme  " & Split(nbligne(i), "   ")(1) & vbCrLf & _
     "le 4 eme  " & Split(nbligne(i), "   ")(3) & vbCrLf & _
     "le 5 eme  " & Split(nbligne(i), "   ")(4)
    Next
     
    End Sub
    adapte le chemin de ton fichier text
    c'est pas compliqué
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2014, 13h35
  2. Réponses: 2
    Dernier message: 15/11/2009, 16h03
  3. Vérifier le nombres de lignes et colonnes utilisé
    Par derin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/09/2008, 15h22
  4. Réponses: 4
    Dernier message: 09/07/2008, 09h43
  5. Compter le nombre de ligne où colonne(x)=colonne(y)
    Par titou2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/05/2007, 19h10

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