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 :

Macro Exporter Colonne vers fichier texte


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 58
    Points : 57
    Points
    57
    Par défaut Macro Exporter Colonne vers fichier texte
    Bonsoir à tous,

    Dans le cadre de mon projet j'aimerais créer sur ma feuille excel un bouton permettant de ressortir les valeurs de cellules d'une colonne sur un fichier .txt. La seule condition est qu'elles ne soient pas vides ( <>"").
    J'ai fait un tour rapide sur internet mais je ne vois pas comment procéder (j'ai jamais fait de vba de ma vie entiere ! ).

    Bon l'idée est de créer mes variables String pour le chemin du fichier et le nom du fichier. Après au niveau de la programmation je pense que je dois simplement créer une boucle (si la ligne n'est pas vide je l'ajoute au fichier texte etc...). Alors avec les histoires de range, etc , (je ne vois pas comment il sait qu'il doit aller à la ligne sur le fichier .txt par ex).
    Tout ceci est un peu confus peut etre mais si vous pouviez m'aider, ça serait cool .

    Pour résumer j'aimerais prendre toutes les données (du texte) entre D5 et D100 non vides et les insérer dans un fichier .txt avec le respect des lignes.

    Merci pour votre aide

    I need i²

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour,
    Tu dis n'avoir jamais "fait de VBA de ta vie entière"
    J'ai donc choisi la méthode la moins difficile à comprendre, bien que je ne l'utiliserais pas pour moi-même.
    "moins difficile" reste toutefois très difficile si tu ne connais pas du tout VBA :

    Cet exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim i As Long, derlig As Long, tabl
    derlig = Range("A" & Rows.Count).End(xlUp).Row
    tabl = Range("A1:A" & derlig)
    Open "D:\essai5.txt" For Output As #1
    For i = 1 To UBound(tabl, 1)
     If tabl(i, 1) <> "" Then
       Print #1, tabl(i, 1)
     End If
    Next
    Close #1
    Va créer un fichier "D:\essai5.txt" et y écrire, ligne après ligne, toutes les cellules non vides de la colonne 1 de la feuille active.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Le plus simple, à mon avis, est de créer un nouveau Workbook dans lequel tu copieras tes données sans les cellules vides et ensuite tu l'enregistre en tant que fichier txt.

    Tu crées un nouveau fichier avec un WorkBooks.Add (mets sa référence dans une variable Workbook pour le retrouver).
    Pour ne prendre que les cellules non vides, tu appliques la méthode SpecialCells(xlCellTypeConstants) au Range qui référence ta plage D5 à D100.
    https://msdn.microsoft.com/fr-fr/lib.../ff196157.aspx
    Sur tout ça, tu fais un Copy (le Copy de Range, pas celui de Worksheet) pour copier ça dans le nouveau fichier.
    https://msdn.microsoft.com/fr-fr/lib.../ff837760.aspx
    Tu enregistres le nouveau fichier en tant que texte en mettant comme second paramètre pour ton SaveAs un xlTextWindows.
    https://msdn.microsoft.com/fr-fr/lib.../ff841185.aspx
    Tu fermes le nouveau fichier avec un Close.

    En 4 lignes (5 si on compte la déclaration de variable), c'est fait. Et sans boucles.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 58
    Points : 57
    Points
    57
    Par défaut
    Merci pour vos retours, je testerai asap et vous donnerai le résultat, bonne soirée !

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Heu ... asap ?
    Je traduis cela sur un forum francophone par (acronyme) Aide et Services A la Personne... et ne comprends donc pas vraiment le rapport avec la présente discussion. Peux-tu m'éclairer sur ce point qui m'échappe ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par unparia Voir le message
    Heu ... asap ?
    Je traduis cela sur un forum francophone par (acronyme) Aide et Services A la Personne...
    Pas vraiment non. C'est pour As Soon As Possible. (Aussitôt que possible en franglais, dès que possible en français.)
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 58
    Points : 57
    Points
    57
    Par défaut
    Bonjour à tous,

    J'ai testé la méthode de unparia car elle me parlait bcp mieux. Pour prendre toutes mes infos de de D10 jusqu'à la fin sans prendre en compte les vides, voici ce que ça donne et ça fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim i As Long, derlig As Long, tabl
    derlig = Range("D" & Rows.Count).End(xlUp).Row
    tabl = Range("D10:D" & derlig)
    Open "C:...\test1.txt" For Output As #1
    For i = 10 To UBound(tabl, 1)
     If tabl(i, 1) <> "" Then
       Print #1, tabl(i, 1)
     End If
    Next
    Close #1
    Vu l'aide (très rapide) je pense que j'ai un peu de temps pour l'améliorer. Je vais essayer que cela crée un fichier NOMDELACELLULEA2.txt automatiquement plutôt que de le créer à la main avant.

    Merci en tout cas pour tout

    I need i²

    Ps: (Asap= As soon as possible, en général je ne suis pas fan d'utiliser l'anglais à tout va mais ce terme là je l'aime bien ).

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 58
    Points : 57
    Points
    57
    Par défaut
    Je viens de m'apercevoir qu'il créait tout seul le fichier .txt ! (génial pas la peine de le créer.

    Je pense pouvoir finir le boulot tout seul.

    Merci pour votre aide !

  9. #9
    Invité
    Invité(e)
    Par défaut
    Arrêtez de dire «ASAP»: ça manque d’«urbanité», nous dit l’Académie Française

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour rdurupt
    C'est surtout laid, même en anglais.
    Je parle l'anglais couramment mais, même dans cette langue, je n'utilise jamais "as soon as possible" et encore moins "ASAP" ... (qui sonne comme un mouchoir sale dont on se défait pour éviter de rappeler à l'ordre de manière plus claire et complète)
    Si c'est vraiment urgentissime et que je veux marquer ma volonté de ne pas lvoir traîner les choses, j'utilise " at the earliest opportunity" (que je ne "traduirais jamais par un laid "ATEO") !!!
    Mais ce n'était qu'une parenthèse, sur ce forum francophone.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

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

Discussions similaires

  1. [AC-2003] export table vers fichier texte
    Par vali25 dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/03/2012, 20h05
  2. Réponses: 4
    Dernier message: 16/09/2009, 16h21
  3. Exporter Recordset vers fichier texte
    Par aures64 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/11/2006, 02h25
  4. Export Table Acces vers fichier Texte
    Par ston dans le forum Access
    Réponses: 2
    Dernier message: 04/04/2006, 17h21
  5. Export vers fichier text
    Par Aurèl90 dans le forum Access
    Réponses: 10
    Dernier message: 26/10/2005, 10h26

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