Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Power Point Afficher progressivement le texte d'un tableau

garth_algar

XLDnaute Junior
Bonjour à toutes et à tous,
Y a-t-il une possibilité pour personnaliser un affichage progressif du texte au sein d'un tableau, cellule par cellule, voire colonne par colonne ?
Pour l'instant je ne parviens qu'à faire apparaître le tableau en un seul bloc, ou à faire apparaître progressivement du texte simple, mais j'aimerais conserver l'affichage sous forme de tableau.
Merci !
 

piga25

XLDnaute Barbatruc
Bonjour,
Un peu comme cela :
VB:
Sub AffichageProgressifDepuisTableau()
    Dim ws As Worksheet
    Dim sourceRange As Range
    Dim destRange As Range
    Dim i As Integer, j As Integer
    Dim delay As Double

    ' Définir la feuille de travail active (ou spécifier une feuille spécifique)
    Set ws = ActiveSheet

    ' Définir la plage source contenant le texte à afficher (A1:J2)
    Set sourceRange = ws.Range("A1:J2")
    
    ' Définir la plage de destination pour l'affichage progressif (par exemple, A5:J6)
    Set destRange = ws.Range("A5:J6")

    ' Temps de délai en secondes
    delay = 1

    ' Parcourir chaque cellule de la plage source et copier le contenu dans la plage de destination
    For i = 1 To sourceRange.Rows.Count
        For j = 1 To sourceRange.Columns.Count
            ' Afficher le contenu de la cellule source dans la cellule de destination correspondante
            destRange.Cells(i, j).Value = sourceRange.Cells(i, j).Value
            
            ' Temporisation pour l'affichage progressif
            Application.Wait (Now + TimeValue("0:00:" & delay))
        Next j
    Next i
End Sub
 

Pièces jointes

  • Affichage progressif.xlsm
    24.6 KB · Affichages: 3

garth_algar

XLDnaute Junior
Je ne l'ai pas reprécisé dans mon message, uniquement dans le titre, mais je suis sur PowerPoint.
Mais oui ce serait un peu l'idée, avec un affichage déclenché manuellement au clic et non automatiquement avec un délai
 

piga25

XLDnaute Barbatruc
Re,
Désolé pas fait attention.
Donc pour powerpoint essayer avec cela:
VB:
Sub AffichageProgressifDansMemeDiapositive()
    Dim ppt As Object
    Dim pres As Object
    Dim slide As Object
    Dim tbl As Object
    Dim i As Integer, j As Integer
    Dim delay As Double

    ' Temps de délai en secondes
    delay = 0.5

    ' Définir l'application PowerPoint et la présentation active
    Set ppt = CreateObject("PowerPoint.Application")
    Set pres = ppt.ActivePresentation

    ' Définir la diapositive contenant le tableau
    Set slide = pres.Slides(1) ' Par exemple, la diapositive 1

    ' Définir le tableau
    Set tbl = slide.Shapes(1).Table ' Assurez-vous que le tableau est le premier shape de la diapositive

    ' Boucle pour afficher progressivement le contenu du tableau
    For i = 1 To tbl.Rows.Count
        For j = 1 To tbl.Columns.Count
            ' Rendre la cellule visible
            tbl.Cell(i, j).Shape.TextFrame.TextRange.Text = tbl.Cell(i, j).Shape.TextFrame.TextRange.Text
           
            ' Temporisation pour l'affichage progressif
            WaitFor delay
        Next j
    Next i
End Sub

Private Sub WaitFor(delay As Double)
    Dim startTime As Double
    startTime = Timer
    Do While Timer < startTime + delay
        DoEvents
    Loop
End Sub

Quelques explications en plus:

Explication du code​

  • Set ppt = CreateObject("PowerPoint.Application") et Set pres = ppt.ActivePresentation: Définit l'application PowerPoint et la présentation active.
  • Set slide = pres.Slides(1): Définit la diapositive contenant le tableau. Modifiez cet indice en fonction de l'emplacement de votre tableau.
  • Set tbl = slide.Shapes(1).Table: Définit le tableau. Assurez-vous que le tableau est le premier shape de la diapositive. Si ce n'est pas le cas, modifiez l'indice 1.
  • tbl.Cell(i, j).Shape.TextFrame.TextRange.Text = tbl.Cell(i, j).Shape.TextFrame.TextRange.Text: Rendu visible le texte de chaque cellule du tableau.
  • WaitFor delay: Ajoute une temporisation pour créer l'effet d'affichage progressif.

