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 :

Format des données Excel exportée dans Word


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut Format des données Excel exportée dans Word
    Bonjour,
    J'ai trouvé sur ce forum, un grand merci , et adapté à mes besoins, du code pour exporter des données Excel dans Word.
    L'import se fait correctement sauf pour ce qui est du format de mes données.
    J'importe deux type de données, l'un est du type % l'autre du type €, or dans Word les formats ne sont pas conservés.
    Par exemple 71.93% devient 0,719299287410926 , 2.81% devient 2,81472684085511E-02 et € 8.420.000 devient 8420000.
    Quel code puis-je ajouter à ma macro pour garder le format source?
    Faut-il au contraire forcer le format dans Word?

    Merci pour aide en ces temps de farniente, pas pour tous surement.

    Eric


    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
    Sub exportWord()
     
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim i As Byte
     
    Set WordApp = CreateObject("word.application") '
    Set WordDoc = WordApp.Documents.Open("C:\_mon fichier.docx")
    WordApp.Visible = False 
    For i = 1 To 6
     
    WordDoc.Bookmarks("OLE_LINK" & i).Range.Text = Cells(i + 2, 10)
     
    Next i
     
    WordApp.Visible = True 
     
     
    End Sub
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    pour les € et les %, si tu n'utilises pas les séparateurs de millier, tu peux essayer de remplacer
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ... = Format(Cells(i + 2, 10).Value, Replace(Cells(i + 2, 10).NumberFormatLocal, ",", "."))
    mais ça ne fonctionnera pas pour les dates

    Patrice
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  3. #3
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut



    Bonjour,

    le problème vient de la ligne n°12 incomplète !

    Quand un objet de type Range n'a pas de propriété spécifiée, VBA prend souvent pas défaut .Value, rarement .Text
    Donc là pas de bol, il a choisi la première, donc essayer avec la deuxième !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  4. #4
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    @ Patrice740

    Bonjour Patrice,
    Cette méthode fonctionne mais pour les valeurs en € je n'obtiens plus de séparateur de millier, ce qui rend la lecture difficile au delà d'un certain montant.
    J'ai essayé de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... = Format(Cells(i + 2, 10).Value, Replace(Cells(i + 2, 10).NumberFormatLocal, ",", "."))
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... = Format(Cells(i + 2, 10).Value, Replace(Cells(i + 2, 10).NumberFormatLocal, " ", ","))
    Ce qui me donne un résultat satisfaisant pour les valeurs en € mais les valeurs en % sont arrondies ce qui ne convient pas.

    Je pense pouvoir résoudre ce problème en utilisant deux macros appelée l'une après l'autre : en travaillant avec l'une sur les données en € et avec la seconde avec les données en %.
    Mais n'y-a-t-il pas plus simple?

    En tous cas merci pour votre aide

    Eric

    @ Marc-L

    Bonjour Marc,
    J'ai essayé d'ajouter
    mais sans succès, je ne sais pas à quel objet appliquer une propriété

    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  5. #5
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut





    Ligne n°12, s'il s'agit bien de récupérer l'affichage d'une cellule : Cells( … ).Text comme indiqué pourtant dans l'aide …

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  6. #6
    Membre éprouvé
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Points : 1 124
    Points
    1 124
    Par défaut
    Merci Marc,
    C'est parfaitement ce que je cherchais, j'enregistre le conseil
    Eric

    A l'attention de ceux que cela pourrait intéresser voici le code qui fonctionne parfaitement, j'ai même testé avec des données au format date sans soucis.

    Merci à Marc-L et Patrice740

    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
    Sub exportWord()
    'nécéssite d'activer la référence Microsoft Word xx.x Object Library
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim i As Byte
     
    Set WordApp = CreateObject("Word.Application") 'ouvre session word
    Set WordDoc = WordApp.Documents.Open("C:\_monfichier.docx") 'ouvre document Word
    WordApp.Visible = False 'word masqué pendant l'operation
     
                'les signets du document Word sont nommés OLE_LINK1 , OLE_LINK2 ,...,OLE_LINK6
     
               For i = 1 To 6
               WordDoc.Bookmarks("OLE_LINK" & i).Range.Text = Cells(i + 2, 10).Text
               Next i
     
    WordApp.Visible = True 
     
     WordDoc.Close
    WordApp.Quit 
    End Sub
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

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

Discussions similaires

  1. Mise à jour des données Excel exportées dans Word
    Par eric4459 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/01/2015, 16h04
  2. importer des données de listes dans word
    Par merlin73 dans le forum SharePoint
    Réponses: 0
    Dernier message: 04/12/2007, 15h10
  3. [CSV] Format des données exportées dans Excel
    Par magsmile dans le forum Langage
    Réponses: 6
    Dernier message: 07/09/2007, 17h46
  4. [VBA-E] Exporter des données Excel dans Word
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/08/2007, 19h25
  5. Réponses: 2
    Dernier message: 30/10/2006, 22h14

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