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 :

Redimensionner un tableau que l'on vient de copier dans Word


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Par défaut Redimensionner un tableau que l'on vient de copier dans Word
    Bonjour

    J'ai un document Word avec 4 photos (Donc 4 Shapes) que je ne veux pas toucher.

    J'insère un tableau Excel que je place entre la photo 2 et 3 et que voudrais redimensionner. Mon tableau devient donc la 3ème image dans le document Word

    J'ai écrit cette macro qui marche bien si je n'ai pas de photos derrière mon tableau inséré, c'est à dire si mon tableau est la 5ème image

    Sinon, bien sûr si met mon index en dur sur le InLineshapes (c'est à dire InLineshapes(3)) cela fonctionne mais je ne veux pas de choses en dur

    En fait quand ma macro s'exécute, InLineShape se position sur la 5ème image et redimensionne cette 5ème image et non ma 3ème

    Je suis perdu.

    Voici mon code. Si quelqu'un peut m'aider. Merci d'avance

    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
     
    Sub Test()
     
    Dim AppWord As New Word.Application
    Dim NuméroDernièreImage As Integer
    Dim NomFichier As String
     
    NomFichier = "C:\Users\mbo\Documents\_Exemples_Fusion_Excel_Word\MonFichierWord2.docx"
     
    AppWord.Documents.Open NomFichier
     
    AppWord.Visible = True
     
    NuméroDernièreImage = AppWord.ActiveDocument.InlineShapes.Count
     
                With AppWord
                       .Selection.HomeKey Unit:=wdStory   'envoi en début de page
                       'recherche du signet
                       .Selection.Goto What:=wdGoToBookmark, Name:="Périmètre_F01"
                End With
     
                ThisWorkbook.Worksheets("Proposition_Périmètre").Range("B6:D15").Copy
     
                NuméroDernièreImage = NuméroDernièreImage + 1
     
                AppWord.Selection.PasteSpecial link:=False, DataType:=wdPasteEnhancedMetafile, Placement:=wdInLine, DisplayAsIcon:=False
                Application.CutCopyMode = False
     
                With AppWord.ActiveDocument.InlineShapes(NuméroDernièreImage)
                     .Width = CentimetersToPoints(8)  'largeur en cm
                End With
     
    End Sub

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Peut être une piste avec

    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
    Sub Test()
     
    Dim AppWord As New Word.Application
    'Dim NuméroDernièreImage As Integer
    Dim NuméroImageExcel  As Integer   '///
    Dim NomFichier As String
     
    NomFichier = "C:\Users\mbo\Documents\_Exemples_Fusion_Excel_Word\MonFichierWord2.docx"
     
    AppWord.Documents.Open NomFichier
     
    AppWord.Visible = True
     
    NuméroDernièreImage = AppWord.ActiveDocument.InlineShapes.Count
     
    With AppWord
    .Selection.HomeKey Unit:=wdStory 'envoi en début de page
    'recherche du signet
    .Selection.Goto What:=wdGoToBookmark, Name:="Périmètre_F01"
    End With
     
    ThisWorkbook.Worksheets("Proposition_Périmètre").Range("B615").Copy
     
    'NuméroDernièreImage = NuméroDernièreImage + 1
    NuméroImageExcel   = 3   '///
     
    AppWord.Selection.PasteSpecial link:=False, DataType:=wdPasteEnhancedMetafile, Placement:=wdInLine, DisplayAsIcon:=False
    Application.CutCopyMode = False
     
    With AppWord.ActiveDocument.InlineShapes(NuméroImageExcel )    ' (NuméroDernièreImage)   ///
    .Width = CentimetersToPoints(8) 'largeur en cm
    End With
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Par défaut
    Bonjour

    Je sais que cela marche car c'est ce que j'explique dans mon mail. Aucun intérêt de remplacer mon Integer par un autre et le forcer à 3.

    Ce que je cherche c'est ne rien avoir en dur et pouvoir identifier la copie que je viens de faire de façon paramétrable

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Alors peut être avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With AppWord.ActiveDocument.InlineShapes((AppWord.ActiveDocument.InlineShapes.Count\2)+1)

  5. #5
    Membre averti
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Par défaut
    Merci pour la réponse mais on ne s'est pas compris.

    Je recherche à dimensionner le tableau que je viens de copier sans me soucier du nombre d'images avant ou après qui existe dans le doc Word. Dans mon exemple j'en ai 4, mais demain il pourrait en contenir 10 ou 20 ou 100 car le document word va évoluer. Et le tableau que je vais coller sera demain la 11ème image, après demain la 21 ème puis la 101 ème etc. En fait je recherche un bout de macro qui identifie ce que je viens de coller pour le redimensionner sans se soucier du contenu du doc. C'est presque en même temps que le coller qu'il faudrait exécuter le redimensionnement.

    Merci quand même de participer à cette conversation. On va y arriver j'en suis sûr.

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment redimensionner un tableau dynamique ?
    Par Mickey.jet dans le forum Langage
    Réponses: 13
    Dernier message: 07/09/2006, 18h16
  2. [Excel-VBA]Redimensionnement de tableau
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 28/08/2006, 17h16
  3. Réponses: 12
    Dernier message: 23/05/2006, 17h04
  4. Redimensionner un tableau
    Par saidus dans le forum C++Builder
    Réponses: 12
    Dernier message: 28/11/2005, 23h41
  5. [Tableaux] redimensionner un tableau
    Par falcon dans le forum Langage
    Réponses: 6
    Dernier message: 23/11/2005, 09h38

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