Je souhaite changer la langue de vérification de toutes mes diapositives dans une présentation PowerPoint. J'ai essayé de définir la langue via le menu Préférences de langue, mais cela ne la modifie que pour les nouveaux PowerPoint.
Pour changer facilement la langue de la présentation entière PowerPoint, ouvrez l'onglet Affichage et sélectionnez la vue Contour.
Maintenant, appuyez sur
De même, lorsque vous avez tout sélectionné, vous pouvez modifier d'autres éléments tels que les polices, les couleurs, etc. Bien que, dans de nombreux cas, il soit préférable de modifier le masque des diapositives, une présentation comportant de nombreux éditeurs peut comporter de nombreux ensembles de s'écarte du maître sous-jacent et doit être réinitialisé pour être cohérent. Vous pouvez également réinitialiser des diapositives individuelles sur le style principal, mais cela peut également entraîner le déplacement des espaces réservés, ce qui peut être indésirable dans certaines situations.
Quant à moi - PowerPoint redémarrer était nécessaire. Probablement parce que j'ai aussi changé Editing Language:
À l'aide de PowerPoint 2010 j'ai ouvert le menu Plan -
Sélection de tout le texte (Ctrl + A), ouverture du menu Langue et définition de la langue de vérification
Et ça a marché!
Le menu de langue est situé sur l’onglet Réviser (après l’onglet Diaporama et non visible sur la capture d’écran).
Les réponses existantes fonctionnent pour le texte présent dans le plan. Malheureusement, dans mon cas, cela ne couvrait pas une partie importante du texte, y compris des figures, des tableaux, etc.
Cette macro a résolu le problème pour moi:
Sub ChangeProofingLanguageToEnglish()
Dim j, k, m, scount, fcount, gcount As Integer
scount = ActivePresentation.Slides.Count
For j = 1 To scount
fcount = ActivePresentation.Slides(j).Shapes.Count
For k = 1 To fcount
If ActivePresentation.Slides(j).Shapes(k).HasTextFrame Then
ActivePresentation.Slides(j).Shapes(k) _
.TextFrame.TextRange.LanguageID = msoLanguageIDEnglishUS
End If
If ActivePresentation.Slides(j).Shapes(k).Type = msoGroup Then
gcount = ActivePresentation.Slides(j).Shapes(k).GroupItems.Count
For m = 1 To gcount
If ActivePresentation.Slides(j).Shapes(k).GroupItems.Item(m).HasTextFrame Then
ActivePresentation.Slides(j).Shapes(k).GroupItems.Item(m) _
.TextFrame.TextRange.LanguageID = msoLanguageIDEnglishUS
End If
Next m
End If
Next k
Next j
End Sub
Le "msoLanguageIDEnglishUS" utilisé dans la macro ci-dessus peut être remplacé par n'importe quelle langue souhaitée. La liste complète des langues se trouve dans cet article
(Nous remercions Ganesh Kumar qui a posté la macro originale ici . J'ai ajouté le support pour le premier niveau de regroupement de formes. Pour l'améliorer davantage, la macro peut être rendue récursive pour rechercher des groupes contenant d'autres groupes, etc.)
J'ai amélioré La réponse d'Inigo pour fournir une version récursive qui modifie tous les éléments dans la langue souhaitée.
Cette version examinera récursivement chaque forme qui est un type de groupe. Certaines expériences suggèrent que msoGroup
et msoSmartArt
sont les types de groupe - n'hésitez pas à ajouter à cette liste si vous trouvez d'autres types de formes pouvant contenir des objets texte.
Sub ChangeProofingLanguageToEnglish()
Dim j As Long, k As Long
Dim languageID As MsoLanguageID
'Set this to your preferred language
languageID = msoLanguageIDEnglishUK
For j = 1 To ActivePresentation.Slides.Count
For k = 1 To ActivePresentation.Slides(j).Shapes.Count
ChangeAllSubShapes ActivePresentation.Slides(j).Shapes(k), _
languageID
Next k
Next j
End Sub
Sub ChangeAllSubShapes(targetShape As shape, languageID As MsoLanguageID)
Dim i As Long
If targetShape.HasTextFrame Then
targetShape.TextFrame.TextRange.languageID = languageID
End If
Select Case targetShape.Type
Case msoGroup, msoSmartArt
For i = 1 To targetShape.GroupItems.Count
ChangeAllSubShapes targetShape.GroupItems.Item(i), languageID
Next i
End Select
End Sub
Basé sur les réponses d'Inigo, Duncan, Maria et DomDev, cela fonctionne pour les formes, les tableaux, les groupes, SmartArt, maintenant et à l'avenir:
Sub ChangeProofingLanguageToFrench()
Dim j, k As Integer
Dim languageID As MsoLanguageID
'Set this to your preferred language
languageID = msoLanguageIDFrench
'Loop all the slides in the document, and change the language
For j = 1 To ActivePresentation.Slides.Count
For k = 1 To ActivePresentation.Slides(j).Shapes.Count
ChangeAllSubShapes ActivePresentation.Slides(j).Shapes(k), languageID
Next k
Next j
'Loop all the master slides, and change the language
For j = 1 To ActivePresentation.SlideMaster.CustomLayouts.Count
For k = 1 To ActivePresentation.SlideMaster.CustomLayouts(j).Shapes.Count
ChangeAllSubShapes ActivePresentation.SlideMaster.CustomLayouts(j).Shapes(k), languageID
Next k
Next j
'Change the default presentation language, so that all new slides respect the new language
ActivePresentation.DefaultLanguageID = languageID
End Sub
Sub ChangeAllSubShapes(targetShape As Shape, languageID As MsoLanguageID)
Dim i As Integer, r As Integer, c As Integer
If targetShape.HasTextFrame Then
targetShape.TextFrame.TextRange.languageID = languageID
End If
If targetShape.HasTable Then
For r = 1 To targetShape.Table.Rows.Count
For c = 1 To targetShape.Table.Columns.Count
targetShape.Table.Cell(r, c).Shape.TextFrame.TextRange.languageID = languageID
Next
Next
End If
Select Case targetShape.Type
Case msoGroup, msoSmartArt
For i = 1 To targetShape.GroupItems.Count
ChangeAllSubShapes targetShape.GroupItems.Item(i), languageID
Next i
End Select
End Sub
La version de Duncan fonctionne bien pour tout sauf les tables. J'ai trouvé un autre code qui semble également fonctionner avec les tables: https://stackoverflow.com/questions/4735765/PowerPoint-2007-set-language-on-tables-charts-etc-that-contains-text
Public Sub changeLanguage() On Error Resume Next Dim gi As GroupShapes '<-this was added. used below 'lang = "English" lang = "Norwegian" 'Determine language selected If lang = "English" Then lang = msoLanguageIDEnglishUK ElseIf lang = "Norwegian" Then lang = msoLanguageIDNorwegianBokmol End If 'Set default language in application ActivePresentation.DefaultLanguageID = lang 'Set language in each textbox in each slide For Each oSlide In ActivePresentation.Slides Dim oShape As Shape For Each oShape In oSlide.Shapes 'Check first if it is a table If oShape.HasTable Then For r = 1 To oShape.Table.Rows.Count For c = 1 To oShape.Table.Columns.Count oShape.Table.Cell(r, c).Shape.TextFrame.TextRange.LanguageID = lang Next Next Else Set gi = oShape.GroupItems 'Check if it is a group of shapes If Not gi Is Nothing Then If oShape.GroupItems.Count > 0 Then For i = 0 To oShape.GroupItems.Count - 1 oShape.GroupItems(i).TextFrame.TextRange.LanguageID = lang Next End If 'it's none of the above, it's just a simple shape, change the language ID Else oShape.TextFrame.TextRange.LanguageID = lang End If End If Next Next End Sub
En plus de la réponse fournie par Mastergalen et d’adresser des commentaires concernant le nouveau texte:
Si vous remarquez que cette langue changera automatiquement à chaque fois que vous commencerez à taper du nouveau texte (ce qui est très gênant), vous devez modifier la langue par défaut actuelle pour PowerPoint:
Windows Taskbar
(oui, pas dans PowerPoint), vérifiez si Language bar
est visible, Control Panel > Region and Language > Keyboards and Languages
. Cliquez sur Change keybords...
, passez à l'onglet Language bar
et cochez l'option Docked in the taskbar
. (Ceci est de Win7, donc peut-être un peu différent dans d'autres versions).Language bar
de la barre des tâches, cliquez sur le code de langue et passez à EN (si vous souhaitez utiliser l'anglais dans PowerPoint). A partir de maintenant, tout nouveau texte dans PowerPoint sera dans la langue sélectionnée :-)J'ai fait un complément en 2014 pour moi-même, qui fonctionne toujours dans PowerPoint 2016. https://github.com/wobba/officeaddin/releases/tag/v1.0.1
Il recherche les langues utilisées et vous permet de tout changer en même temps, en boucle.