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 - copie sous en .txt


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 44
    Par défaut VBA - copie sous en .txt
    Bonjour,

    J'ai un code qui enregistre en fichier .txt sous le nom "recette1"

    Je souhaiterais faire plutôt une copie sous, autrement il enregistre mon fichier excel en .txt.

    Voici le code que j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub savetxt()
     
    Application.ScreenUpdating = False
     
    Application.DisplayAlerts = False
     
        ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\RECETTE1.TXT", _
            FileFormat:=xlText, CreateBackup:=False
            Application.DisplayAlerts = True
     
    Application.EnableCancelKey = xlInterrupt 'Ou xlErrorHandler
     
    End Sub
    Si je change en:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveWorkbook.SaveCopyAs Filename:=
    Ça ne marche pas. Il me dit " erreur compliation - argument nommé introuvable"

    Pouvez-vous m'aider SVP.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Si tu veux enregistrer seulement un onglet, copie cet onglet (bouton de droite sur l'onglet > Déplacer ou copier...)
    Ça va te créer un fichier avec cet onglet.
    Enregistre le fichier créé sous...

    Tu peux tout faire ça avec l'enregistreur et ajuster le code au besoin.

  3. #3
    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
    Bonsoir
    ou le usedrange du sheets concerné dans un fichier.txt avec open for output et une boucle

    plus rapide et moins lourd le fichier a la fin
    des exemple xl to csv(.txt) il y en a à foison dont pour certain je suis l'auteur, le site a un moteur de recherche il faudrait s'en servir avant de poster
    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

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 44
    Par défaut
    Merci, ça m'as bien aidé.

    Quand tu sauvegardes cette copie en type CSV, le nouveau fichier n'est plus un fichier Excel mais bel et bien un csv ouvert dans Excel.
    citation de PARMI
    http://www.developpez.net/forums/d15...n-fichier-csv/

  5. #5
    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
    sans aller jusque la comme je l'ai dis plus haut on peut utiliser open for output

    exemple
    ici on sauve la plage que l'on veut en ".txt" ou ".csv"

    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
    Sub test()
    Dim rang As Range, fichier As String, r As String
    Set rang = ActiveSheet.UsedRange
    'on peut mettre ici
    'Set rang = Sheets("Feuil1").Range("A1:Z2000")
    'on construit le nom du fichier de destination
    nom = ThisWorkbook.Name
    r = Replace(Replace(rang.Address, ":", "-"), "$", "")
    nom = Mid(nom, 1, Len(nom) - 4) & "-" & rang.Parent.Name & "-" & r
    fichier = "C:\Users\" & Environ("UserName") & "\Desktop\" & nom
    'on peut se contenter de faire : fichier =" chemin en dur "
    ' maintenant on lance la fonction
    save_in_TXT_or_CSV rang, fichier ' pour sauver en ".txt"
    save_in_TXT_or_CSV rang, fichier, "csv" 'pour sauver en ".csv"
    End Sub
    fonction universelle
    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
     
    Function save_in_TXT_or_CSV(rang As Range, fichier As String, Optional ext As String = "txt")
    Dim i As Long, col As Long
    fichier = fichier & "." & ext
    For i = rang.Row To rang.Row + rang.Rows.Count
    ligne = ""
    For col = rang.Column To rang.Column + rang.Columns.Count
    ligne = ligne & Cells(i, col).Value & ";"
    Next
    texte = texte & Mid(ligne, 1, Len(ligne) - 2) & vbCrLf
    Next
    x = FreeFile
    Open fichier For Output As #x
    Print #x, texte
    Close #x
    End Function
    dans mes exemples précédents j'utilisais aussi une variable tableau ca peut effectivement jouer sur la rapidité
    l'avantage de cette méthode est que l'on sauve une plage bien distincte comme on veut
    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

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

Discussions similaires

  1. Macro VBA - copie de titre / sous-titre
    Par lithoshin dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 10/08/2014, 03h53
  2. [XL-2010] VBA Copie données relative au sous.totaux
    Par demahom08 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/12/2013, 06h11
  3. [XL-2013] Modif code VBA copie colle sous condition
    Par d.deneys dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/09/2013, 18h56
  4. [XL-2010] VBA copie coller de données sous condition de période
    Par demahom08 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/04/2013, 13h36
  5. [XL-2010] Macro VBA copie tableau Excel sous Powerpoint
    Par shakapouet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/04/2012, 09h47

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