Actualité informatique
Test comparatif matériel informatique
Jeux vidéo
Astuces informatique
Vidéo
Télécharger
Services en ligne
Forum informatique
01Business

|-  LOGICIELS


|||-  

Word 2010 : Légende automatique...

 

1 utilisateur anonyme et 146 utilisateurs inconnus
Ajouter une réponse
 

 
Page photos
 
     
Vider la liste des messages à citer
 
 Page :
1
Auteur
 Sujet :

Word 2010 : Légende automatique...

Prévenir les modérateurs en cas d'abus 
kowie
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 10/10/2015 à 08:50:56  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
... sous les photos insérées.

Bonjour, j'ai lu avec intérêt le développement de cette feature par @Tintin10.

http://forum.telecharger.01net [...] 1101_1.htm

Cette feature me permettrait de gagner un temps fou lors de l'édition de certains documents qui comprennent entre 30 et 40 photos... Vous me direz que Word n'est pas le meilleur soft pour cela et vous aurez raison.

Toutefois, quand je copie colle le code VBA dans la macro, ça plante à la compil'...

Pourriez-vous m'aider ?

  1. config
tintin10
Habitué (de 5 000 à 9 999 messages postés) Développeur
  1. Posté le 10/10/2015 à 09:09:38  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour. Pourrais-tu me dire où ça plante, et quelle est ta version de Microsoft Office ?


---------------
Configuration matérielle : voir ce lien
Merci de respecter les règles du forum
(Publicité)
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 10/10/2015 à 09:18:27  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour Tintin10

Je travaille sous Office 2010.

Ça plante au tout départ. Je joins une image.Microsoft Visual Basic pour Applications - Normal [arrêt]_2015-10-10_11-15-00Voir l'image en grand0 vote

  1. config
tintin10
Habitué (de 5 000 à 9 999 messages postés) Développeur
  1. Posté le 10/10/2015 à 11:16:11  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Oui, c'est normal que tu aies ce plantage : tu as un "?" qui traîne. Je pense que tu as copié le code avant que je ne le remette en forme suite à ta première remontée (quand le sujet avait été posté, on était sous une autre version du forum qui ne proposait pas de balises de code, je l'avais donc simplement mis en gras).
Or, sous ce forum, on a des caractères invisibles qui se glissent quand des chaînes de caractères non-séparées par des espaces deviennent trop longues. J'ai fait d'ailleurs corriger cela pour éviter que ces caractères invisibles n'apparaissent à l'intérieur des balises de code.
Recopie donc à nouveau le code, maintenant que je l'ai remis en forme dans le sujet concerné.


---------------
Configuration matérielle : voir ce lien
Merci de respecter les règles du forum
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 20/10/2015 à 10:49:30  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Exact ! Ça marche exactement comme décrit !

Merci, vraiment, pour ce développement qui me fait gagner un temps fou !

(Publicité)
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 20/10/2015 à 10:59:43  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Tintin10

Tu accepterais de continuer à développer cette feature, en ce qui concerne le placement des images et le formatage des légendes ?

J'essaie de bricoler mais je ne suis pas franchement doué...

  1. config
tintin10
Habitué (de 5 000 à 9 999 messages postés) Développeur
  1. Posté le 20/10/2015 à 17:38:16  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour. Bien sûr, il suffit de demander.
Je ne dis pas par contre que je ferai ça immédiatement, mais je me noterai d'y songer.


---------------
Configuration matérielle : voir ce lien
Merci de respecter les règles du forum
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 02/11/2015 à 10:37:22  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Cool :)

Le premier truc concerne l'ordre dans lequel les images sont insérées dans le document. Dans cette version, la macro détermine la première image à insérer par ordre A-Z ; mais la suivante est insérée avant la première ; ce qui fait que les images se retrouvent "classés" Z-A. Serait-il possible de faire en sorte qu'à l'arrivée, les images se retrouvent dans le sens A-Z dans le document ?

