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 :

Création d'un fichier xls depuis un fichier xlsm via une macro [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Par défaut Création d'un fichier xls depuis un fichier xlsm via une macro
    Bonjour
    Je cherche à créer un fichier xls depuis un fichier xlsm via une macro
    J'ai une macro pour la création d'un fichier en csv qui fonctionne.
    Mais la création du même fichier en format xls ou xlsx ne fonctionne pas.
    J’ai changé le format .csv en .xls dans la macro
    J'obtiens un fichier mais les valeurs se trouvent sur la même colonne.
    Pouvez-vous m'aider
    Un grand merci.

    voici la macro

    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
    Sub Export_Modules()
     
    Dim Plage As Object, Ligne As Object, Tmp As String
    Dim Tmp_Article, Tmp_Qte, Tmp_Long, Tmp_Larg, Tmp_Num, Tmp_Sens, Tmp_Niv, Tmp_T_aller, Tmp_T_retour, Tmp_Qte_bague, Tmp_Qte_coupleur, Tmp_Qte_coupleur_rapide, Tmp_1 As Single
    Dim i As Integer
    i = 1
     
    Dim Chemin, CheminNouvNom As String
    Chemin = Workbooks(ActiveWorkbook.Name).Path
    Dim NomCourt As String
    NomCourt = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5)
    Dim NouveauNom As String
    NouveauNom = ("\Export_module_" & NomCourt & ".csv")
    CheminNouvNom = (Chemin & NouveauNom)
     
    Set Plage = Sheets("Export_trame").Range("A1:M" & Sheets("Export_trame").Range("A2000").End(3).Row)
    Open CheminNouvNom For Output As #1
     
    For Each Ligne In Plage.Rows
    Tmp = ""
    Tmp_Article = Sheets("Export_trame").Range("A" & i).Value
    Tmp_Qte = Sheets("Export_trame").Range("B" & i).Value
    Tmp_Long = Sheets("Export_trame").Range("C" & i).Value
    Tmp_Larg = Sheets("Export_trame").Range("D" & i).Value
    Tmp_Num = Sheets("Export_trame").Range("E" & i).Value
    Tmp_Sens = Sheets("Export_trame").Range("F" & i).Value
    Tmp_Niv = Sheets("Export_trame").Range("G" & i).Value
    Tmp_T_aller = Sheets("Export_trame").Range("H" & i).Value
    Tmp_T_retour = Sheets("Export_trame").Range("I" & i).Value
    Tmp_Qte_bague = Sheets("Export_trame").Range("J" & i).Value
    Tmp_Qte_coupleur = Sheets("Export_trame").Range("K" & i).Value
    Tmp_Qte_coupleur_rapide = Sheets("Export_trame").Range("L" & i).Value
    Tmp_1 = Sheets("Export_trame").Range("M" & i).Value
     
     
    If Tmp_1 <> 0 Then
           Tmp = (Tmp_Article & ";" & Tmp_Qte & ";" & Tmp_Long & ";" & Tmp_Larg & ";" & Tmp_Num & ";" & Tmp_Sens & ";" & Tmp_Niv & ";" & Tmp_T_aller & ";" & Tmp_T_retour & ";" & Tmp_Qte_bague & ";" & Tmp_Qte_coupleur & ";" & Tmp_Qte_coupleur_rapide)
     
            Print #1, Tmp
    End If
            i = i + 1
     
     Next
    Close
     
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je cherche à créer un fichier xls depuis un fichier xlsm via une macro
    J'ai des doutes quant au fait qu'il ne soit pas possible de créer un classeur suffixer xlsx depuis un classeur contenant des macros.
    Toutefois, il faudrait en savoir plus pour apporter une réponse pertinente.
    Sans afficher de code VBA, pourriez vous expliquer ce que vous souhaitez obtenir ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert éminent 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
    Par défaut
    En réalité, ce que tu fais n'est pas un fichier xls ou xlsx mais seulement un fichier qui en porte le nom.
    Ce n'est pas de modifier le nom qui va modifier la structure interne du fichier : tu peux essayer de mettre une étiquette "confiture de fraise" sur un pot de cornichons au vinaigre, c'est pas ça qui va changer le contenu.

    La seule chose que fait l'extension, c'est de relier un fichier avec le logiciel par défaut qui l'ouvre dans l'Explorateur Windows.
    Mais quand Excel va ouvrir ton fichier, il va s'apercevoir que ne n'est pas la structure interne d'un fichier Excel, donc il va l'ouvrir comme il peut. Ce qui donne rarement le résultat souhaité quand on ne prend pas certaines précautions.

    Perso, j'ai eu déjà à faire ce type d’acrobatie dans un cas où je n'avais pas le chois (transfert de données de centaines de fichiers générés par un shell script d'un vieil UNIX).
    La solution est d'utiliser des séparateur Tab qu'on peut générer avec un Chr(9) si ma mémoire est bonne (à vérifier sur une table ASCII).
    Dans ton code, remplace tes & ";" & par des & Chr(9) &.
    Ca ne va pas faire un vrai fichier Excel mais ça devrait s'ouvrir à peu près proprement.

    Cependant, il serait préférable d'abandonner la méthode séquentielle pour créer ce fichier et créer un vrai classeur avec Workbooks.Add et remplir les cellules de façon conventionnelle en le sauvegardant avec un SaveAs.
    Ce serait quand même plus simple et plus sûr, d'autant plus que, visiblement, tes données sources sont des cellules d'un classeur Excel.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Par défaut
    Bonjour

    Merci pour les réponses

    Avec chr(9) cela me donne le fichier voulu.

    Cependant, il serait préférable d'abandonner la méthode séquentielle pour créer ce fichier et créer un vrai classeur avec Workbooks.Add et remplir les cellules de façon conventionnelle en le sauvegardant avec un SaveAs.
    Ce serait quand même plus simple et plus sûr, d'autant plus que, visiblement, tes données sources sont des cellules d'un classeur Excel.

    N'etant pas un expert en Excel mais en Access comment faudrait-il modifier la macros pour avoir un vrai fichier excel ?
    Car le fichier s'ouvre avec un message d'erreur.

    Encore Merci d'avance

  5. #5
    Expert éminent 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
    Par défaut
    Citation Envoyé par Jeje57 Voir le message
    N'etant pas un expert en Excel mais en Access comment faudrait-il modifier la macros pour avoir un vrai fichier excel ?
    Je te l'ai dit.
    Tu crées un nouveau classeur avec Workbooks.Add
    Tu transferts tes données dedans avec un Copy sur la zone Range à copier.
    Tu sauvegarde l'ensemble avec un SaveAs.
    Lire ceci :
    https://docs.microsoft.com/fr-FR/off....workbooks.add
    https://msdn.microsoft.com/fr-fr/lib...0(v=office.15)
    https://docs.microsoft.com/fr-FR/off...orkbook.saveas

    Car le fichier s'ouvre avec un message d'erreur.
    Sans doute parce que Excel se rend compte qu'on a essayé de le tromper en mettant une étiquette "confiture de fraise" sur un pot de cornichon.
    Mais comme il est sympa, il l'ouvre quand même tout en balançant un message pour signifier qu'il n'est pas dupe.

    Il ne sera pas possible de faire mieux avec un enregistrement séquentiel.

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Par défaut
    Bonjour
    Merci pour m'avoir aidé.
    Cdt
    Jérôme

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

Discussions similaires

  1. Création d'un fichier Excel avec une macro
    Par lionel86500 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/02/2016, 11h40
  2. Fermer un FICHIER pdf via une macro
    Par fusee2013 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2013, 12h16
  3. Réponses: 1
    Dernier message: 01/12/2012, 09h47
  4. copier contenu d'un fichier text via une macro
    Par bassm dans le forum VBA Word
    Réponses: 9
    Dernier message: 11/12/2008, 11h13
  5. Réponses: 45
    Dernier message: 14/02/2008, 15h41

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