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 Excel] Plantage lors recopie blocs vers Word


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Points : 202
    Points
    202
    Par défaut [VBA Excel] Plantage lors recopie blocs vers Word
    Bonjour,

    Je souhaite réaliser une opération simple, qui fontionne mais jusqu'àun certain point.. Voilà le principe:

    J'ai deux colonnes 'Début' et 'Fin'
    Dans chacune de ces colonnes des adresses de blocs sont inscrites, de manière à constituer des ranges, exemple:

    Début Fin
    A1 B6
    A8 B13

    etc...

    Mon algo copie donc la plage indiquée sur chaque ligne depuis un onglet Excel vers Word. Voici le bout incriminé:

    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
    Set wordapp = CreateObject("Word.Application")
        Set wordDoc = wordapp.Documents.Open("S:\DataManagement\Programmes\Base_TUCR\Documents_Word\Dsheet.doc")
       
        wordapp.Visible = True  
        wordapp.ScreenUpdating = False
    
        Sheets("Data_Sheet").Activate
       For Each cell In Sheets("Data_Sheet").Range("Q5:Q100")
        
         If cell.Value = "Oui" Then
            
             ActiveSheet.Range(cell.Offset(0, 1) & ":" & cell.Offset(0, 2)).Select
             Selection.Copy
             wordapp.Selection.PasteExcelTable False, False, False
            wordapp.Selection.TypeParagraph
        End If
       Next
    Donc ça fonctionne, sur genre... 30 lignes puis après plantage (Erreur 4198), sur la ligne wordapp.Selection.PasteExcel.

    Je tiens à préciser qu'en faisant varier la plage, ce n'est pas toujours la même ligne qui plante, donc a priori ce n'est pas une erreur de saisie d'adresse (mauvaise syntaxe).
    Je penche personnellement pour un problème de mémoire ou un truc du genre...

    Je suis sous XP Sp2, Excel 2003 et Word 2003 et la référence 'VBA Microsoft Word 11 Object library' est cochée dans mes références...

    Des idées?

    Merci d'avance!

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonsoir


    Refait un essai en remplaçant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             ActiveSheet.Range(cell.Offset(0, 1) & ":" & cell.Offset(0, 2)).Select
             Selection.Copy
             wordapp.Selection.PasteExcelTable False, False, False
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.Range(cell.Offset(0, 1) & ":" & cell.Offset(0, 2)).Copy
    wordDoc.Range.PasteExcelTable False, False, False

    bonne soirée
    michel

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Points : 202
    Points
    202
    Par défaut
    Bonjour et merci de ta réponse rapide,

    malheureusement le problème persiste.. et toujours de la même manière.

    J'aurais bien une idée, mais c'est du bricolage... c'est déterminer combien de blocs sont copiés au max, de limiter à ce nombre de blocs, de sauvegarder le fichier word, libérer les variables et la mémoire...
    puis rouvrir le fichier enregistré et recommencer du dernier bloc+1 jusqu'à la fin... mais c'est vraiment de la bricole.

    Tu as une autre idée?

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonsoir

    en parcourant ce lien, cela pourrait également provenir du collage.

    http://support.microsoft.com/kb/275558

    tu pourrais faire des essais en testant d'autres types de collage


    bonne soirée
    michel

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 315
    Points : 202
    Points
    202
    Par défaut
    Bonjour, en effet j'ai déjà rencontré le problème du collage en métafichier amélioré. mais là en l'occurence c'est une copie "simple" sans paramètre afin que les tableaux Excel copiés sur Word sont potentiellement modifiables si besoin.

    De plus ils préconisent d'utiliser la méthode PasteSpecial de l'objet Selection et pas directement de l'objet à copier (si j'ai bien compris..) c'est effectivement ce que je fais sauf que j'utilise la méthode PasteExcelTable à la place.

    Est-ce que tu penses que ça soit possible que la mémoire alouée au presse-papier de Word et/ou Excel soit saturée et ne puisse plus réaliser ce copier/coller.
    J'ai tenté de mettre Application.CutCopyMode = False pour vider le presse papier Excel à la fin de chaque boucle de copie.
    Mais apparemment cela ne change rien, peut-être que je devrais vider le tampon de mon objet Word également ? (mais je connais pas la syntaxe...)

    Le problème est que je suis persuadé que c'est un problème de mémoire (sur le net quelques commentaires en ce sens) mais la mémoire de quoi ? (windows, word, excel ??)

    Tes commentaires/idées sont les bienvenus!

Discussions similaires

  1. [VBA-E] Plantage lors de l'encadrement d'un tableau dans excel
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/01/2007, 16h03
  2. [VBA-Excel]: Pb Migration Office 2000 vers 2003
    Par Benos dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/12/2006, 13h53
  3. [VBA-Excel] Déplacement d'une feuille vers un autre fichier
    Par Olivier95 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2006, 11h17
  4. VBA Excel, modifier une lettre type dans word
    Par morgan47 dans le forum VBA Word
    Réponses: 2
    Dernier message: 26/06/2006, 21h02
  5. Réponses: 22
    Dernier message: 28/03/2006, 14h59

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