(Publicité)
  1. config
tintin10
Habitué (de 5 000 à 9 999 messages postés) Développeur
  1. Posté le 02/11/2015 à 20:02:01  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bien sûr, voici :
Code :(Double-cliquez pour supprimer les numéros de ligne)
  1. Sub InsertionImageLégende()
  2. 'InsertionImageLégende Macro
  3. 'Permet l'insertion d'une image avec une légende automatique et groupée
  4. 'Sélectionnons notre image
  5.  Dim pict As Shape
  6.  Dim path As Variant
  7.  With Application.FileDialog(msoFileDialogOpen)
  8.    .AllowMultiSelect = True
  9.    .Filters.Clear
  10.    .Filters.Add "Toutes les images (*.emf;*.wmf;*.jpg;*.jpeg;*.jfif;*.jpe;*.png;*.bmp;*.dib;*.rle;*.gif;*.emz;*.wmz;*.pcz;*.tif;*.tiff;*.cgm;*.eps;*.pct;*.pict;*.wpg)", "*.emf; *.wmf; *.jpg; *.jpeg; *.jfif; *.jpe; *.png; *.bmp; *.dib; *.rle; *.gif; *.emz; *.wmz; *.pcz; *.tif; *.tiff; *.cgm; *.eps; *.pct; *.pict; *.wpg", 1
  11.    .Show
  12.    l = .SelectedItems.Count
  13.    For k = l To 1 Step -1
  14. 'Insérons notre image
  15.      path = .SelectedItems.Item(k)
  16.      Set pict = ActiveDocument.Shapes.AddPicture(path)
  17.      pict.Select
  18.      pict.ZOrder msoBringInFrontOfText 'Mise en forme devant le texte pour le groupage
  19. 'Alignement par rapport au paragraphe dans lequel le curseur clignote
  20. 'pict.Top = 0
  21. 'pict.Left = 0
  22. 'Recherche du nom de l'image : on prend la chaîne de caractères située après le dernier "\"
  23.      Dim name As String
  24.      Dim i As Integer
  25.      i = Len(path)
  26.      Do While Not (Mid(path, i, 1) = "\") And i > 0
  27.        i = i - 1
  28.      Loop
  29.      path = Mid(path, i + 1, Len(path) - i)
  30. 'Le nom trouvé est mis dans la zone de texte en tant que légende
  31.      Selection.InsertCaption Label:="Figure", Title:=" : " + path
  32.      Dim LastShape As Integer
  33.      LastShape = ActiveDocument.Shapes.Count
  34.      ActiveDocument.Shapes(LastShape).Select
  35. 'Texte centré
  36.      Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
  37. 'Groupage de l'image et de la zone de texte
  38.      pict.name = path
  39.      ActiveDocument.Shapes(LastShape).name = "caption : " + path
  40.      Dim gr As Shape
  41.      Set gr = ActiveDocument.Shapes.Range(Array(path, "caption : " + path)).Group
  42.      gr.ConvertToInlineShape
  43.    Next
  44.  End With
  45. End Sub
Message cité 1 fois

---------------
Configuration matérielle : voir ce lien
Merci de respecter les règles du forum
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 02/11/2015 à 20:43:31  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 

Tintin10 a écrit :

Bien sûr, voici :
Code :(Double-cliquez pour supprimer les numéros de ligne)
  1. Sub InsertionImageLégende()
  2. 'InsertionImageLégende Macro
  3. 'Permet l'insertion d'une image avec une légende automatique et groupée
  4. 'Sélectionnons notre image
  5.  Dim pict As Shape
  6.  Dim path As Variant
  7.  With Application.FileDialog(msoFileDialogOpen)
  8.    .AllowMultiSelect = True
  9.    .Filters.Clear
  10.    .Filters.Add "Toutes les images (*.emf;*.wmf;*.jpg;*.jpeg;*.jfif;*.jpe;*.png;*.bmp;*.dib;*.rle;*.gif;*.emz;*.wmz;*.pcz;*.tif;*.tiff;*.cgm;*.eps;*.pct;*.pict;*.wpg)", "*.emf; *.wmf; *.jpg; *.jpeg; *.jfif; *.jpe; *.png; *.bmp; *.dib; *.rle; *.gif; *.emz; *.wmz; *.pcz; *.tif; *.tiff; *.cgm; *.eps; *.pct; *.pict; *.wpg", 1
  11.    .Show
  12.    l = .SelectedItems.Count
  13.    For k = l To 1 Step -1
  14. 'Insérons notre image
  15.      path = .SelectedItems.Item(k)
  16.      Set pict = ActiveDocument.Shapes.AddPicture(path)
  17.      pict.Select
  18.      pict.ZOrder msoBringInFrontOfText 'Mise en forme devant le texte pour le groupage
  19. 'Alignement par rapport au paragraphe dans lequel le curseur clignote
  20. 'pict.Top = 0
  21. 'pict.Left = 0
  22. 'Recherche du nom de l'image : on prend la chaîne de caractères située après le dernier "\"
  23.      Dim name As String
  24.      Dim i As Integer
  25.      i = Len(path)
  26.      Do While Not (Mid(path, i, 1) = "\") And i > 0
  27.        i = i - 1
  28.      Loop
  29.      path = Mid(path, i + 1, Len(path) - i)
  30. 'Le nom trouvé est mis dans la zone de texte en tant que légende
  31.      Selection.InsertCaption Label:="Figure", Title:=" : " + path
  32.      Dim LastShape As Integer
  33.      LastShape = ActiveDocument.Shapes.Count
  34.      ActiveDocument.Shapes(LastShape).Select
  35. 'Texte centré
  36.      Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
  37. 'Groupage de l'image et de la zone de texte
  38.      pict.name = path
  39.      ActiveDocument.Shapes(LastShape).name = "caption : " + path
  40.      Dim gr As Shape
  41.      Set gr = ActiveDocument.Shapes.Range(Array(path, "caption : " + path)).Group
  42.      gr.ConvertToInlineShape
  43.    Next
  44.  End With
  45. End Sub

Afficher plus
Afficher moins




Excellent ! Merci !

ça crash au moment du groupage. Je joins des pics avec le message et le debug...


CrashVoir l'image en grand0 voteDebug0 vote

  1. config
tintin10
Habitué (de 5 000 à 9 999 messages postés) Développeur
  1. Posté le 02/11/2015 à 20:46:51  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Regarde peut-être ce sujet (bien qu'il concerne plutôt Microsoft Excel). Tu as dû lancer la macro deux fois de suite.


---------------
Configuration matérielle : voir ce lien
Merci de respecter les règles du forum
(Publicité)
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 04/11/2015 à 17:49:42  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Merci @Tintin 10 :) ça marche en rebootant Word.

Toutefois, les images sont toujours dans l'ordre inverse. Le folder contient 01;jpg, 02.jpg et 03.jpg. et à l'arrivée dans word elles sont classées 03.jpg, 02.jpg et 03.jpg.

Je n'arrive pas à repérer où ça se trouve dans le code...

Merci de ton aide !

  1. config
tintin10
Habitué (de 5 000 à 9 999 messages postés) Développeur
  1. Posté le 04/11/2015 à 19:50:06  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bizarre, chez moi, elles s'affichent bien dans l'ordre alphabétique.
Je fais une boucle en sens inverse (ligne 13) :
Code :(Double-cliquez pour supprimer les numéros de ligne)
  1. For k = l To 1 Step -1
Message cité 1 fois

---------------
Configuration matérielle : voir ce lien
Merci de respecter les règles du forum
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 19/11/2015 à 12:39:56  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 

Tintin10 a écrit :

Bizarre, chez moi, elles s'affichent bien dans l'ordre alphabétique.
Je fais une boucle en sens inverse (ligne 13) :
Code :(Double-cliquez pour supprimer les numéros de ligne)
  1. For k = l To 1 Step -1

Afficher plus
Afficher moins




Merci de ta réponse, Tintin10

Effectivement, cela fonctionne mais il ne faut pas lancer la macro 2 fois de suite ; il faut quitter word et relancer. (heureusement, pas besoin de rebooter la machine :) )

Pour pousser le dév un peu plus loin, pourrait-on :

1- placer l'image au centre de la page
2- introduire un saut de page après la légende

pour obtenir au final une image centrée par page ?

Merci encore des dév que tu as fait ! Chapeau !


Document1 - Microsoft Word_2015-11-19_12-34-55Voir l'image en grand0 vote

(Publicité)
  1. config
tintin10
Habitué (de 5 000 à 9 999 messages postés) Développeur
  1. Posté le 21/11/2015 à 13:18:34  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour. Voici ce que tu demandais :
Code :(Double-cliquez pour supprimer les numéros de ligne)
  1. Public indexLaunch As Integer
  2. Sub InsertionImageLégende()
  3. 'InsertionImageLégende Macro
  4. 'Permet l'insertion d'une image avec une légende automatique et groupée
  5. 'Sélectionnons notre image
  6.  Dim pict As Shape
  7.  Options.ReplaceSelection = False
  8.  Dim path As Variant
  9.  With Application.FileDialog(msoFileDialogOpen)
  10.    .AllowMultiSelect = True
  11.    .Filters.Clear
  12.    .Filters.Add "Toutes les images (*.emf;*.wmf;*.jpg;*.jpeg;*.jfif;*.jpe;*.png;*.bmp;*.dib;*.rle;*.gif;*.emz;*.wmz;*.pcz;*.tif;*.tiff;*.cgm;*.eps;*.pct;*.pict;*.wpg)", "*.emf; *.wmf; *.jpg; *.jpeg; *.jfif; *.jpe; *.png; *.bmp; *.dib; *.rle; *.gif; *.emz; *.wmz; *.pcz; *.tif; *.tiff; *.cgm; *.eps; *.pct; *.pict; *.wpg", 1
  13.    .Show
  14.    l = .SelectedItems.Count
  15.    For k = 1 To l
  16. 'Insérons notre image
  17.      path = .SelectedItems.Item(k)
  18.      Set pict = ActiveDocument.Shapes.AddPicture(path)
  19.      pict.Select
  20.      pict.ZOrder msoBringInFrontOfText 'Mise en forme devant le texte pour le groupage
  21. 'Recherche du nom de l'image : on prend la chaîne de caractères située après le dernier "\"
  22.      Dim name As String
  23.      Dim i As Integer
  24.      i = Len(path)
  25.      Do While Not (Mid(path, i, 1) = "\") And i > 0
  26.        i = i - 1
  27.      Loop
  28.      path = Mid(path, i + 1, Len(path) - i)
  29. 'Le nom trouvé est mis dans la zone de texte en tant que légende
  30.      Selection.InsertCaption Label:="Figure", Title:=" : " + path
  31.      Dim LastShape As Integer
  32.      LastShape = ActiveDocument.Shapes.Count
  33.      ActiveDocument.Shapes(LastShape).Select
  34. 'Texte centré
  35.      Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
  36. 'Groupage de l'image et de la zone de texte
  37.      pict.name = path & indexLaunch
  38.      ActiveDocument.Shapes(LastShape).name = "caption : " + path
  39.      Dim gr As Shape
  40.      Set gr = ActiveDocument.Shapes.Range(Array(path & indexLaunch, "caption : " + path)).Group
  41.      gr.Left = (ActiveDocument.PageSetup.PageWidth - gr.Width) / 2 - ActiveDocument.PageSetup.LeftMargin
  42.      gr.Top = (ActiveDocument.PageSetup.PageHeight - gr.Height) / 2 - ActiveDocument.PageSetup.TopMargin
  43.      ActiveDocument.Sentences(1).Select
  44.      Selection.Collapse wdCollapseEnd
  45.      If k < l Then
  46.        Selection.InsertBreak wdPageBreak
  47.      End If
  48.    Next
  49.  End With
  50.  indexLaunch = indexLaunch + 1
  51.  Options.ReplaceSelection = True
  52. End Sub


Au passage, j'ai ajouté une variable globale "indexLaunch", incrémentée à chaque fois que la macro est exécutée. Cela permet de la lancer plusieurs fois de suite.
Message cité 1 fois
Message édité par Tintin10 le 21/11/2015 à 13:19:42

---------------
Configuration matérielle : voir ce lien
Merci de respecter les règles du forum
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 30/11/2015 à 10:12:33  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 

Tintin10 a écrit :

Bonjour. Voici ce que tu demandais :
Code :(Double-cliquez pour supprimer les numéros de ligne)
  1. Public indexLaunch As Integer
  2. Sub InsertionImageLégende()
  3. 'InsertionImageLégende Macro
  4. 'Permet l'insertion d'une image avec une légende automatique et groupée
  5. 'Sélectionnons notre image
  6.  Dim pict As Shape
  7.  Options.ReplaceSelection = False
  8.  Dim path As Variant
  9.  With Application.FileDialog(msoFileDialogOpen)
  10.    .AllowMultiSelect = True
  11.    .Filters.Clear
  12.    .Filters.Add "Toutes les images (*.emf;*.wmf;*.jpg;*.jpeg;*.jfif;*.jpe;*.png;*.bmp;*.dib;*.rle;*.gif;*.emz;*.wmz;*.pcz;*.tif;*.tiff;*.cgm;*.eps;*.pct;*.pict;*.wpg)", "*.emf; *.wmf; *.jpg; *.jpeg; *.jfif; *.jpe; *.png; *.bmp; *.dib; *.rle; *.gif; *.emz; *.wmz; *.pcz; *.tif; *.tiff; *.cgm; *.eps; *.pct; *.pict; *.wpg", 1
  13.    .Show
  14.    l = .SelectedItems.Count
  15.    For k = 1 To l
  16. 'Insérons notre image
  17.      path = .SelectedItems.Item(k)
  18.      Set pict = ActiveDocument.Shapes.AddPicture(path)
  19.      pict.Select
  20.      pict.ZOrder msoBringInFrontOfText 'Mise en forme devant le texte pour le groupage
  21. 'Recherche du nom de l'image : on prend la chaîne de caractères située après le dernier "\"
  22.      Dim name As String
  23.      Dim i As Integer
  24.      i = Len(path)
  25.      Do While Not (Mid(path, i, 1) = "\") And i > 0
  26.        i = i - 1
  27.      Loop
  28.      path = Mid(path, i + 1, Len(path) - i)
  29. 'Le nom trouvé est mis dans la zone de texte en tant que légende
  30.      Selection.InsertCaption Label:="Figure", Title:=" : " + path
  31.      Dim LastShape As Integer
  32.      LastShape = ActiveDocument.Shapes.Count
  33.      ActiveDocument.Shapes(LastShape).Select
  34. 'Texte centré
  35.      Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
  36. 'Groupage de l'image et de la zone de texte
  37.      pict.name = path & indexLaunch
  38.      ActiveDocument.Shapes(LastShape).name = "caption : " + path
  39.      Dim gr As Shape
  40.      Set gr = ActiveDocument.Shapes.Range(Array(path & indexLaunch, "caption : " + path)).Group
  41.      gr.Left = (ActiveDocument.PageSetup.PageWidth - gr.Width) / 2 - ActiveDocument.PageSetup.LeftMargin
  42.      gr.Top = (ActiveDocument.PageSetup.PageHeight - gr.Height) / 2 - ActiveDocument.PageSetup.TopMargin
  43.      ActiveDocument.Sentences(1).Select
  44.      Selection.Collapse wdCollapseEnd
  45.      If k < l Then
  46.        Selection.InsertBreak wdPageBreak
  47.      End If
  48.    Next
  49.  End With
  50.  indexLaunch = indexLaunch + 1
  51.  Options.ReplaceSelection = True
  52. End Sub


Au passage, j'ai ajouté une variable globale "indexLaunch", incrémentée à chaque fois que la macro est exécutée. Cela permet de la lancer plusieurs fois de suite.
Afficher plus
Afficher moins




Bonjour @ tintin10 :)

Merci pour ce travail ; je suis toujours un peu épaté par les codeurs.

Il y a un bug qui arrive au moment, je crois, du groupage de la deuxième image sur la deuxième page. Je te joins en pic. le message d'erreur et le débug. La première image, elle, est parfaitement placée.

J'ai fait des tests dans tous les sens, en rebootant l'appi, en changeant les noms des images mais rien n'y fait...

  1. config
tintin10
Habitué (de 5 000 à 9 999 messages postés) Développeur
  1. Posté le 01/12/2015 à 19:22:26  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour. Ton fichier est vierge au départ ? Combien de photos mets-tu ?
Message cité 1 fois

---------------
Configuration matérielle : voir ce lien
Merci de respecter les règles du forum
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 02/12/2015 à 09:24:21  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 

Tintin10 a écrit :

Bonjour. Ton fichier est vierge au départ ? Combien de photos mets-tu ?
Afficher plus
Afficher moins

Bonjour Tintin10

- J'ai essayé les deux cas : avec le curseur au milieu d'un document déjà édité / avec le curseur au début d'un document vierge (et dans ce dernier cas, j'ai testé avec un document non-enregistré et un document enregistré).

- Je teste avec 19 photos.

  1. config
tintin10
Habitué (de 5 000 à 9 999 messages postés) Développeur
  1. Posté le 03/12/2015 à 20:56:08  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Je vais regarder, car en effet, ce n'est pas encore super stable, et je ne sais pas pourquoi.
Tu ne m'as pas mis les images montrant le bug, dans ton message précédent.
Message cité 1 fois

---------------
Configuration matérielle : voir ce lien
Merci de respecter les règles du forum
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 03/12/2015 à 22:49:11  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 

Tintin10 a écrit :

Je vais regarder, car en effet, ce n'est pas encore super stable, et je ne sais pas pourquoi.
Tu ne m'as pas mis les images montrant le bug, dans ton message précédent.
Afficher plus
Afficher moins




Ooops... navré.

Message édité par kowie le 03/12/2015 à 22:52:07
kowie
Bébé forumeur (De 10 à 49 messages postés)
  1. Posté le 04/12/2015 à 16:04:26  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Tintin10

Je n'arrive pas à saisir si les photos ont bien été importées dans l'album...

  1. config
tintin10
Habitué (de 5 000 à 9 999 messages postés) Développeur
  1. Posté le 04/12/2015 à 20:16:47  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Si, je les ai remarquées dans ton profil.


---------------
Configuration matérielle : voir ce lien
Merci de respecter les règles du forum
  1. config
tintin10
Habitué (de 5 000 à 9 999 messages postés) Développeur
  1. Posté le 05/12/2015 à 18:45:15  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bon, j'ai rajouté une ligne qui permet, en cas d'erreur, d'éviter de s'arrêter. Les images qui plantent ne sont pas placées.
Au moins, ça permet à la variable "indexLaunch" de s'incrémenter, et donc on évite d'empirer le problème en relançant le programme.
Code :(Double-cliquez pour supprimer les numéros de ligne)
  1. Public indexLaunch As Integer
  2. Sub InsertionImageLégende()
  3. 'InsertionImageLégende Macro
  4. 'Permet l'insertion d'une image avec une légende automatique et groupée
  5. 'Sélectionnons notre image
  6.  Dim pict As Shape
  7.  Options.ReplaceSelection = False
  8.  Dim path As Variant
  9.  With Application.FileDialog(msoFileDialogOpen)
  10.    .AllowMultiSelect = True
  11.    .Filters.Clear
  12.    .Filters.Add "Toutes les images (*.emf;*.wmf;*.jpg;*.jpeg;*.jfif;*.jpe;*.png;*.bmp;*.dib;*.rle;*.gif;*.emz;*.wmz;*.pcz;*.tif;*.tiff;*.cgm;*.eps;*.pct;*.pict;*.wpg)", "*.emf; *.wmf; *.jpg; *.jpeg; *.jfif; *.jpe; *.png; *.bmp; *.dib; *.rle; *.gif; *.emz; *.wmz; *.pcz; *.tif; *.tiff; *.cgm; *.eps; *.pct; *.pict; *.wpg", 1
  13.    .Show
  14.    l = .SelectedItems.Count
  15.    For k = 1 To l
  16.      On Error Resume Next
  17. 'Insérons notre image
  18.      path = .SelectedItems.Item(k)
  19.      Set pict = ActiveDocument.Shapes.AddPicture(path)
  20.      pict.Select
  21.      pict.ZOrder msoBringInFrontOfText 'Mise en forme devant le texte pour le groupage
  22. 'Recherche du nom de l'image : on prend la chaîne de caractères située après le dernier "\"
  23.      Dim name As String
  24.      Dim i As Integer
  25.      i = Len(path)
  26.      Do While Not (Mid(path, i, 1) = "\") And i > 0
  27.        i = i - 1
  28.      Loop
  29.      path = Mid(path, i + 1, Len(path) - i)
  30. 'Le nom trouvé est mis dans la zone de texte en tant que légende
  31.      Selection.InsertCaption Label:="Figure", Title:=" : " + path
  32.      Dim LastShape As Integer
  33.      LastShape = ActiveDocument.Shapes.Count
  34.      ActiveDocument.Shapes(LastShape).Select
  35. 'Texte centré
  36.      Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
  37. 'Groupage de l'image et de la zone de texte
  38.      pict.name = path & indexLaunch
  39.      ActiveDocument.Shapes(LastShape).name = ("caption : " + path) & indexLaunch
  40.      Dim gr As Shape
  41.      Set gr = ActiveDocument.Shapes.Range(Array(path & indexLaunch, ("caption : " + path) & indexLaunch)).Group
  42.      gr.Left = (ActiveDocument.PageSetup.PageWidth - gr.Width) / 2 - ActiveDocument.PageSetup.LeftMargin
  43.      gr.Top = (ActiveDocument.PageSetup.PageHeight - gr.Height) / 2 - ActiveDocument.PageSetup.TopMargin
  44.      ActiveDocument.Sentences(1).Select
  45.      Selection.Collapse wdCollapseEnd
  46.      If k < l Then
  47.        Selection.InsertBreak wdPageBreak
  48.      End If
  49.    Next
  50.  End With
  51.  indexLaunch = indexLaunch + 1
  52.  Options.ReplaceSelection = True
  53. End Sub


---------------
Configuration matérielle : voir ce lien
Merci de respecter les règles du forum
 Page :
1

Aller à :
 

Sujets relatifs
Win8 réparation automatique plante sans cesse Office 2010 ne fonctionne plus après un formatage
Budget sous open office (légende et graphique) Afficher la feuille au milieu de l'écran avec Word 2007
craquer un mdp oublié sous word 2007 Transformer un texte word en image
Word Insertion d'un objet représentant un ciseau Comment fusionner un document Word avec Excel ?
Plus de sujets relatifs à : Word 2010 : Légende automatique...

Les 5 sujets de discussion précédents Nombre de réponses Dernier message
Filigrane personnalisé GRISE sur Word 2007 1
fichiers xls ou doc en pdf 5
Réinstallation récurente de excel 2007 2
Probléme aprés l'importation de données d'un site 12
Test LT3 2