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] Copie de Word vers Excel : mise en formule


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut [Macro] Copie de Word vers Excel : mise en formule
    Bonjour à tous,

    Comme mon intitulé n'est pas limpide, je vais m'expliquer:
    j'ai fait une macro qui copie un paragraphe de Word vers Excel. Le problème se produit quand se paragraphe comment par un tiret comme par exemple :

    - ceci est mon paragraphe.

    Quand la macro le selectionne, le copie et le colle dans une cellule excel, le texte se transforme en :
    =- ceci est mon paragraphe.
    Il prend le tiret pour un moins et donc transforme mon paragraphe en formule, qui s'affiche logiquement dans ma feuille par #NOM?

    Quelqu'un a-t-il une idée pour résoudre ce problème?
    D'avance merci,
    Marc

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Je ne connais pas ta procédure pour coller le texte dans le fichier Excel mais essaye ceci en l'adaptant à ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PasteSpecial Format:="Texte"

  3. #3
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    476
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 476
    Par défaut
    Bonsoir
    Pour Excel c’est fonction non reconnue pour cela il affiche #NOM? Peut être qu'il faut précéder le signe - par un apostrophe comme ça
    ' - ceci est mon paragraphe.
    Bonne soirée
    Abed_H

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut RE
    Bonjour,

    Fring =>
    la ligne de collage est celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RECH.Sheets("Résultats").Cells(m, 4).PasteSpecial Paste:=xlValues, Operation:=xlNone
    J'avais en effet déjà essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RECH.Sheets("Résultats").Cells(m, 4).PasteSpecial Paste:=xlText, Operation:=xlNone
    Mais ça ne marchait pas
    Celle là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RECH.Sheets("Résultats").Cells(m, 4).PasteSpecial Format:="Text", Operation:=xlNone
    génère une erreur...

    Abed_H =>
    Le problème est que je n'ai pas le droit de modifier le document Word de base pour enlever les tirets. Une fois le collage effectué, la cellule devient tout de suite une formule et j'ai pas trouvé le moyen de la modifié automatiquement pour rajouter un caractère devant...

    Merci pour vos réponses,
    Marc

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Citation Envoyé par ML0808 Voir le message
    Bonjour,
    RECH.Sheets("Résultats").Cells(m, 4).PasteSpecial Format:="Text"
    génère une erreur...
    Oui deux choses :
    - lorsqu'on utilise PasteSpecial, il faut passer par des Select
    - Format:="Texte" et pas "Text"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("Résultats").Select
    Cells(m, 4).Select
    ActiveSheet.PasteSpecial Format:="Texte"

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut Re
    En effet, au temps pour moi.
    Avec ta formulation, ça copie/colle en effet, mais le problème persiste!
    Merci pour votre aide

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Il ne faut pas copier et coller le texte, mais directement l'utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Paragraph(1).range.text
    Correspond à la plage contenant les données.

    Normalement, le problème ne devrait plus persister.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut Re
    Bonjour,

    J'ai pas compris ta réponse. Ma macro cherche un mot dans un document word, quand elle le trouve elle sélectionne le paragraphe, le copie et le colle dans une cellule d'un autre document excel puis continue sa recherche sur la fin de document Word.

    D'après toi (si j'ai bien compris) je devrais :
    - trouver le mot,
    - sortir le numéro du paragraphe avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wrdApp2.ActiveDocument.Range(Start:=0, End:=wrdApp2.Selection.End).Paragraphs.Count
    et le stocker dans un entier "a" par exemple
    - et enfin l'utiliser avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Paragraph(a).range.text
    Je vais essayer cette méthode après la pause déjeuner, je vous tiens au courant.

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Ça devrait le faire.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par Abed_H Voir le message
    Bonsoir
    Pour Excel c’est fonction non reconnue pour cela il affiche #NOM? Peut être qu'il faut précéder le signe - par un apostrophe comme ça Bonne soirée
    Abed_H
    Tu n'as pas compris la réponse d'Abed_H.
    Quand tu colles ton paragraphe, ajoute "'" au début. Tu auras ainsi
    "'- LeParagraphe" dans la cellule.
    L'apostrophe (invisible dans Excel) permet de dire qu'il s'agit d'un texte, non d'une formule.
    A toutes fins utiles

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RECH.Sheets("Résultats").Cells(m, 4).Value = wrdApp2.wrdDoc.Paragraph(pg).Range.Text
    donne "Propriété ou méthode non générée par cet objet"... qu'ai-je mal fait?

    ouskel'l'nor : oui, j'y ai pensé mais si je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(x,y).PasteSpecial
    , il me le colle direct dans la cellule, comment y caser un " " avant?

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu fais ça sur deux lignes
    Mets ton code de copie qu'on t'arrange ça...
    A+

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut Re:
    Voilà!:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ' Copie le paragraphe contenant le résultat
    wrdApp2.Selection.Copy
    ' Place le curseur à droite du paragraphe copié pour continuer la recherche dans la suite du document
    wrdApp2.Selection.Moveright , Extend:=0
     
     
    ' Colle le résultat dans la feuille "Résultat"
        RECH.Sheets("Résultats").Cells(m, 4).PasteSpecial Paste:=xlValues, Operation:=xlNone
    Encore merci pour votre aide

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut Re
    Je me permets un petit Up...
    J'ai continuer à trifougner de mon côté, mais je n'ai toujours rien trouvé...

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonjour, (je ne t'avais pas vu passer)
    Donc, au lieu de faire
    wrdApp2.Selection.Copy
    passe par une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Valeur = wrdApp2.Selection
    RECH.Sheets("Résultats").Cells(m, 4).Value = "'" & Valeur
    Je n'ai pas testé mais ça devrait le faire...
    Tu dis
    A+

  16. #16
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Je ne sais pas pour quelle raison tu continues à faire de copier coller des données !

    Essaie ceci

    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 xlApp As Excel.Application
    Dim wb As Workbook
    Dim ws As Worksheet
     
    Set xlApp = CreateObject("excel.application")
    Set wb = xlApp.Workbooks.Add
    Set ws = wb.Worksheets(1)
     
    ws.Cells(1, 1) = ActiveDocument.Paragraphs(1).Range.Text
    ws.Cells(1, 2) = "moi"
    xlApp.Visible = True
     
     
    End Sub
    Le premier paragraphe du document :
    - premier paragraphe

    Tu verras que le "=" ne se trouve pas dans la cellule !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut Re
    Bonjour,

    ouskel'n'or :

    Ca marche, mais chaque début et fin de ligne dans le document est marqué par un carré 

    Si ma ligne est :

    Sarko et Ségo sont sur un bato

    la ligne collée dans Excel devient :
    Sarko et Ségo sont sur un bato
    Une ligne vide devient :
    

    Une idée?
    ----------------
    Heureux oli : je regarde tout de suite


    Merci,
    Marc

  18. #18
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Pour la ligne vide, c'est lié au vbCrLf qui se trouve en fin de paragraphe.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut Re
    Heureux oli : j'ai même problème de carrés qu'avec la solution de ouskel'n'or...

    "Pour la ligne vide, c'est lié au vbCrLf qui se trouve en fin de paragraphe."
    Je suis pas sûr de comprendre?

    Encore merci à vous deux

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut
    Après avoir bien regardé, ca vient des tabulations et retour chariot... (c'est peut-être que tu me disais, Heureux O li?) Comment peut-on faire pour qu'ils ne se transforme pas en carrés?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Macro copie de Word vers Excel
    Par Invité dans le forum VBA Word
    Réponses: 1
    Dernier message: 21/09/2009, 20h10
  2. Copie de titre de word vers Excel
    Par Yacine_92 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 26/08/2008, 01h02
  3. Transfert de données Word vers Excel via macro
    Par Pascalou2008 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/03/2008, 23h02
  4. Réponses: 4
    Dernier message: 06/11/2007, 15h49
  5. Macro import du texte Word vers Excel
    Par Bernard6773 dans le forum VBA Word
    Réponses: 6
    Dernier message: 05/09/2007, 11h42

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