[VBA] - Exporter des données d'Excel vers un PowerPoint
Bonjour à tous,
Je vous sollicite car j'aimerais automatiser une tâche réccurente avec une macro.
Toutes les semaines, j'aimerais mettre en forme sous forme de matrice 3x3, les composants sensibles de ma société.
Pour ce faire, j'ai d'abord un tableau Excel dans lequel j'ai tous mes composants et en face desquels j'attribue une note au regard de 2 critères : le Rex FNC et le Rex SAV.
Pour le moment je gère ce tableau manuellement et j'espère bien l'automatiser à l'avenir.
Mon souci : Pour présenter ce classement, j'ai pour habitude de classer les composants sous forme matricielle 3x3.
Ainsi, j'ai en abcisse mon Rex SAV avec des notes allant de 1 à 3 et en ordonnée mon Rex FNC allant de 1 à 3 également.
En fonction des notes attribuées sous mon tableur Excel, j'aimerais que les composants viennent automatiquement s'incrémenter dans mon support PowerPoint.
Donc en fonction de leurs notes, les composants doivent aller s'enregistrer dans des cases de ma matrice PowerPoint.
Est-ce possible ?
Voici le début de code que j'ai commencé à rédiger sans succès :
Sub Test()
'nécessite d'activer la référence Microsoft Powerpoint Object Library
Dim PPT As PowerPoint.Application
Dim PptDoc As PowerPoint.Presentation
'Dim NbShpe As Byte
Dim i As Integer
Set PPT = CreateObject("Powerpoint.Application")
PPT.Visible = True 'l'application sera visible
Set PptDoc = PPT.Presentations.Open("V:\VERSION_TEST_Matrice_composants_critiques_2014.pptx")
Set Wbs = Workbooks("VERSION_TEST_Liste_des_composants_critiques_v2.xlsm").Worksheets("COMPO CRITIQ")
With Wbs
For i = 4 To 58
'Si la note FNC est égale à 1 (colonne K) et que la note Rex SAV égale à 3
If .Range("J" & i).Value = 1 And .Range("K" & i).Value = 3 Then
Range("B" & i).Copy
PptDoc.Slides(3).Shapes.PasteSpecial
'K = 3 & J = 2
ElseIf .Range("J" & i).Value = 2 And .Range("K" & i).Value = 3 Then
Range("B" & i).Copy
PptDoc.Slides(3).Shapes.PasteSpecial
'K = 3 & J = 3
ElseIf .Range("J" & i).Value = 3 And .Range("K" & i).Value = 3 Then
Range("B" & i).Copy
PptDoc.Slides(3).Shapes.PasteSpecial
'K = 2 & J = 1
ElseIf .Range("J" & i).Value = 1 And .Range("K" & i).Value = 2 Then
Range("B" & i).Copy
PptDoc.Slides(3).Shapes.PasteSpecial
'K = 2 & J = 2
ElseIf .Range("J" & i).Value = 2 And .Range("K" & i).Value = 2 Then
Range("B" & i).Copy
PptDoc.Slides(3).Shapes.PasteSpecial
'K = 2 & J = 3
ElseIf .Range("J" & i).Value = 2 And .Range("K" & i).Value = 3 Then
Range("B" & i).Copy
PptDoc.Slides(3).Shapes.PasteSpecial
'K = 1 & J = 1
ElseIf .Range("J" & i).Value = 1 And .Range("K" & i).Value = 1 Then
Range("B" & i).Copy
PptDoc.Slides(3).Shapes.PasteSpecial
'K = 1 & J = 2
ElseIf .Range("J" & i).Value = 1 And .Range("K" & i).Value = 2 Then
Range("B" & i).Copy
PptDoc.Slides(3).Shapes.PasteSpecial
'K = 1 & J = 3
ElseIf .Range("J" & i).Value = 1 And .Range("K" & i).Value = 3 Then
Range("B" & i).Copy
PptDoc.Slides(3).Shapes.PasteSpecial
End If
Next i
PptDoc.Save 'sauvegarder les modifications
PptDoc.Close 'fermer le document ppt
PPT.Quit 'fermer l'application powerPoint
End Sub
En PJ, vous trouverez le tableur Excel où j'ai placé ma macro et le support PowerPoint que je souhaite alimenter ...
Cerise sur le gâteau, j'aimerais avant de fermer le PowerPoint, l'enregistrer avec dans le nom la date du jour/mois/année où j'ai réalisé ma macro.
Encore plus fort, est-ce qu'on peut faire un enregistrement automatique semaine par semaine, genre tous les lundis ?
Est ce possible ? "Facile" me diront les experts !
Merci de votre aide !
Je suis également preneur de tous liens renvoyant vers un support de formation aux basiques de PowerPoint en VBA !
Bon aprèm,
Floo73
Bonjour,
Ce que tu demandes est possible ...
Cependant tu devrais te faciliter la vie en préparant dans Excel le format complet de ta slide Powerpoint ...
Pour ce que concerne la sauvegarde dans Powerpoint, les instructions VBA sont les mêmes que pour Excel ...
Bon Courage