Notes​

  • Assurez-vous que le tableau est invisible ou son contenu est masqué au départ, car le code ne fait que révéler le texte qui est déjà présent.
  • Vous pouvez ajuster le délai (delay = 0.5) pour rendre l'affichage plus rapide ou plus lent.
  • La fonction WaitFor est utilisée pour créer une pause entre l'affichage de chaque cellule.
Ce code VBA affiche progressivement le contenu du tableau, cellule par cellule, sur la même diapositive. Vous pouvez personnaliser la logique d'affichage et la plage du tableau selon vos besoins.

EDIT:
Si erreur ici : delay = 0.5
mettre : delay = 0,5 ou 1 (c'est en seconde)
 

piga25

XLDnaute Barbatruc
Re
Déclenchement affichage au clic :
VB:
Dim cellRow As Integer
Dim cellColumn As Integer

Sub InitializeProgressiveDisplay()
    ' Initialize starting cell position
    cellRow = 1
    cellColumn = 1
End Sub

Sub DisplayNextCell()
    Dim ppt As Object
    Dim pres As Object
    Dim slide As Object
    Dim tbl As Object

    ' Définir l'application PowerPoint et la présentation active
    Set ppt = Application
    Set pres = ppt.ActivePresentation

    ' Définir la diapositive contenant le tableau
    Set slide = pres.Slides(1) ' Par exemple, la diapositive 1

    ' Définir le tableau
    Set tbl = slide.Shapes(1).Table ' Assurez-vous que le tableau est le premier shape de la diapositive

    ' Vérifier si nous sommes toujours dans les limites du tableau
    If cellRow <= tbl.Rows.Count And cellColumn <= tbl.Columns.Count Then
        ' Rendre la cellule visible
        tbl.Cell(cellRow, cellColumn).Shape.TextFrame.TextRange.Text = tbl.Cell(cellRow, cellColumn).Shape.TextFrame.TextRange.Text

        ' Avancer à la cellule suivante
        cellColumn = cellColumn + 1
        If cellColumn > tbl.Columns.Count Then
            cellColumn = 1
            cellRow = cellRow + 1
        End If
    End If
End Sub


Explications:
  1. Créer les déclencheurs:
    • Revenez à PowerPoint.
    • Sélectionnez le bouton ou la forme que vous souhaitez utiliser pour déclencher l'affichage progressif.
    • Cliquez avec le bouton droit de la souris et sélectionnez Affecter une macro.
    • Affectez la macro DisplayNextCell à cette forme.
  2. Initialiser la position de départ:
    • Avant de commencer à cliquer sur le bouton pour afficher les cellules, vous devez initialiser la position de départ.
    • Appuyez sur Alt + F8, sélectionnez InitializeProgressiveDisplay et cliquez sur Exécuter.

Explication du code​

  • cellRow et cellColumn : Variables globales pour suivre la position actuelle de la cellule.
  • InitializeProgressiveDisplay : Macro pour initialiser la position de départ.
  • DisplayNextCell : Macro pour afficher progressivement chaque cellule du tableau.
  • tbl.Cell(cellRow, cellColumn).Shape.TextFrame.TextRange.Text = tbl.Cell(cellRow, cellColumn).Shape.TextFrame.TextRange.Text : Révèle le texte de la cellule actuelle.
  • Avancer à la cellule suivante : Les variables cellRow et cellColumn sont mises à jour pour pointer vers la cellule suivante. Si la colonne actuelle dépasse le nombre de colonnes du tableau, la ligne suivante est sélectionnée et la colonne est réinitialisée à 1.

Instructions supplémentaires​

  • Si vous avez besoin d'un déclencheur différent pour réinitialiser la progression ou pour d'autres actions, vous pouvez ajouter d'autres boutons et macros selon vos besoins.
  • Vous pouvez également ajouter une vérification supplémentaire pour gérer les cas où toutes les cellules ont été affichées.
Avec ce code et cette configuration, chaque clic sur le bouton ou la forme avancera l'affichage d'une cellule du tableau dans la même diapositive.
 

Discussions similaires

Réponses
3
Affichages
224
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…