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 :

Problème de format des données, à partir d'un fichier txt [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Homme Profil pro
    Electronicien
    Inscrit en
    Février 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien

    Informations forums :
    Inscription : Février 2014
    Messages : 20
    Par défaut Problème de format des données, à partir d'un fichier txt
    Bonjour,

    je fais appel à vous, car cela fait deux semaines que je tourne en rond.
    Je vous expose mon problème :

    je désire récupérer des données présentes dans des fichiers txt.
    Je scrute le fichier txt, je lis chaque ligne via la méthode Line Input #.
    Je pose chaque donnée lue dans une cellule. A la fin je me retrouve avec une colonne de données en format texte.
    pour pouvoir travailler avec ces données, à chaque fois que je pose une donnée dans une cellule je la multiplie par 1.
    puis je selectionne la colonne et j'impose le format "General".

    Tous ceci fonctionne pour le premier fichier lu, mais les suivant reste en format texte.
    Et là je ne sais plus comment faire.

    Merci d'avance pour votre aide.
    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
     
        Sub OuvertureFichier()
     
    'La lecture d'une ligne se fait via la méthode Line Input #.
    'Le contenu est alors envoyé dans une variable de type String.
    'Cet exemple ne lit qu'une seule ligne : la première. Pour lire la totalité du fichier,
    'il faut itérer l'opération jusqu'à la fin du fichier.
    'La fonction EOF (End Of File) permet de savoir si la fin du fichier a été atteinte.
     
    Dim intFic As Integer
    Dim strLigne As String
    Dim Ligne As Integer
    Dim Col As Integer
    intFic = FreeFile
    Ligne = 3 'permet de commencer à écrire les valeurs à la ligne 4 dans Ligne=Ligne+1
    Col = 1 'je positionne en colonne 1
     
     
    Open "C:\Users\marin\Desktop\MonDossierEssais\memeSonde\P180516\104.DON" For Input As intFic
    While Not EOF(intFic)
        Ligne = Ligne + 1
        Line Input #intFic, strLigne
    '    MsgBox strLigne
        Cells(Ligne, Col) = strLigne
        Cells(Ligne, Col) = Cells(Ligne, Col) * 1
    Wend
     
    Range("A4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.NumberFormat = "General"
     
    Close intFic
     
    Selection.Copy ' copie la colonne selectionnée
    Range("E4").Select ' position en E4
    ActiveSheet.Paste ' copie la colonne
    '----------------------------------------------------------------------------------------------------
     
    Range("A4").Select                                      'je positionne en A4
        Range(Selection, Selection.End(xlDown)).Select      'je sélectionne la colonne
        Application.CutCopyMode = False                     'j'éfface la colonne
        Selection.ClearContents                             '
        'Range("A4").Select                                 '
     
    '----------------------------------------------------------------------------------------------------
    Ligne = 3 'permet de commencer à écrire les valeurs à la ligne 4 dans Ligne=Ligne+1
    Col = 1 'je positionne en colonne 1
     
     
    Open "C:\Users\marin\Desktop\MonDossierEssais\memeSonde\P165829\1.DON" For Input As intFic
    While Not EOF(intFic)
        Ligne = Ligne + 1
        Line Input #intFic, strLigne
    '    MsgBox strLigne
        Cells(Ligne, Col) = strLigne
        Cells(Ligne, Col) = Cells(Ligne, Col) * 1
    Wend
     
     
     
    End Sub

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037

  3. #3
    Membre averti

    Homme Profil pro
    Electronicien
    Inscrit en
    Février 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien

    Informations forums :
    Inscription : Février 2014
    Messages : 20
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Merci Menhir pour cette intervention rapide, je vais voir cela de plus près, je suis débutant en VBA.....mais je m'accroche.
    Je vais voir comment définir un "Array" d'après "FieldInfo".

  4. #4
    Membre averti

    Homme Profil pro
    Electronicien
    Inscrit en
    Février 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Electronicien

    Informations forums :
    Inscription : Février 2014
    Messages : 20
    Par défaut Problème de format des données, à partir d'un fichier txt
    Voilà je suis sur la bonne piste, merci pour votre aide

    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
    Sub Ouvrir1fichier()
    '
    ' Macro1 Macro
    '
     
    '
        ChDir "C:\Chemin du répertoire contenant le fichier"
        Workbooks.OpenText Filename:= _
            "C:\Chemin du répertoire contenant le fichier\fichier1.txt", Origin:=xlMSDOS, StartRow _
            :=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
            , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
            TrailingMinusNumbers:=True
     
            ChDir "C:\Chemin du répertoire contenant le fichier"
        Workbooks.OpenText Filename:= _
            "C:\Chemin du répertoire contenant le fichier\fichier2.txt", Origin:=xlMSDOS, StartRow _
            :=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
            , Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
            TrailingMinusNumbers:=True
     
     
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            Selection.Copy
            Windows("Ouvrir1fichier.xlsm").Activate
            ActiveSheet.Paste
        Windows("fichier2.txt").Activate
        ActiveWindow.Close SaveChanges:=False
     
        Windows("fichier1.txt").Activate
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            Selection.Copy
            Windows("Ouvrir1fichier.xlsm").Activate
            Range("B1").Select
            ActiveSheet.Paste
        Windows("1.DON").Activate
        ActiveWindow.Close SaveChanges:=False
     
    End Sub

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

Discussions similaires

  1. [Vxi3] Problème de rafraichissement des données à partir d'Excel
    Par dessinateurttuyen dans le forum Webi
    Réponses: 3
    Dernier message: 09/03/2011, 13h33
  2. Réponses: 4
    Dernier message: 16/09/2010, 22h33
  3. Import Excel : problème de format des données
    Par Fanette85 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/02/2008, 13h08
  4. Réponses: 2
    Dernier message: 26/01/2007, 14h58

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