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 :

[VBA E07] Importation d'un fichier texte : problème FieldInfo


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 72
    Points : 68
    Points
    68
    Par défaut [VBA E07] Importation d'un fichier texte : problème FieldInfo
    Bonjour,

    1 - Je souhaite faire une macro pour automatiser l'import de fichiers textes dans des feuilles Excel (1 caractère par colonne, pas de séparateur).
    J'utilise Worksbook.OpenText et je voudrais passer le FieldInfo en paramètre.
    C'est à ce niveau que j'ai un bug. Est-ce que quelqu'un pourrait m'éclairer (notemment sur le typage du paramètre FieldInfo) ?

    Voici 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Function Import(ByVal NomFichier As String, ByVal NbMax As Integer)
     
    '   __________________________________________________
    '
    '   Construction du paramètre FieldInfo en fonction du nombre max de caractères
    '   Lecture du fichier
    '   Importe un caractère par colonne
    '   ___________________________________________________
     
    '   __________________________________________________
    Dim MaChaine             As String
    Dim MonTemp               As String
    Dim i                  As Long
    Dim j                  As Long
     
    '   __________________________________________________
     
    For i = 1 To NbMax
     
        j = i - 1
     
        If i = 1 Then
            MaChaine = "Array(Array(0, 1)"
        Else
            If i <> NbMax Then
                MaChaine = MaChaine & ", Array(" & j & ", 1)"
            Else
                MaChaine = MaChaine & ", Array(" & j & ", 1))"
            End If
        End If
     
    Next
     
    Cells(1, 1) = MaChaine
     
    Workbooks.OpenText Filename:=NomFichier, _
        Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=MaChaine, TrailingMinusNumbers:=True
     
    End Function
    2 - Est-ce que cette fonction permet d'importer des lignes dont le nombre de caractères est supérieur à 255 ?

    Merci d'avance,

    Cordialement

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,
    cela n'a rien à voir avec ta question, pour laquelle je ne saurais t'aider, mais il me semble que tu utilises incorrectement une fonction.

    Celle-ci doit en effet renvoyer une valeur en retour, et ce n'est pas le cas ici.

    qqchose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Function Import(ByVal NomFichier As String, ByVal NbMax As Integer) as string
     
    '..... ton code
    Import = "yes"
    end function
    Donc, si pas de valeur à retourner, remplace ta function par une SUB.

    mais c'était juste en passant.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  3. #3
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    J'ai déja fait quelque chose du même genre, je pense que le probléme vient du paramètre qui doit être un tableau et pas une chaine de caractère :

    Je te donne tout de suite un bout de mon code qui fonctionne a adapter bien sur ! :

    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
    ' ---------------------------------------------- '
    ' Renseigner le tableau pour la longueur des champs à convertir
    ' ---------------------------------------------- '
    Dim indice As Integer
    Dim a()
     
    ReDim Preserve a(0)
    a(0) = Array(Array(0, 2))
    For i = Fi To Max
        indice = indice + 1
        ReDim Preserve a(indice)
        a(indice) = Array(Cells(i, Fj), 2)
    Next
     
    ' ---------------------------------------------- '
    ' Ouverture du fichier a convertir
    ' ---------------------------------------------- '
    Workbooks.OpenText Filename:=MyPath, _
    Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:= _
    a

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 72
    Points : 68
    Points
    68
    Par défaut
    Merci pour votre aide.

    Je teste tout de suite

    --------Edit------------------------
    C'est bon, j'ai testé le code de aalex 38. C'est exactement ce que je cherchais.

    Merci à vous deux.

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

Discussions similaires

  1. [Toutes versions] Code vba macro excel 2010 import de plusieurs fichiers texte
    Par Eagle-I dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/12/2011, 12h25
  2. [XL-2000] VBA - Parcourir dossiers, importer données de fichiers textes dans excel
    Par news4teab dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/04/2010, 18h09
  3. [XL-2003] Import fichier texte - problème avec séparateur milliers
    Par nmicoud dans le forum Excel
    Réponses: 4
    Dernier message: 15/04/2009, 13h48
  4. Réponses: 2
    Dernier message: 04/06/2007, 15h39
  5. Réponses: 4
    Dernier message: 04/04/2007, 07h46

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