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 :

Selection + Collage d'une plage de cellules ds Word depuis Excel et redimensionnement


Sujet :

Macros et VBA Excel

  1. #1
    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
    Points : 15 546
    Points
    15 546
    Par défaut Selection + Collage d'une plage de cellules ds Word depuis Excel et redimensionnement
    Ce demande que la référence "Microsoft Word X.XX Object Library soit activée -> Editeur VBA -> Outils -> Référence (merci ilcocodrillo)
    Ce code propose :
    - La sélection manuelle d'une plage de cellules dans Excel
    - Le positionnement sur un signet dans le document Word
    - Le collage lié de la plage de cellules sur le signet
    - le redimensionnement de la plage de cellules dans word
    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
    40
    41
    42
    Sub CopierAlEndroitVouluUnePlageDeCellulesExcelDansWord()
    Dim WdApp As Word.Application
    Dim WdDoc As Word.Document
    Dim i, hauteur As Double, plage As Range
        Set WdApp = CreateObject("word.application")     'ouvre la session Word
        Set WdDoc = WdApp.Documents.Open("D:\Doc\Worddoc.doc")    'ouvre le doc
        WdApp.Visible = False                                   'masque l'appli
     
        Do                          'Sélection de la plage de cellules à copier
            On Error Resume Next                          'gère une plage nulle
            Set plage = Application.InputBox("Saisir la plage de cellules", , , , , , , 8)
            If plage Is Nothing Then GoTo Fin             'sortie si plage vide
            On Error GoTo 0
        Loop While InStr(plage.Address, ",") <> 0
        plage.Copy                                                'plage copiée
        DoEvents                  'laisse au system le temps de copier la plage
     
                                          'Place l'image sur le signet "Signet"
        With WdApp
            .Selection.Goto What:=wdGoToBookmark, Name:="Signet"
            .Selection.PasteSpecial Link:=True, DataType:=wdPasteOLEObject, _
                       Placement:=wdInLine, DisplayAsIcon:=False
            WdDoc.InlineShapes(WdDoc.InlineShapes.Count).Width = 453.55    'Règle la largeur dans Word
     
            'Calcul de la hauteur de plage dans le document word
            hauteur = 453.55 / WdDoc.InlineShapes(WdDoc.InlineShapes.CounWdDoc.InlineShapes.Count).Width _
                    * WdDoc.InlineShapes(WdDoc.InlineShapes.Count).Height
     
            'Règlage de la hauteur de la plage proportionnellement à la largeur
            WdDoc.InlineShapes(WdDoc).Height = Int(hauteur)
        End With
     
        'WdApp.Visible = True 'Pour voir (Ne pas fermer le fichier depuis Word)
     
    Fin::
        WdDoc.Close True                       'Enregistre et ferme le doc word
        DoEvents            'Laisse au system le temps d'enregistrer le fichier
        WdApp.Quit                                            'ferme la session
     
        Set plage = Nothing
        Set WdApp = Nothing
        Set WdDoc = Nothing
    NB - Dans cet exemple, la largeur entre marges dans le document word = 16 cm
    ......(disposition Portrait, marges gauche et droite de 2,5 cm).
    - La Hauteur se règle en fonction de cette largeur.
    - La liaison de la plage avec le classeur est donnée par [Link:=True]

  2. #2
    Membre actif Avatar de ilcocodrillo
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Âge : 18
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 276
    Points
    276
    Par défaut


    Faite pas comme moi n'oubliez pas d'activer la librairie Word sinon vba Excel va pas comprendre grand chose à ce code...

  3. #3
    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
    Points : 15 546
    Points
    15 546
    Par défaut Comment connaître la bonne dimension de la plage dans Word
    Dans le code proposé, mettre en remarque les deux lignes de code réalisant le dimensionnement.
    Exécuter le code.
    Dans Word :
    1 - Ouvrir le document.doc.
    2 - Sélectionner la plage collée
    3 - Lancer l'enregistreur de macros
    4 - Aller dans Format -> Objet -> Taille
    5 - Donner les bonnes dimensions à la plage
    6 - Arrêter l'enregistrement de la macro
    7 - Regarder dans le code les dimensions enregistrées, les dernières (Height et Width) sont les bonnes.
    8 - Fermer sans enregistrer

    ou alors, faire une règle de 3 :
    16 cm => 453.55
    12 cm => 453.55 / 16 * 12 = ?

Discussions similaires

  1. [XL-2010] Selection d'une plage de cellules
    Par Stef31 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/09/2014, 14h51
  2. [XL-2003] selection d'une plage de cellules
    Par tioch dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 20/07/2011, 12h21
  3. [XL-2000] Selection d'une plage de cellule avec InputBox
    Par ferdi67 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/09/2009, 10h17
  4. Selection d'une plage de cellules dans DatagridView [Vb.Net]
    Par papy75 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/06/2008, 12h03
  5. Selection d'une plage de cellules variables
    Par bykeman dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/06/2008, 10h20

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