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-E]Créer un fichier txt depuis une feuille Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 48
    Points
    48
    Par défaut [VBA-E]Créer un fichier txt depuis une feuille Excel
    Bonjour!
    Je souhaite programmer une manipulation depuis VBA pour copier une feuille active dans un fichier texte, et je ne sais vraiment pas comment faire.
    En fait, je voudrais que depuis ma feuille, je lance une macro qui me copie les données de la feuille dans un fichier .txt existant ou que l'on créée par la manipulation...
    je ne sais vraiment pas comment procéder et je n'ai rien trouver dans les tutoriels!!

    Merci d'avance!!!

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Petite recherche avancée sur le forum, et voila:
    http://www.developpez.net/forums/vie...=fichier+texte

    A toi d'adapter ça à ton propre cas.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Bin en fait je ne veux pas faire un Enregistrer sou mais une copie.. c'est a dire que mon fichier excel source ne soit pas impacté! est ce possible ou dois je passer par la méthode Save as obligatoirement?

  4. #4
    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 543
    Points
    15 543
    Par défaut
    Tu peux enregistrer la feuille courante en format csv. C'est un txt.
    Attention : Enregistré manuellemnet, les séparateur sont des points-virgules mais enregistré par macro, les séparateurs sont des virgules.
    Syntaxe pour obtenir des virgules comme séparateurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveWorkbook.SaveAs FileName:="D:\NomRep\NomFich.csv", _
            FileFormat:=xlCSV, CreateBackup:=False
    Le mieux, si tu veux conserver le point-virgule comme séparateur est de créer le txt de toute pièce en enregistrant cellule par cellule.
    Enfin, ce code permet d'ajouter les données de plusieurs feuilles de calculs dans ton txt, contrairement au csv (version VBA97) qui n'enregistre que la feuille active.

    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
    Sub CréerFichierCSV()
    Dim i, j, DernièreLigne, DernièreColonne
        NbreDeFeuilles = ActiveWorkbook.Worksheets.Count 'compte le nombre de feuille de ton classeur
        Application.ScreenUpdating = False  'Fige l'écran (évite les mvt d'écran)
        Open "d:\FichierTextSéparateurPointVirgule.csv" For Output As #1  'Tu crées le fichier text
        For FeuilleAcopier = 1 To NbreDeFeuilles
            Worksheets(FeuilleAcopier).Select
            'Dernière colonne :
            'On suppose qu'il existe une entête pour toutes les colonnes renseignées
            DernièreColonne = Cells(1, 1).SpecialCells(xlCellTypeBlanks).Column - 1
            'Dernière ligne renseignée
            DernièreLigne = Cells(1, 1).SpecialCells(xlCellTypeLastCell).Row - 1
             'La lecture des cellules commence en A1 dans chaque feuille de calcul
            For i = 1 To DernièreLigne
                For j = 1 To DernièreColonne - 1
                    Print #1, Cells(i, j).Value + ";"; 'ici, le séparateur
                Next j
                Print #1, Cells(i, j + 1).Value ' ici pas de séparateur pr le saut de ligne
            Next i
        Next FeuilleAcopier
        Close #1
        Application.ScreenUpdating = true
    End Sub
    Tu dis

  5. #5
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Super!! merci bcq!!

    Un grenoblois en plus..


    J'essaye avec ca. Merci!

  6. #6
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Je ne veux pas faire le grognon, marie10, mais le lien que je t'ai donné hier contenait une réponse de Ouskeln'or à peu près identique à celle qu'il a du te redonner...
    Mais bon, il fallait descendre jusqu'à la 4ème réponse...
    Après, moi, ce que j'en dis...

  7. #7
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Bin oui dslée... mais j'ai pas reussi a faire marcher le code du lien, et puis je ne l'avais pas trouvé avant que tu me le donnes! Donc vraiment dslée...

    Enfin quoiqu'il en soit, j'ai encore une petite question.... Le code marche donc bien maintenand, mais il ne revient pas a la ligne dans le fichire texte en meme temps que sur Excel.. est ce normal et comment paramétré ca autrement??
    Voila mon code si jamais c'est possible avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Open "c:\FichierTextSéparateurPointVirgule.txt" For Output As #1  'Tu crées le fichier text
     
            Sheets("Upload").Select
            Cells(1, 1).Select
            i = 1
            While Len(Cells(i, 1)) > 0
                For j = 1 To 3
                    Print #1, Cells(i, j).Value;
                Next j
            i = i + 1
            Wend
        Close #1
    :

  8. #8
    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 543
    Points
    15 543
    Par défaut
    Hello,

    Dans le code que je t'ai donné, il y a ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            For i = 1 To DernièreLigne 
                For j = 1 To DernièreColonne - 1 
                    Print #1, Cells(i, j).Value + ";"; 
                Next j 
                Print #1, Cells(i, j + 1).Value 
            Next i
    le deuxième Print #1, Cells(i, j + 1).Value n'était pas là pour faire joli mais pour faire le passage à la ligne suivante
    Le point virgule évite ce saut à la ligne pour chaque écriture d'une cellule.

    Plus d'explications sur simple demande

    A+

  9. #9
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Ouii super ca marche!
    Merci bcq!!!

  10. #10
    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 543
    Points
    15 543
    Par défaut
    Super ! Alors un petit coup de "Résolu" pour fêter ça, tu sais, le bouton en bas et à gauche...

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

Discussions similaires

  1. [Toutes versions] lecture et redirection de données d'un fichier .txt vers une feuille Excel
    Par Max_F dans le forum Excel
    Réponses: 1
    Dernier message: 30/10/2014, 22h46
  2. Réponses: 6
    Dernier message: 28/09/2012, 21h51
  3. [VBA-E] créer un fichier .txt
    Par Lucas42 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2007, 18h13
  4. Réponses: 3
    Dernier message: 24/04/2007, 11h39
  5. [VBA-E] créer un fichier et mettre une photo
    Par morgan47 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/06/2006, 09h41

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