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

VBA Word Discussion :

Transformer tous les groupes des formes en image [WD-365]


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Logicticien
    Inscrit en
    septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Logicticien

    Informations forums :
    Inscription : septembre 2017
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Transformer tous les groupes des formes en image
    Bonjour la communauté

    J'ai un projet : faire une macro dans Word 365 qui va transformer touts les groupes de formes en image dans un document.
    Toutes les groupes de formes ont été renommés (de 1 à x). Dans mon exemple il y a 4 groupes à transformer en image. EssaiMacroImageForme.7z

    J'ai réalisé l'enregistrement d'une macro pour voir à quoi ressemblerait le code en faisant un couper collage spéciale image :

    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
    Sub macorManuelle2()
    ' macorManuelle2 Macro
     
        ActiveDocument.Shapes.Range(Array("1")).Select
        Selection.Cut
        Selection.PasteSpecial Link:=False, DataType:=15, Placement:=wdInLine, _
            DisplayAsIcon:=False
     
        ActiveDocument.Shapes.Range(Array("2")).Select
        Selection.Cut
        Selection.PasteSpecial Link:=False, DataType:=15, Placement:=wdInLine, _
            DisplayAsIcon:=False
     
        ActiveDocument.Shapes.Range(Array("3")).Select
        Selection.Cut
        Selection.PasteSpecial Link:=False, DataType:=15, Placement:=wdInLine, _
            DisplayAsIcon:=False
     
        ActiveDocument.Shapes.Range(Array("4")).Select
        Selection.Cut
        Selection.PasteSpecial Link:=False, DataType:=15, Placement:=wdInLine, _
            DisplayAsIcon:=False
    End Sub
    Elle marche malgré quelques petits problèmes de mise en page mais je verrai ceci dans un second temps.

    J'ai donc réalisé un code avec une boucle. Et pour savoir le nombre de formes présentes, je demande à l'utilisateur via une inputbox

    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
     
    Sub MacroCopierCollerImage()
    '
    ' MacroCopierCollerImage Macro
    '
    Dim i As Integer, a As Integer ' a pour le nombre maximum de groupes de formes dans le word
     
    a = InputBox("veuillez saisir le nombre de groupes d'images du documnent") 'version simplifié
     
    For i = 1 To a
     
        ActiveDocument.Shapes.Range(Array(i)).Select
        Selection.Copy
        Selection.Cut
        Selection.PasteSpecial Link:=False, DataType:=15, Placement:=wdInLine, _
            DisplayAsIcon:=False
     
     
        Next
     
    End Sub
    Cette macro ne marche pas. Je la lance au pas à pas et les erreurs ne sont pas toujours les memes :
    - Parfois la macro commence par transformer le groupe 3 en 1er, parfois c'est le groupe 4 en 1er mais jamais le groupe 1 (alors qu'avec l'espion j'ai bien i=1
    - Parfois l’erreur est au niveau du collage spéciale qui ne marche pas au 2eme groupe
    - Parfois l’erreur est « l’index de cette collection est en dehors des limites, à la 3eme image.

    Ma question est : pourquoi la macro ne commence pas par mon groupe n°1 et le fait dans l'ordre numérique (1,2,3,4)

    C'est ma 1ere macro sous word et je n'ai jamais été un professionnel de VBA, est ce que j'ai loupé quelque chose d'évident?
    Merci pour votre aide
    Nom : Les formes et leur noms.png
Affichages : 36
Taille : 60,0 Ko
    Images attachées Images attachées  

  2. #2
    Membre actif
    Homme Profil pro
    Auto entrepreneur
    Inscrit en
    décembre 2021
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Auto entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2021
    Messages : 200
    Points : 287
    Points
    287
    Par défaut
    Bonjour,

    Comme vous modifiez l'indexation de la collection Shapes, il vous faut commencer par la fin.
    En revanche, je n'ai pas réussi à modifier les noms des InlineShapes après transformation.


    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
     
    Sub MacroCopierCollerImage()
     
    Dim I As Integer
     
        With ActiveDocument
            For I = .Shapes.Count To 1 Step -1
                .Shapes(I).Select
                With Selection
                     .Copy
                     .Cut
                     .PasteSpecial Link:=False, DataType:=15, Placement:=wdInLine, DisplayAsIcon:=False
                End With
            Next I
         End With
     
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Logicticien
    Inscrit en
    septembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Logicticien

    Informations forums :
    Inscription : septembre 2017
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Merci
    Un grand merci pour ce retour rapide! Ça répond parfaitement à ce dont j'avais besoin en beaucoup mieux optimisé.
    C'est pour un transfert vers un autre logiciel, donc pas de besoin de renommer les inlineshapes.
    Bonne journée

    Citation Envoyé par E KERGRESSE Voir le message
    Bonjour,

    Comme vous modifiez l'indexation de la collection Shapes, il vous faut commencer par la fin.
    En revanche, je n'ai pas réussi à modifier les noms des InlineShapes après transformation.


    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
     
    Sub MacroCopierCollerImage()
     
    Dim I As Integer
     
        With ActiveDocument
            For I = .Shapes.Count To 1 Step -1
                .Shapes(I).Select
                With Selection
                     .Copy
                     .Cut
                     .PasteSpecial Link:=False, DataType:=15, Placement:=wdInLine, DisplayAsIcon:=False
                End With
            Next I
         End With
     
    End Sub

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

Discussions similaires

  1. [MySQL] Récupérer tout les noms des images après qu'il et était renommé
    Par ssTutuxX dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/08/2014, 13h07
  2. AWstats : stats de toutes les périodes des log
    Par maitrarthur dans le forum Statistiques
    Réponses: 2
    Dernier message: 06/09/2007, 11h22
  3. Pour les experts des forms
    Par EPJSoft dans le forum Delphi
    Réponses: 7
    Dernier message: 10/06/2007, 00h21
  4. [VBA] récupérer tout les noms des propriétés d'un objet
    Par ooyeah dans le forum Général VBA
    Réponses: 6
    Dernier message: 05/03/2007, 16h17
  5. Réponses: 17
    Dernier message: 24/11/2006, 13h56

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