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

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 28
    Points : 3
    Points
    3

    Par défaut Importer tableau d'Excel sous Word sous format image à partir de Word

    Bonjour à tous !

    Comme beaucoup ici, je débute vba et même en cherchant partout sur les différents forums, il reste quelques problèmes que je n'arrive pas à résoudre...

    Voici le contexte : je dispose de différents documents Excel, chacun contenant des tableaux, que je souhaite récupérer sous format image depuis vba Word pour les insérer dans ma page Word active.
    Pour cela, j'utilise le code suivant :

    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
    Private Sub Montableau()
     
        Set AppXL = New Excel.Application
        Set AppXL = CreateObject("Excel.Application")
        AppXL.Visible = False
        AppXL.DisplayAlerts = False
     
        'On sélectionne le fichier Excel d'où on tire l'image
        Set DocExcel = AppXL.Workbooks.Open(FileName:="Chemin\fichierexcel.xlsx")
        DocExcel.Activate
        'On copie le tableau
        DocExcel.Sheets("Mononglet").Range("A1:P50").Copy
        'On le colle dans le doc atuel (word), avec lien avec le tableau sous Excel, sous format image
        Selection.PasteSpecial Link:=True, DataType:=wdPasteBitmap
        'On l'insère à un endroit choisi du document word grâce à un signet (Bookmark)
        Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"
     
        'On sélectionne l'image dans le doc
        ActiveDocument.Shapes(1).Select
        'On redimensionne l'image
        Selection.ShapeRange.ScaleWidth 0.49, msoFalse, msoScaleFromTopLeft
        Selection.ShapeRange.ScaleHeight 0.49, msoFalse, msoScaleFromBottomRight
        'On déplace l'image
        Selection.ShapeRange.IncrementLeft 44.25
        Selection.ShapeRange.IncrementTop -8.25
     
        'On fait en sorte que le texte se positionne autour de l'image, et non pas dessous (par défaut)
        Selection.ShapeRange.WrapFormat.AllowOverlap = True
        Selection.ShapeRange.WrapFormat.Side = wdWrapBoth
        Selection.ShapeRange.WrapFormat.DistanceTop = CentimetersToPoints(0)
        Selection.ShapeRange.WrapFormat.DistanceBottom = CentimetersToPoints(0)
        Selection.ShapeRange.WrapFormat.DistanceLeft = CentimetersToPoints(0.32)
        Selection.ShapeRange.WrapFormat.DistanceRight = CentimetersToPoints(0.32)
        Selection.ShapeRange.WrapFormat.Type = wdWrapSquare
     
        DocExcel.Close True
        AppXL.Quit
     
        MsgBox "Tentative effectuée"
     
    End Sub
    La partie qui me pose problème est celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'On sélectionne l'image dans le doc
        ActiveDocument.Shapes(1).Select
    En effet, je ne parviens pas à trouver de fonction qui me permette de récupérer le nom de mon image (qui varie à chaque tentative), pour ensuite lui appliquer les attributs suivants (dimensions, etc).
    J'ai cru comprendre qu'il était nécessaire de renommer l'image pendant le copier-coller, parce qu'impossible de le faire après, mais je ne vois pas trop comment ?

    Tout le reste du code fonctionne, le seul problème est de sélectionner l'image qui m'intéresse pour lui appliquer des attributs.

    Merci beaucoup d'avance pour votre aide !! Bonne soirée à tous

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    3 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 3 956
    Points : 10 087
    Points
    10 087
    Billets dans le blog
    27

    Par défaut

    Citation Envoyé par Wilkoo Voir le message
    Bonjour,

    A tester :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Private Sub Montableau()
     
     Dim AppXL As Object, DocExcel As Object
     Dim ShapeEncours As Shape
     
        On Error GoTo Fin
     
       ' Set AppXL = New Excel.Application
        Set AppXL = CreateObject("Excel.Application")
     
        With AppXL
             .Visible = False
             .DisplayAlerts = False
     
             'On sélectionne le fichier Excel d'où on tire l'image
             Set DocExcel = .Workbooks.Open(FileName:="Chemin\fichierexcel.xlsx")
        End With
     
        With DocExcel
     
            '.Activate
            'On copie le tableau
            .Sheets("Mononglet").Range("A1:P50").Copy
        End With
     
        With ActiveDocument
     
        'On l'insère à un endroit choisi du document word grâce à un signet (Bookmark)
        Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"
        'On le colle dans le doc atuel (word), avec lien avec le tableau sous Excel, sous format image
        Selection.PasteSpecial Link:=True, DataType:=wdPasteBitmap
     
        'On sélectionne l'image dans le doc
             If .Shapes.Count = 0 Then GoTo Fin
     
             Set ShapeEncours = .Shapes(1)
             With ShapeEncours
     
                   'On redimensionne l'image
                   .ScaleWidth 0.49, msoFalse, msoScaleFromTopLeft
                   .ScaleHeight 0.49, msoFalse, msoScaleFromBottomRight
                   'On déplace l'image
                   .IncrementLeft 44.25
                   .IncrementTop -8.25
     
                   'On fait en sorte que le texte se positionne autour de l'image, et non pas dessous (par défaut)
                   With .WrapFormat
                        .AllowOverlap = True
                        .Side = wdWrapBoth
                        .DistanceTop = CentimetersToPoints(0)
                        .DistanceBottom = CentimetersToPoints(0)
                        .DistanceLeft = CentimetersToPoints(0.32)
                        .DistanceRight = CentimetersToPoints(0.32)
                        .Type = wdWrapSquare
                   End With
              End With
              Set ShapeEncours = Nothing
        End With
     
     
        MsgBox "Tentative effectuée", vbInformation
     
        GoTo Fin
     
    Fin:
     
        DocExcel.Close False  'True
        AppXL.Quit
     
        Set DocExcel = Nothing
        Set AppXL = Nothing
     
    End Sub
    Pourquoi sauvegarder le fichier Excel à la fermeture ?
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 28
    Points : 3
    Points
    3

    Par défaut

    Bonjour,

    A tester :
    Bonjour,

    Je viens d'essayer ça ce matin, ça marche parfaitement bien !!! Je vais pouvoir continuer mon automatisation.

    Merci beaucoup pour votre aide !

    Très bonne journée à vous !

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    3 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 3 956
    Points : 10 087
    Points
    10 087
    Billets dans le blog
    27

    Par défaut

    Citation Envoyé par Wilkoo Voir le message
    Bonjour,


    Petite remarque : Quel est l'intérêt de mettre un lien sur un tableau que vous avez transformé en image ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.PasteSpecial Link:=True, DataType:=wdPasteBitmap
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 28
    Points : 3
    Points
    3

    Par défaut

    Bonjour,


    Petite remarque : Quel est l'intérêt de mettre un lien sur un tableau que vous avez transformé en image ?
    En fait, les tableaux tirés d'Excel peuvent évoluer régulièrement, et ce même dans l'urgence après la création du document Word les contenant tous.
    Il faut donc qu'ils soient mis à jour en cas de changement, sans besoin de relancer toute la manipulation à chaque fois (?)

    Qu'en pensez-vous ?

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    3 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 3 956
    Points : 10 087
    Points
    10 087
    Billets dans le blog
    27

    Par défaut

    Citation Envoyé par Wilkoo Voir le message
    Faites l'expérience de modifier une valeur dans votre tableau Excel et regardez le résultat dans votre fichier Word que vous aurez fermé, puis ré-ouvert sans activer la macro.

    Autant pour moi, la correction est prise en compte.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 28
    Points : 3
    Points
    3

    Par défaut

    Je viens de me rendre compte en changeant de document source qu'il y avait encore quelques bugs...

    Voici mon code actuel :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Private Sub MonTableau()
     
      Dim AppXL As Object, DocExcel As Object
      Dim ShapeEncours As Shape
     
        On Error GoTo Fin
     
        Set AppXL = CreateObject("Excel.Application")
     
        With AppXL
             .Visible = False
             .DisplayAlerts = False
     
             'On sélectionne le fichier Excel d'où on tire l'image
             Set DocExcel = .Workbooks.Open(FileName:="chemin\montableau.xlsx")
        End With
     
        With DocExcel
     
            '.Activate
            'On copie le tableau
            .Sheets("LISTE").Range("A1:O25").Copy
        End With
     
        With ActiveDocument
     
        'On l'insère à un endroit choisi du document word grâce à un signet (Bookmark)
        Selection.GoTo What:=wdGoToBookmark, Name:="Signet_1"
        'On le colle dans le doc actuel (word), avec lien avec le tableau sous Excel, sous format image
        Selection.PasteSpecial Link:=True, DataType:=wdPasteBitmap
     
        'On sélectionne l'image dans le doc
             If .Shapes.Count = 0 Then GoTo Fin
     
             Set ShapeEncours = .Shapes(1)
     
             With ShapeEncours
     
                   'On redimensionne l'image
                   .ScaleWidth 0.85, msoFalse, msoScaleFromBottomRight
                   .ScaleHeight 0.85, msoFalse, msoScaleFromBottomRight
                   'On déplace l'image
     
                   'On fait en sorte que le texte se positionne autour de l'image, et non pas dessous (par défaut)
                   With .WrapFormat
                        .AllowOverlap = True
                        .Side = wdWrapBoth
                        .DistanceTop = CentimetersToPoints(0)
                        .DistanceBottom = CentimetersToPoints(0)
                        .DistanceLeft = CentimetersToPoints(0.32)
                        .DistanceRight = CentimetersToPoints(0.32)
                        .Type = wdWrapSquare
                   End With
              End With
              Set ShapeEncours = Nothing
        End With
     
     
        MsgBox "Tentative effectuée", vbInformation
     
        GoTo Fin
     
    Fin:
     
        DocExcel.Close False  'True
        AppXL.Quit
     
        Set DocExcel = Nothing
        Set AppXL = Nothing
     
    End Sub
    Le code fonctionne, mais il insère également une autre image (l'image traitée lors de la tentative précédente je pense), et c'est à elle que s'appliquent les changements de dimensions...

    Pourriez-vous m'apporter à nouveau votre aide, je vous prie ?

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    3 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 3 956
    Points : 10 087
    Points
    10 087
    Billets dans le blog
    27

    Par défaut

    Citation Envoyé par Wilkoo Voir le message
    Il vous faut expliquer comment fonctionne vos imports. Dans votre code, c'est toujours la shape 1 de la collection shapes qui est mise à jour. Combien de vidages d'écran réalisez-vous sur un seul document ? Quelle est votre règle de gestion pour associer ces formes à un signet ?
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  9. #9
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 28
    Points : 3
    Points
    3

    Par défaut

    Il vous faut expliquer comment fonctionne vos imports. Dans votre code, c'est toujours la shape 1 de la collection shapes qui est mise à jour. Combien de vidages d'écran réalisez-vous sur un seul document ? Quelle est votre règle de gestion pour associer ces formes à un signet ?
    Merci pour votre réponse.

    Je dispose de 23 documents Excel, chacun contenant un tableau modifié régulièrement et au nombre de lignes variables, ou un graphique.

    Le principe est de fournir tous les mois un rapport contenant ces 23 tableaux ou graphiques, à des endroits précis de ma page word. Pour cela, j'utilise un modèle créé moi-même, où j'ai posé des signets aux endroits où insérer lesdits tableaux ou graphiques, sous format image (par exemple après le titre correspondant).

    Je pensais donc avoir la manipulation précédente
    Voici mon code actuel :

    Code :
    à effectuer 23 fois, ce qui veut dire qu'il est compliqué (en tout cas pour moi) de sélectionner pour chaque macro l'objet que je suis en train de copier-coller pour lui appliquer des attributs.

    Je suis débutante, donc j'ai encore un peu de mal avec les différents objets, et je n'aborde probablement pas le problème d'un point de vue optimal. J'ai essayé de le décomposer en petits problèmes pour arriver à une solution, sans doute imparfaite, mais fonctionnelle !

    Voilà, n'hésitez pas à me demander d'éclaircir certains points !

    (Et encore merci de votre aide)

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    3 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 3 956
    Points : 10 087
    Points
    10 087
    Billets dans le blog
    27

    Par défaut

    Citation Envoyé par Wilkoo Voir le message
    Il faut rendre votre procédure paramétrique, avec comme paramètre le nom du fichier Excel, l'aire à copier (avec son onglet), et le nom du fichier Word et le signet associé. Dans ces conditions, il serait plus simple de partir d'Excel pour mettre à jour votre fichier Word ; les paramètres étant collectés dans un simple tableau d'un fichier de suivi des mises à jour.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  11. #11
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 28
    Points : 3
    Points
    3

    Par défaut

    Citation Envoyé par Eric KERGRESSE Voir le message
    Il faut rendre votre procédure paramétrique, avec comme paramètre le nom du fichier Excel, l'aire à copier (avec son onglet), et le nom du fichier Word et le signet associé. Dans ces conditions, il serait plus simple de partir d'Excel pour mettre à jour votre fichier Word ; les paramètres étant collectés dans un simple tableau d'un fichier de suivi des mises à jour.
    Le problème est que la plupart de mes fichiers source excel changent mensuellement (reçus par mail tous les mois), faut-il alors les renommer automatiquement pour faire appel au fichier en question de manière automatique ?

    J'ai du mal à comprendre comment je pourrais coder cela, et pourquoi ce serait plus facile par vba Excel...

    Pourriez-vous me donner un exemple, je vous prie ?

    Je peux vous fournir des fichiers exemple si vous préférez (1 word avec signets, 2 excel avec tableaux)

    Un grand merci d'avance !

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    3 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 3 956
    Points : 10 087
    Points
    10 087
    Billets dans le blog
    27

    Par défaut

    Citation Envoyé par Wilkoo Voir le message
    Je peux vous fournir des fichiers exemple si vous préférez (1 word avec signets, 2 excel avec tableaux)
    OK
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  13. #13
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 28
    Points : 3
    Points
    3

    Par défaut

    Citation Envoyé par Eric KERGRESSE Voir le message
    OK
    Voilà les documents, j'ai essayé de les organiser de la manière la plus synthétique possible et d'être la plus claire possible.
    Je me rends compte qu'au final ça déborde un peu du thème de la discussion originale puisque ça en aborde plusieurs

    Je vous remercie vraiment de votre aide !
    Fichiers attachés Fichiers attachés

  14. #14
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 28
    Points : 3
    Points
    3

    Par défaut

    Citation Envoyé par Wilkoo Voir le message
    1 word avec signets, 2 excel avec tableaux
    J'ai finalement mis de manière synthétique les problèmes que je rencontre, dont la plupart peuvent être résolus par une légère modification du code à chaque fois, mais que je ne connais pas...

    Ce serait super si vous pouviez m'indiquer la manière de traiter le tout, et les différences pour chaque cas

    Je vous remercie encore beaucoup ! (Je bute là dessus depuis une éternité)

  15. #15
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 28
    Points : 3
    Points
    3

    Par défaut

    Citation Envoyé par Wilkoo Voir le message
    Voilà les documents, j'ai essayé de les organiser de la manière la plus synthétique possible et d'être la plus claire possible.
    Je me rends compte qu'au final ça déborde un peu du thème de la discussion originale puisque ça en aborde plusieurs

    Je vous remercie vraiment de votre aide !
    Pour le premier, j'ai essayé ce code, qui ressemble à ce que l'on a vu ensemble, adapté à ce cas particulier :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Private Sub Tableau_1()
     
    ' Tableau fixe avec modifications contenu cellules
     
      Dim AppXL As Object, DocExcel As Object
      Dim ShapeEncours As Shape
     
        'On Error GoTo Fin
     
        Set AppXL = CreateObject("Excel.Application")
     
        With AppXL
             .Visible = False
             .DisplayAlerts = False
             'On sélectionne le fichier Excel d'où on tire l'image
             Set DocExcel = .Workbooks.Open(FileName:="chemin\Tableau1.xlsx")
        End With
     
        With DocExcel
            'On copie le tableau
            .Sheets("Feuil1").Range("A1:F6").Copy
        End With
     
        With ActiveDocument
            'On insère le tableau sélectionné à un endroit choisi du document word grâce à un signet (Bookmark)
            Selection.GoTo What:=wdGoToBookmark, Name:="Tableau_1"
            'On le colle dans le doc atuel (word), avec lien avec le tableau sous Excel, sous format image
            Selection.PasteSpecial , DataType:=wdPasteBitmap
     
            'On sélectionne l'image dans le doc
            If .Shapes.Count = 0 Then GoTo Fin
            Set ShapeEncours = .Shapes(1)
     
            With ShapeEncours
                'On redimensionne l'image
                .ScaleWidth 0.85, msoFalse, msoScaleFromBottomRight
                .ScaleHeight 0.85, msoFalse, msoScaleFromBottomRight
                'On déplace l'image
     
                'On fait en sorte que le texte se positionne autour de l'image, et non pas dessous (par défaut)
                With .WrapFormat
                    .AllowOverlap = True
                    .Side = wdWrapBoth
                    .DistanceTop = CentimetersToPoints(0)
                    .DistanceBottom = CentimetersToPoints(0)
                    .DistanceLeft = CentimetersToPoints(0.32)
                    .DistanceRight = CentimetersToPoints(0.32)
                    .Type = wdWrapSquare
                End With
            End With
            Set ShapeEncours = Nothing
        End With
     
     
        MsgBox "Tentative effectuée", vbInformation
     
        GoTo Fin
     
    Fin:
     
        DocExcel.Close False  'True
        AppXL.Quit
     
        Set DocExcel = Nothing
        Set AppXL = Nothing
     
    End Sub
    ça insère bien l'image, mais ça ne modifie pas sa taille ensuite, et je ne peux même pas sélectionner l'image une fois insérée avec l'enregistreur de macros


    Pour le Tableau2, il me semble que cette modification pourrait fonctionner, mais du coup je ne peux pas le vérifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim derniereLigne As Integer
    derniereLigne = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
        DocExcel.Sheets("Feuil1").Range("A1:F" & derniereLigne).Copy

  16. #16
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    3 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 3 956
    Points : 10 087
    Points
    10 087
    Billets dans le blog
    27

    Par défaut

    Citation Envoyé par Wilkoo Voir le message
    A adapter et à tester. Le code est lancé depuis le fichier Excel. WordDoc est un .dotm. Je n'ai pas traité la partie graphique.
    Fichiers attachés Fichiers attachés
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  17. #17
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 28
    Points : 3
    Points
    3

    Par défaut

    Citation Envoyé par Eric KERGRESSE Voir le message
    A adapter et à tester. Le code est lancé depuis le fichier Excel. WordDoc est un .dotm. Je n'ai pas traité la partie graphique.
    Bonjour,

    Je vous remercie énormément pour votre aide de qualité.

    Un petit souci pour moi dans l'exécution : tout fonctionne normalement, sauf le Tableau_4 (le doc Excel ne s'ouvre même pas pour celui-ci alors que je suis sûre de mon chemin). Savez-vous à quoi cela pourrait être dû ?

    Sinon, pour le reste, votre code fait des merveilles et je vous remercie énormément d'avoir résolu mon problème et de m'avoir fait aborder le problème sous cet angle, beaucoup plus pratique en effet !

    Je vais maintenant me pencher plus particulièrement sur votre code pour essayer de le comprendre.

    Merci encore !

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    3 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 3 956
    Points : 10 087
    Points
    10 087
    Billets dans le blog
    27

    Par défaut

    Citation Envoyé par Wilkoo Voir le message
    Un petit souci pour moi dans l'exécution : tout fonctionne normalement, sauf le Tableau_4 (le doc Excel ne s'ouvre même pas pour celui-ci alors que je suis sûre de mon chemin). Savez-vous à quoi cela pourrait être dû ?
    Bonjour,

    Vérifiez qu'il n'y a pas un \ à la fin du répertoire (colonne B) pour ce fichier.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  19. #19
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 28
    Points : 3
    Points
    3

    Par défaut

    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Vérifiez qu'il n'y a pas un \ à la fin du répertoire (colonne B) pour ce fichier.
    Bonjour, j'avais en fait mis le mauvais nom de feuille, mais ça ne marche toujours pas...

    Pour voir où était le problème, j'ai enlevé le On Error GoTo fin

    Il exécute alors la chose suivante : il ouvre et ferme un à un les documents contenant Tableau 1, Tableau 2, et Tableau 3. Pour le document contenant le Tableau 4 de Mai (que je n'avais pas sélectionné), il l'ouvre mais ne fait rien de plus, ne copie pas le Tableau etc (sachant que je voulais que ce soit celui de juin qui se colle au signet Tableau_4).

    Je vous mets des images de ce que je vois à l'écran pour être plus claire !

    Merci à vous !
    Images attachées Images attachées     

  20. #20
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    3 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 3 956
    Points : 10 087
    Points
    10 087
    Billets dans le blog
    27

    Par défaut

    Citation Envoyé par Wilkoo Voir le message
    Pour le mois de mai, le nom de l'onglet est Feuil1.

    Nb : Si le nom de l'onglet est un nom de mois, regardez la syntaxe pour le nom de l'onglet pour le mois de juin.
    Nom : Capture.JPG
Affichages : 16
Taille : 10,2 Ko
    J'ai du mettre l'apostrophe avant le nom de l'onglet pour qu'Excel considère la chaîne comme alphanumérique.
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

Discussions similaires

  1. Importer un graphique excel sous delphi 6
    Par PimpW dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 29/07/2008, 23h39
  2. import de donnée excel sous word
    Par CoOki_ dans le forum Word
    Réponses: 5
    Dernier message: 17/08/2007, 18h16
  3. Importer un fichier Excel sous MySQL
    Par Yagami_Raito dans le forum Requêtes
    Réponses: 5
    Dernier message: 06/05/2007, 23h21
  4. [VBA] Importer une feuille Excel sous Access
    Par Keldon dans le forum VBA Access
    Réponses: 10
    Dernier message: 26/04/2007, 09h22
  5. Importé un fichier excel sous SQL Server 2005
    Par summer91 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 01/05/2006, 10h52

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