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éer un doc word et y coller une feuille excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    techno
    Inscrit en
    Octobre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : techno
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2012
    Messages : 128
    Par défaut Créer un doc word et y coller une feuille excel
    Bonsoir,

    Je n'arrive pas à me dépatouiller avec un code que j'ai repris pour sauvegarder une feuille excel sur un doc word. Voici le code après de multiple changement mais qui m'affiche une erreur "91, variable non définie":
    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
     
    Sub CopierDesCellulesDansWord() 'copie une plage de cellule sous word
    Dim WdApp As Word.Application
    Dim WdDoc As Word.Document
    Dim i
    Dim Nom, ChemRep As String
    Dim DerLg As Long
     
        ChemRep = "D:\SAUVEGARDE\Mes FICHIERS\perso\Copro\3C\"
        Nom = Sheets("PV").Range("B3")
        DernLigne = Sheets("PV").Range("A" & Rows.Count).End(xlUp).Row
     
        WdApp.Visible = True                                    'masque Word pdt opération
        Set WdApp = CreateObject("word.application")            'ouvre la session Word
     
        Set WdDoc = WdApp.Documents.Add                         'crée un nouveau document
        WdDoc.SaveAs ChemRep & Nom                              'enregistre le nouveau doc
     
        Set WdDoc = WdApp.Documents.Open(ChemRep & Nom)         'ouvre le doc
     
        'WdApp.Visible = True
     
        Sheets("PV").Range("A1:F" & DerLg).Copy                 'plage copiée
        DoEvents                    'laisse au système le temps de copier la plage
     
        With WdApp
            .Selection.PasteSpecial Link:=True, DataType:=wdPasteOLEObject, Placement:= _
              wdInLine, DisplayAsIcon:=False        'colle la copie
            WdDoc.InlineShapes(1).Height = 172.9    'Règle la hauteur dans Word
            WdDoc.InlineShapes(1).Width = 453.55    'Règle la largeur dans Word
        End With
     
        WdDoc.Close True        'Enregistre et ferme le doc word
        DoEvents                'Laisse au système le temps d'enregistrer le fichier
        WdApp.Quit              'ferme la session
     
        Set WdApp = Nothing
        Set WdDoc = Nothing
    End Sub
    Quelqu'un^peut-il m'aider à trouver le bon ordre svp?

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    DerLg est inconnue (non intitialisée) dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("PV").Range("A1:F" & DerLg).Copy
    Serait-ce DernLigne (que tu as initialisée, mais non déclarée, par contre) ?

  3. #3
    Membre confirmé
    Homme Profil pro
    techno
    Inscrit en
    Octobre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : techno
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2012
    Messages : 128
    Par défaut
    Bonsoir,

    Merci unparia, effectivement. Mais malgré cela j'ai une "erreur 91: variable objet ou variable bloc with non définie"

    quezako ?

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Commence par remplacer les nomd de constantes par leur valeurs numériques dans ce bloc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With WdApp
            .Selection.PasteSpecial Link:=True, DataType:=wdPasteOLEObject, Placement:= _
              wdInLine, DisplayAsIcon:=False        'colle la copie
            WdDoc.InlineShapes(1).Height = 172.9    'Règle la hauteur dans Word
            WdDoc.InlineShapes(1).Width = 453.55    'Règle la largeur dans Word
        End With
    True et False pourraient probablement passer, mais wdPasteOLEObject et wdInLine, sûrement pas.

    Ou bien, tu définis tes deux constantes avec leur valeur numérique au début de ton code.

    Pour augmenter tes chances de trouver les valeurs numériques dans ton aide, tu cliques sur ta constante dans l'éditeur et tu appuies sur

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, cela ce produit quand l'on est en Late Binding, pas en Early, et qui est ici, comme d'habitude, mélangé allègrement par Mod77 .
    Sinon juste pour info voir modèle objet Word
    rubrique énumération
    WdPasteDataType

    Ou plus simple : Enumérer les constantes Office pour les utiliser en Late Binding d'Oliv-.

  6. #6
    Membre confirmé
    Homme Profil pro
    techno
    Inscrit en
    Octobre 2012
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : techno
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2012
    Messages : 128
    Par défaut
    Bonjour,
    merci de votre aide.

    Je ne maitrise pas du tout ce que vous me dites. Je me trompe car je prends du code quand cela répond à la question posée sur un site et que ça marche.
    Donc, évidemment, je mélange sans le savoir.

    J'essaie donc de corriger et reviens après. Merci de votre indulgence.

Discussions similaires

  1. [XL-2007] Récupérer des données dans doc.word pour mettre dans une feuille .xls
    Par casdidier dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/05/2014, 11h33
  2. Créer un fichier word et lui insérer une image
    Par herken1986 dans le forum C++
    Réponses: 3
    Dernier message: 24/05/2013, 16h26
  3. [XL-2003] copier coller une feuille excel
    Par safouunette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/01/2011, 09h25
  4. Réponses: 1
    Dernier message: 19/12/2006, 16h12
  5. [VBA-E]Créer un fichier txt depuis une feuille Excel
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/02/2006, 17h36

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