Formating powerpoint

Bonjour à tous :)

Je suis nouveau sur le forum et j'aurais besoin de votre aide s'il vous plait :)

Mon objectif est de faire une macro qui corrige la plupart des problèmes de format que je trouve dans les présentations que je dois revoir : double espace que la macro remplace par un simple espace etc...

Je suis vraiment nul en VBA donc j'ai pris des bouts de code sur des forums et aujourd'hui j'ai une macro immonde mais qui fonctionne.

Le seule problème que j'ai c'est qu'elle ne conserve pas les mises en forme.

L'une des solutions serait de faire la mise en page après le passage de la macro mais bon souvent je suis en bout de chaine et la mise en page est déjà faite.

Je vous mets un extrait de mon code :

Sub CleanMyPresentation()

Dim t As Date
Dim sld As Slide
Dim shp As Shape
Dim i As Long
Dim j As Long

t = Now()

For Each sld In ActivePresentation.Slides

For Each shp In sld.Shapes

If shp.HasTextFrame Then
If shp.TextFrame.HasText Then
shp.TextFrame.TextRange.Text = Replace(shp.TextFrame.TextRange.Text, " ", " ")

End If
End If

If shp.HasTable Then
For i = 1 To shp.Table.Rows.Count
For j = 1 To shp.Table.Columns.Count
shp.Table.Rows.Item(i).Cells(j).Shape.TextFrame.TextRange.Text = Replace(shp.Table.Rows.Item(i).Cells(j).Shape.TextFrame.TextRange.Text, " ", " ")

Next j
Next i
End If

Next shp

Next sld

MsgBox "Your presentation is ready (" & Format(Now() - t, "hh:mm:ss") & ")"

End Sub

Merci :)

Bonjour,

Je ne comprends pas votre problème. Pour conserver votre mise à jour pourquoi ne pas sauvegarder à la fin ?

ActivePresentation.Save

Bonjour,

Toutes mes excuses si je me suis mal exprimé.

En fait le problème que j’ai, c’est que quand la macro passe sur la présentation elle ne conserve pas la mise en page initiale sur certaines slides ce qui fait que le texte est bien corrigé mais que ça ne ressemble plus à rien…

J’ai aussi un autre problème c’est qu’elle est beaucoup trop lente car mal écrite je pense. Dans l’exemple que je vous ai donné je lui demande de remplacer simplement les doubles espaces par un espace simple mais dans la vraie macro des conditions comme ça il y en a un peu moins de 3000 ce qui fait que pour 10 slides avec un peu de texte elle met 30 min à s’exécuter (je suis sur un Mac mini M1 avec 16Go de Ram donc a priori ça vient pas de ça). Dans ces 3000 vérifications il y’en a une vingtaine qui concerne les typographies (et déjà à ce stade elle avait du mal) et j’ai rajouté toutes les monnaies du monde avec des chiffres de 1 à 9 en lui disant par exemple si tu trouves EUR1 tu remplaces par EUR 1, si tu trouves USD3 remplace par USD 3 etc… Car souvent les personnes qui travaillent sur les slides vont écrie CHF1,200 au lieu de CHF 1,200 (ca me fait penser que je devrais rajouter un Check pour vérifier le séparateur des milliers mais faut que je trouve comment faire). J’ai fait ca avec 180 monnaies et avec les chiffres de 0 à 9 ce qui fait environ 1620 lignes de code. C’est bourrin mais je voudrais être sûr de prendre en compte la plupart des possibilités car aujourd’hui on ne travaille que sur 4/5 marchés mais demain on ne sait pas. J’y ai réfléchi et peut-être que le plus simple ce serait que la macro demande à l’utilisateur la monnaie puis qu’elle a vérifier les espaces pour les chiffres de 1 à 9. Ça irait plus vite mais on se retrouve avec le risque que l’utilisateur rentre mal la monnaie (ca parait gros mais on se sait jamais…). Mais vous aurez peut-être une manière plus intelligente de le faire.

L’ensemble des vérifications sont codés sur le meme modèle que l’extrait que je vous ai mis précédemment.

Désolé pour ce long pavé et merci pour votre aide !

Difficile de vous aider sans voir de visu ce qu'il y a faire.

Je vous mets ci-joint un exemple de présentation avec ma macro complète.

La premiere slide il y a du texte à corriger dans une zone de texte et un tableau et ca fonctionne, la deuxième slide il n'y a rien à corriger mais vous verrez qu'une fois la macro exécuté le format n'est plus du tout le même.

Sur mon Mac, rien que pour ces deux slides la macro a mis 1min30 à s'exécuter

sachant que parfois nous avons des présentations qui vont faire 200 ou 300 slides...

Chez moi, la procédure dure 4 minutes (Office 32 bits).

capture

Ah oui quand même, c'est beaucoup trop. Même si en soit elle fait beaucoup plus de check qu'un homme la laisser tourner pendant 3/4H c'est pas pratique.

Comment faire pour que ce soit plus rapide ? Est-ce que le délai vient du fait qu'elle est particulièrement mal écrite ? Je pourrais essayer de réduire le nombre de check en demandant la currency à l'utilisateur pour ne pas tester chaque monnaie mais même avec ca elle sera encore trop lente.

J'avais essayé sur une présentation de 50 slides et juste avec les 20 premiers check ca avait pris 30 min en plus de casser chaque format.

Vous êtes sur Office 64 bits ?

Oui, je suis sur office 365 pour Mac.

Je n'ai pas de solution "plus performante", désolé.

J'avais fait ce fichier Excel pour voir si on pouvait gagner du temps sur la procédure ShapeCurrency111 qui est la plus chronophage, mais cela ne donne rien.

Rechercher des sujets similaires à "formating powerpoint"