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 :

import fichier texte Excel VBA


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut import fichier texte Excel VBA
    bonjour,
    L'instruction :
    [Application.Dialogs(x1DialogImportTextFile).Show]
    fait apparaitre plusieurs boîtes de dialogue successives.
    Je n'ai pas besion de la dernière (x1DialogDataSeries) car j'ai déjà présélectionné dans mon programme la cellule A1 où doit se faire l'importation.
    Comme je suis un débutant en VBA, je ne sais pas comment valider par programme le bouton OK de cette dernière boîte de dialogue (au lieu de le faire avec un click)
    Quelqu'un pourrait-il m'aider ?
    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Prends une boîte de dialogue qui ne pose pas des questions idiotes
    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
    Sub SélectionDunFichier()
    Dim NomFich$, NomFichPrincipal$, TabRep
        NomFichPrincipal = ThisWorkbook.Name 'Le fichier contenant la macro
     
        'Ouverture de la boîte de dialogue
        NomFich = Application.GetOpenFilename _
        (FileFilter:="Fichier texte(*.txt),*.txt", Title:="Sélectionner le fichier")
     
        'Nomfich comporte le chemin, le fichier n'est pas ouvert
        If NomFich = False Then
            MsgBox "Aucun fichier sélectionné."
            Exit Sub
        End If
     
        'Pour ouvrir ainsi ton fichier texte, tu dois connaître le séparateur
        'l'exemple ci-dessous utilise ";" comme séparateur (à adapter)
        Workbooks.OpenText Filename:=NomFich, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Semicolon:=True, DecimalSeparator:="."
        DoEvents
     
        ''le classeur actif est ton txt -> ci dessous si tu veux simplement copier la feuille
        'copie la feuille du txt dans le fichier principal en dernière position
        Sheets(1).Copy After:=Workbooks(NomFichPrincipal).Sheets(Workbooks(NomFichPrincipal).Sheets.Count)
        DoEvents
     
        'Pour avoir le nom du fichier sans le chemin
        TabRep = Split(NomFich, "\")
        NomFich = TabRep(UBound(TabRep))
     
        'ferme le fichier texte sans l'enregistrer
        Workbooks(NomFich).Close False
        DoEvents
     
    End Sub

  3. #3
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    cela ne me semble pas possible au premier abord.

    En effet, quand tu appelle la dialogbox d'import, celle-ci appelle les fenetres suivantes.

    Il faudrait donc pouvoir appeler séparément chaque dialogbox pour pouvoir agir sur le bouton OK de la dernière.

    edit: je n'avais pas rafraichi pour voir la réponse de "mon ami qui cherche inlassablement le nord"

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci
    Je pense devoir encore beaucoup vous solliciter !

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Une solution envisageable si tu ignores le séparateur de données (réponse à mp) En supposant le pb de la boîte de dialogue résolu
    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
    Sub FichierTxtCopieSurFeuilleDeCalculs()
    Dim Ligne As String, NoLigne As Long, NoCol As Integer
    Dim Tableau, Chemin$, nomFich$, separateur
     
        '*** ouverture "d"une" boite de dialogue ***
        'de laquelle on extrait :
        Chemin = "C:\LeRep\"
        nomFich = "LeFichier.txt" 'ou .csv
        '********************************
        'Ouverture du fichier
        Open Chemin & nomFich For Input As #1
     
        'Lecture
        While Not EOF(1)
            Input #1, Ligne
     
            'recherche du séparateur
            If instr(Ligne,";") <> 0 then ' ";"
                 separateur = ";"
            elseif instr(Ligne,vbtab) <> 0 then 'Tab
                 separateur = vbtab
            elseif instr(Ligne,",") <> 0 then ' ","
                 separateur = ","
            elseif instr(Ligne," ") <> 0 then ' espace
                 separateur = " "
            endif
     
            'création d'un tableau des données de la ligne
            Tableau = Split(Ligne, separateur)
            NoLigne = NoLigne + 1
     
            'transfert des données dans une feuille Excel vierge
            For NoCol = 0 To UBound(Tableau)
                 Cells(NoLigne, NoCol + 1).Value = Tableau(NoCol)
            Next
        Wend
        Close #1
    End Sub
    A+

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

Discussions similaires

  1. Import fichier texte dans un recordset depuis Excel
    Par geredonis dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/03/2014, 12h14
  2. [Excel 2003] import fichier texte : format nombre
    Par GEOFDEN dans le forum Excel
    Réponses: 2
    Dernier message: 01/05/2010, 12h13
  3. [AC-2007] Changer un fichier excel en fichier texte avec VBA
    Par fofomama dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/04/2010, 10h57
  4. [VBA] Importer fichier texte d'un lien HTML dans ACCESS
    Par VICTOIRE44 dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/12/2006, 10h58
  5. Réponses: 3
    Dernier message: 01/08/2006, 15h18

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