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 :

copie de tableaux de Word vers Excel plante si gros fichiers


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 293
    Points : 125
    Points
    125
    Par défaut copie de tableaux de Word vers Excel plante si gros fichiers
    Bonjour,

    je fais une macro sous excel pour analyser un fichier word
    quand je rencontre un tableau il faut que je recopie ce tableau dans un fichier excel nom du nom de ce tableau : 1 fichier par tableau

    voir le code :

    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
     
    ' tableau
    '"Tests using table"
     T_val = False
    If le_style = "Titre 4" Then
        pos = InStr(le_texte, "Tests using table")
        If pos > 0 Then T_val = True
                p_tab = i_para + 2
                is_tab = M_objdoc.Paragraphs(p_tab).Range.Tables.Count
     
    End If
     
        If T_val = True And is_tab > 0 Then
            titre_tab = test_nu & "_" & n_page & ".xls"
            titre_tab = Replace(titre_tab, " ", "")
            fich = ThisWorkbook.Path & "\" & titre_tab
            n_l = M_objdoc.Paragraphs(p_tab).Range.Tables(is_tab).Rows.Count
            n_c = M_objdoc.Paragraphs(p_tab).Range.Tables(is_tab).Columns.Count
            le_Dossier.Cells(Position, 7) = fich
            ReDim T_test(1 To n_l, 1 To n_c)
            M_objdoc.Tables(is_tab).Range.Copy
            Workbooks.Add
            ActiveSheet.Cells(1, 1).PasteSpecial
     
            ActiveWorkbook.SaveAs Filename:=fich
            ActiveWorkbook.Close
        End If
    pour un fichier word de petite taille ça fonctionne bien

    pour un fichier word de grosse taille, celui que je traite fait 50Mo
    ça plante au niveau du paste

    peut être que la méthode utilisée est inapropriée , mais je pense plûtôt à un pb de mémoire vive:

    j'utilise office2000 ( désolé) et j'ai une ram de 2Go

    ya quelqu'un qu'a une bonne idée ?
    je voudrais éviter d'avoir à découper le fichier vu que ça décale la numérotation des chapitres.

  2. #2
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Points : 307
    Points
    307
    Par défaut Recopie Tableau Word -> Excel
    Bonjour,

    à mon avis recopier des tableaux volumineux par copy / past n'est pas la meilleure solution.
    Word gére ses tableaux différament .Sous Excel , la grille sert de référence pour les colonnes / ligne alors que sous word , en supprimant une cellule, on bouleverse l'ordre des colonnes ou des lignes.
    Je te conseille d'éviter le copie past et de faire une recopie cellule par cellule :

    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
     
     
     
      n_l = M_objdoc.Paragraphs(p_tab).Range.Tables(is_tab).Rows.Count
            n_c = M_objdoc.Paragraphs(p_tab).Range.Tables(is_tab).Columns.Count
     Workbooks.Add
    for ligne = 1 to n_l
      for colonne = 1 to n_c      
     
        ActiveSheet.Cells(ligne, colonne).value = M_objdoc.Tables(is_tab).Cell(ligne, colonne).range
     
     
         next colonne 
    next ligne
     
            ActiveWorkbook.SaveAs Filename:=fich
            ActiveWorkbook.Close

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 293
    Points : 125
    Points
    125
    Par défaut
    merci pour ta réponse Codefacile mais le pb ne vient pas de la taille des tableaux que je veux copier qui est raisonnable, mais bien de la taille du fichier à traiter,

    je vais essayer ta soluce , en sachant pertinament que ça va augmenter le temps de traitemnt qui est déjà trés long (>20h)

  4. #4
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 293
    Points : 125
    Points
    125
    Par défaut
    en définitive et parce qu'on me demande du résultat j'ai decoupé mon fichier doc de 800 pages en une dizaine de petits fichier d'~ 100 pages en respectant la configuration des chapitres principaux.

    ainsi tous mes pb disparaissent omis le fait que je perds la pagination d'origine
    les tableaux se copient bien avec copy/paste , le temps d'éxécution est divisé par 5.

    et c'est bien ce qui m'embette car je ne sais pas traiter correctement les gros fichiers; et ma routine doit pouvoir traiter les gros fichiers sans avoir à les découper préalabrement à la main.

    si quelqu'un a connu le même problème qu'il me dise ce qu'il en pense.

Discussions similaires

  1. [XL-2000] La copie entre Word et Excel plante
    Par Touffe54 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/03/2011, 18h00
  2. Macro copie de Word vers Excel
    Par Invité dans le forum VBA Word
    Réponses: 1
    Dernier message: 21/09/2009, 20h10
  3. 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
  4. [Macro] Copie de Word vers Excel : mise en formule
    Par ML0808 dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 06/03/2008, 11h07
  5. Réponses: 4
    Dernier message: 06/11/2007, 15h49

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