web-dev-qa-db-fra.com

Comment changer la langue de toutes les diapositives PowerPoint en même temps?

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.

149
liamzebedee

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

  • Ctrl+A tout sélectionner.
  • OutilsLangue → Choisissez votre langue à définir.

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.

PowerPoint 2013

  • AffichageContour → sélectionner toutes les diapositives (dans un menu de gauche) via Ctrl+A.
  • VérificationLangueDéfinir la langue de vérification ... → Choisissez la langue à définir.

Quant à moi - PowerPoint redémarrer était nécessaire. Probablement parce que j'ai aussi changé Editing Language:

  • VérificationLangueDéfinir la langue de vérification ...Préférences de langueChoisissez Modification des langues.
162
Mastergalen

À l'aide de PowerPoint 2010 j'ai ouvert le menu Plan -

outline tab

Sélection de tout le texte (Ctrl + A), ouverture du menu Langue et définition de la langue de vérification

language option

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).

34
liamzebedee

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.)

22
Inigo

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
19
Duncan Jones

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
9
tricasse

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
6
Maria

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:

  • assurez-vous que la fenêtre PowerPoint est une fenêtre active
  • dans le Windows Taskbar (oui, pas dans PowerPoint), vérifiez si Language bar est visible,
    • sinon, allez à 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).
  • now key action - dans le 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 :-)
  • si vous voulez écrire dans votre langue d'origine, changez-la.
4
Gas

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.

 enter image description here

3
Mikael Svenson