Excel vers ppt VBA copie coller sans liens

Bonjour le forum,

J'ai trouve ce code qui me permet de copier une selection excel vers une slide ppt.

Dans ce code il existe une fonction qui permet de copier la selection excel sous format HTML ou bien format image normale.

Il existe aussi une fonction qui permet de copier sans ou avec les liens.

je cherche tout simplement a copier ma selection excel sans aucun liens. Ce que je n'arrive pas a faire.

J'ai pourtant passe plusieurs heures, en changeant nombreux parametres, et meme lorsque que je fais un collage au format JPG voire PNG, les liens existent toujours et de fait mes slides changent en fonction d'excel.

Si vous trouvez un moyen de faire fonctionner l'option "RangeLink = False" ca m'aiderait bcp

merci

Sub Copytoppt()

    Dim i
    Dim Current As Worksheet

 Application.ScreenUpdating = False

    Set Current = ActiveSheet

    For i = 1 To ThisWorkbook.Sheets.Count
        Sheets(i).Activate
        ActiveWindow.Zoom = 90
    Next

    Current.Select

Application.ScreenUpdating = True

'Requires a reference to the Microsoft PowerPoint Library via the Tools - Reference menu in the VBE
Dim XLApp As Excel.Application
Dim ppApp As PowerPoint.Application
Dim ppSlide As PowerPoint.slide
Dim PPPres As PowerPoint.Presentation

Dim SheetName As String
Dim TestRange As Range
Dim TestSheet As Worksheet
Dim TestChart As ChartObject

Dim PasteChart As Boolean
Dim PasteChartLink As Boolean
Dim ChartNumber As Long

Dim PasteRange As Boolean
Dim RangePasteType As String
Dim RangeName As String
Dim AddSlidesToEnd As Boolean

'Parameters

'SheetName - name of sheet in Excel that contains the range or chart to copy

'PasteChart -If True then routine will copy and paste a chart
'PasteChartLink -If True then Routine will paste chart with Link; if = False then paste chart no link
'ChartNumber -Chart Object Number
'
'PasteRange - If True then Routine will copy and Paste a range
'RangePasteType - Paste as Picture linked or unlinked, "HTML" or "Picture". See routine below for exact values
'RangeName - Address or name of range to copy; "B3:G9" "MyRange"
'AddSlidesToEnd - If True then appednd slides to end of presentation and paste. If False then paste on current slide.

'use active sheet. This can be a direct sheet name
SheetName = ActiveSheet.Name

'Setting PasteRange to True means that Chart Option will not be used
PasteRange = True
RangeName = "A1:AC43"
RangePasteType = "Picture"
RangeLink = True

PasteChart = True
PasteChartLink = False
ChartNumber = 1

AddSlidesToEnd = True

'Error testing
On Error Resume Next
Set TestSheet = Sheets(SheetName)
Set TestRange = Sheets(SheetName).Range(RangeName)
Set TestChart = Sheets(SheetName).ChartObjects(ChartNumber)
On Error GoTo 0

If TestSheet Is Nothing Then
MsgBox "Sheet " & SheetName & " does not exist. Macro will exit", vbCritical
Exit Sub
End If

If PasteRange And TestRange Is Nothing Then
MsgBox "Range " & RangeName & " does not exist. Macro will exit", vbCritical
Exit Sub
End If

If PasteRange = False And PasteChart And TestChart Is Nothing Then
MsgBox "Chart " & ChartNumber & " does not exist. Macro will exit", vbCritical
Exit Sub
End If

'Look for existing instance
On Error Resume Next
Set ppApp = GetObject(, "PowerPoint.Application")
On Error GoTo 0

'Create new instance if no instance exists
If ppApp Is Nothing Then Set ppApp = New PowerPoint.Application
'Add a presentation if none exists
If ppApp.Presentations.Count = 0 Then ppApp.Presentations.Add

'Make the instance visible
ppApp.Visible = True

'Check that a slide exits, if it doesn't add 1 slide. Else use the last slide for the paste operation
If ppApp.ActivePresentation.Slides.Count = 0 Then
Set ppSlide = ppApp.ActivePresentation.Slides.Add(1, ppLayoutBlank)
Else
If AddSlidesToEnd Then
'Appends slides to end of presentation and makes last slide active
ppApp.ActivePresentation.Slides.Add ppApp.ActivePresentation.Slides.Count + 1, ppLayoutBlank
ppApp.ActiveWindow.View.GotoSlide ppApp.ActivePresentation.Slides.Count
Set ppSlide = ppApp.ActivePresentation.Slides(ppApp.ActivePresentation.Slides.Count)
Else
'Sets current slide to active slide
Set ppSlide = ppApp.ActiveWindow.View.slide
End If
End If

'Options for Copy & Paste Ranges and Charts
If PasteRange = True Then
'Options for Copy & Paste Ranges
If RangePasteType = "Picture" Then
'Paste Range as Picture
Worksheets(SheetName).Range(RangeName).Copy
ppSlide.Shapes.PasteSpecial(ppPasteDefault, Link:=RangeLink).Select
Else
'Paste Range as HTML
Worksheets(SheetName).Range(RangeName).Copy
ppSlide.Shapes.PasteSpecial(ppPasteHTML, Link:=RangeLink).Select
End If
Else
'Options for Copy and Paste Charts
Worksheets(SheetName).Activate
ActiveSheet.ChartObjects(ChartNumber).Select
If PasteChartLink = True Then
'Copy & Paste Chart Linked
ActiveChart.ChartArea.Copy
ppSlide.Shapes.PasteSpecial(Link:=True).Select
Else
'Copy & Paste Chart Not Linked
ActiveChart.CopyPicture Appearance:=xlScreen, Size:=xlScreen, Format:=xlPicture
ppSlide.Shapes.Paste.Select
End If
End If

'Center pasted object in the slide

ppApp.ActiveWindow.Selection.ShapeRange.Width = 715
ppApp.ActiveWindow.Selection.ShapeRange.Top = 85
ppApp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
'ppApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True

AppActivate ("Microsoft PowerPoint")
Set ppSlide = Nothing
Set PPPres = Nothing
Set ppApp = Nothing
Set XLApp = Nothing

    Dim wSheet          As Worksheet
    Dim pwd             As String

    pwd = "pwd"
    For Each wSheet In Worksheets
        wSheet.Protect Password:=pwd
    Next wSheet

End Sub

Bonsoir

je découvre ton problème et te fait part de ma pratique manuelle :

  • excel sélection puis copier
  • ppp collage spécial image métafichier amélioré

En enregistrant cette démarche tu devrais obtenir un code sans link...

A toutes fins utiles

Cordialement

FINDRH

merci

Rechercher des sujets similaires à "ppt vba copie coller liens"