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 :

Plage de cellule en format txt


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Dévelopeur Excel
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Dévelopeur Excel

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Par défaut Plage de cellule en format txt
    Bonsoir à tous

    j'aurais besoin d'un code permettant d'enregistrer une plage dans une feuille de calcul en fichier Actionxx.txt
    sachant que le xx est un nombre récupéré dans une cellule
    La plage est A1;B24
    l'emplacement du fichier est le bureau C:\Users\xxxxxx\Desktop

    je précise que le code doit soi créer un nouveau fichier "Actionxx.txt", soi modifier un fichier existant

    Merci de vos réponses

    Cordialement Eric

  2. #2
    Membre confirmé
    Homme Profil pro
    Bénévole super actif pour association sportive
    Inscrit en
    Février 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Bénévole super actif pour association sportive

    Informations forums :
    Inscription : Février 2015
    Messages : 83
    Par défaut
    Bonjour Eric, l'enregistreur de macro va te faire 95% du travail, il restera éventuellement l'histoire de la création ou de la modification à forcer.
    Tu démarres l'enregistreur
    Tu sélectionnes et copie ta plage
    Tu la colles dans un nouveau classeur
    Tu enregistres au format texte en forçant le xx à la main
    Tu arrêtes l'enregistrement.

    Ensuite tu reprends la macro et tu remplace le xx par la valeur de ta cellule qui te donnera le bon N°.

    Quelle partie spécifique te bloque ?

  3. #3
    Membre averti
    Homme Profil pro
    Dévelopeur Excel
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Dévelopeur Excel

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Par défaut
    Bonjour et merci de ta réponse

    L'application étant destiné à divers utilisateurs, je souhaite qu'elle ne crée pas d'autre fichiers autre que ces fichiers txt le xx étant une incrémentation
    je souhaite également que tout se face en un seul clic sur un bouton.

    J'ai vu sur internet que cela est possible mais le contexte n'est pas le même, a vrai dire il est plus simple.

    Cordialement Eric

  4. #4
    Membre très actif
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Par défaut Solution déjà donnée
    Bonjour Zarkann,

    Tu devrai relire le message de poussemousse car il te donne la solution.

    Je vais donner un peu plus de précision, mais son message est très.

    1) Démarrer l'enregistreur
    2) Sélectionner et copier la plage
    3) Coller dans un nouveau classeur
    4) Enregistrer au format texte avec le nom "Action1.txt" (la première fois)
    5) Arrêter l'enregistrement.
    6) Reprendre le code pour créer une boucle afin d'incrémenter automatiquement le nom du fichier où enregistrer

  5. #5
    Membre averti
    Homme Profil pro
    Dévelopeur Excel
    Inscrit en
    Juillet 2016
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Dévelopeur Excel

    Informations forums :
    Inscription : Juillet 2016
    Messages : 27
    Par défaut
    Bonsoir

    Je suis donc bien obligé de créer un nouveau classeur
    Bon, je vais essayer cette solution.

    En tout cas merci à vous deux pour vos réponses.

    PS: je mettrais le post en "résolu" quand j'aurais terminé la programmation, que je partagerais pour d'autre...

    Cordialement Eric

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    oui si tu es un grand débutant …

    Sinon sans créer un nouveau classeur juste en lisant l'aide VBA interne des instructions Open … For et Print # et
    leurs exemples sans compter ceux dans les discussions de ce forum !


    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  7. #7
    Membre confirmé
    Homme Profil pro
    Bénévole super actif pour association sportive
    Inscrit en
    Février 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Bénévole super actif pour association sportive

    Informations forums :
    Inscription : Février 2015
    Messages : 83
    Par défaut
    Citation Envoyé par Zarkann Voir le message
    Bonsoir

    Je suis donc bien obligé de créer un nouveau classeur
    Bon, je vais essayer cette solution.

    En tout cas merci à vous deux pour vos réponses.

    PS: je mettrais le post en "résolu" quand j'aurais terminé la programmation, que je partagerais pour d'autre...

    Cordialement Eric
    Eric,
    tu peux aussi ouvrir une instance Word, coller ton texte et fermer en enregistrant au format txt.

    Tu peux t'inspirer de ce qui est indiqué ici : http://www.developpez.net/forums/d34...artir-d-excel/ ou ailleurs, le forum est rempli de bons exemples.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut exemple
    Bonsoir
    cet exemple enregistre au format texte la plage c5 f12 dans un fichier texte sur ton bureau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
        range2txt Sheets(1).Range("C5:F12")
    End Sub
    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
    Function range2txt(plage)
        Dim fichier As String, tablo, col As Long, lig As Long, x
        tablo = plage.Value
        fichier = "C:\Users\" & Environ("UserName") & "\Desktop\plage transformée.txt"
        x = FreeFile
        For lig = 1 To (UBound(tablo))
            For col = 1 To plage.Columns.Count
                texte = texte & tablo(lig, col) & ";"
            Next
            texte = texte & vbCrLf
        Next
        Open fichier For Output As #x
        Print #x, texte
        Close #x
    End Function
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    Salut

    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
    Option Explicit
     
    Sub ExportTxtChamp()
    Dim repertoire As Variant
    Dim champ As Variant
    Dim i, col
    Dim lig, ligne
     
      repertoire = "C:\Users\xxxxxx\Desktop"
      Open repertoire & "\" & "Action" & Sheets("feuil1").Range("c1") & ".txt" For Output As #1 'en exemple tu récupère un nombre en c1
     
      Set champ = Sheets("feuil1").Range("A1").CurrentRegion ' remplire le tableau nommé champ
      For lig = 1 To 24
        ligne = ""
        For col = 1 To 2
          ligne = ligne & champ.Cells(lig, col) & "#" ' le # est le séparateur!
        Next col
        Print #1, Left(ligne, Len(ligne) - 1)
      Next lig
      Close #1
     
    End Sub
     
    Sub ExportTxtChampDate()
    Dim repertoire As Variant
    Dim champ As Variant
    Dim i, col
    Dim lig, ligne
    Dim DeTE
     
    DeTE = Now
    Dim valeur_initiale As String
            Dim valeur_finale As String
        valeur_initiale = DeTE
     
        valeur_finale = Replace(valeur_initiale, "/", "-")
        valeur_finale = Replace(valeur_finale, ":", "_")
     
      repertoire = "C:\Users\xxxxxx\Desktop"
      Open repertoire & "\" & "Action" & Sheets("feuil1").Range("c1") & valeur_finale & ".txt" For Output As #1  'en exemple tu récupère un nombre en c1
     
      Set champ = Sheets("feuil1").Range("A1").CurrentRegion ' remplire le tableau nommé champ
      For lig = 1 To 24
        ligne = ""
        For col = 1 To 2
          ligne = ligne & champ.Cells(lig, col) & "#" ' le # est le séparateur!
        Next col
        Print #1, Left(ligne, Len(ligne) - 1)
      Next lig
      Close #1
     
    End Sub
    ExportTxtChamp : écrase à chaque fois les données

    ExportTxtChampDate : avec la date en créer un nouveaux!

    Mais bon c'est du travail mâché!

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    pour ajouter dans un fichier existant
    c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Open fichier For Append As #x
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    Oui Patrick tu as raison!!

    Je n'avais pas vu qu'il voulait le modifier! je croyait qu'il l'écrasait!

Discussions similaires

  1. Réponses: 12
    Dernier message: 28/04/2015, 11h30
  2. [XL-2003] Plage de cellules nommées avec formats différents déclenche un bug de listbox
    Par comme de bien entendu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2011, 15h12
  3. imprimer plage de cellules au format a4
    Par lelou54 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 29/11/2010, 23h13
  4. Conversion du format d'une plage de cellules Excel
    Par tarbala dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 13/06/2009, 00h47
  5. [VBA-E] [Excel] Protection d'une plage de cellules
    Par fikou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2002, 12h28

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