OVH Cloud OVH Cloud

Macro-Insertion images

2 réponses
Avatar
André
Bonjour à tous,
Je tente d'écrire une macro qui insère une nouvelle diapositive pour ensuite
insérer une image. Je voudrais être en mesure, lors de l'exécution de la
macro, de sélectionner l'image à insérer. Présentement c'est toujours la
même image qui s'insère, ce qui est comprenable car dans le code VB le chemin
d'accès est statique. Comment puis-je modifer le chemin d'accès d'une fois à
l'autre?
Merci beaucoup...André

2 réponses

Avatar
ClémentMarcotte
Bonjour,

Avec un petit coup d'API

Option Explicit

Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA"
(pOpenfilename As OPENFILENAME) As Long
Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Private Sub OuvrirImage()
'Clément Marcotte
'utilise une partie
'd'un exemple de API Guide
'fait par KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail:

Dim OFName As OPENFILENAME, hwnd, limage As String
OFName.lStructSize = Len(OFName)
' 'Set the parent window
OFName.hwndOwner = hwnd
' 'Set the application's instance
' OFName.hInstance = Application.hInstance
' 'Select a filter
OFName.lpstrFilter = "Images Bitmaps(*.bmp)" + Chr$(0) + "*.bmp" +
Chr$(0) + "Images JPeg (*.JPG)" + Chr$(0) + "*.jpg" + Chr$(0) + "Images Gif
(*.gif)" + Chr$(0) + "*.gif" + Chr$(0) + "Tous les fichiers(*.*)" + Chr$(0)
+ "*.*" + Chr$(0)

'create a buffer for the file
OFName.lpstrFile = Space$(254)
'set the maximum length of a returned file
OFName.nMaxFile = 255
'Create a buffer for the file title
OFName.lpstrFileTitle = Space$(254)
'Set the maximum length of a returned file title
OFName.nMaxFileTitle = 255
'Set the initial directory
OFName.lpstrInitialDir = "C:"
'Set the title
OFName.lpstrTitle = "Sélectionner un fichier"
'No flags
OFName.flags = 0

'Show the 'Open File'-dialog
If GetOpenFileName(OFName) Then
limage = Trim$(Left(OFName.lpstrFile, Len(OFName.lpstrFile) - 1))
MsgBox "L'image suivante sera insérée" & vbNewLine & "sur la
diapositive courante: " & limage

ActiveWindow.Selection.SlideRange.Shapes.AddPicture(FileName:=limage,
LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, Left:9,
Top:=-113).Select
Else
MsgBox "Cancel was pressed"
End If
End Sub

"André" a écrit dans le message de
news:
Bonjour à tous,
Je tente d'écrire une macro qui insère une nouvelle diapositive pour
ensuite

insérer une image. Je voudrais être en mesure, lors de l'exécution de la
macro, de sélectionner l'image à insérer. Présentement c'est toujours la
même image qui s'insère, ce qui est comprenable car dans le code VB le
chemin

d'accès est statique. Comment puis-je modifer le chemin d'accès d'une
fois à

l'autre?
Merci beaucoup...André


Avatar
André
Merci beaucoup.


Bonjour,

Avec un petit coup d'API

Option Explicit

Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA"
(pOpenfilename As OPENFILENAME) As Long
Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Private Sub OuvrirImage()
'Clément Marcotte
'utilise une partie
'd'un exemple de API Guide
'fait par KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail:

Dim OFName As OPENFILENAME, hwnd, limage As String
OFName.lStructSize = Len(OFName)
' 'Set the parent window
OFName.hwndOwner = hwnd
' 'Set the application's instance
' OFName.hInstance = Application.hInstance
' 'Select a filter
OFName.lpstrFilter = "Images Bitmaps(*.bmp)" + Chr$(0) + "*.bmp" +
Chr$(0) + "Images JPeg (*.JPG)" + Chr$(0) + "*.jpg" + Chr$(0) + "Images Gif
(*.gif)" + Chr$(0) + "*.gif" + Chr$(0) + "Tous les fichiers(*.*)" + Chr$(0)
+ "*.*" + Chr$(0)

'create a buffer for the file
OFName.lpstrFile = Space$(254)
'set the maximum length of a returned file
OFName.nMaxFile = 255
'Create a buffer for the file title
OFName.lpstrFileTitle = Space$(254)
'Set the maximum length of a returned file title
OFName.nMaxFileTitle = 255
'Set the initial directory
OFName.lpstrInitialDir = "C:"
'Set the title
OFName.lpstrTitle = "Sélectionner un fichier"
'No flags
OFName.flags = 0

'Show the 'Open File'-dialog
If GetOpenFileName(OFName) Then
limage = Trim$(Left(OFName.lpstrFile, Len(OFName.lpstrFile) - 1))
MsgBox "L'image suivante sera insérée" & vbNewLine & "sur la
diapositive courante: " & limage

ActiveWindow.Selection.SlideRange.Shapes.AddPicture(FileName:=limage,
LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, Left:9,
Top:=-113).Select
Else
MsgBox "Cancel was pressed"
End If
End Sub

"André" a écrit dans le message de
news:
Bonjour à tous,
Je tente d'écrire une macro qui insère une nouvelle diapositive pour
ensuite

insérer une image. Je voudrais être en mesure, lors de l'exécution de la
macro, de sélectionner l'image à insérer. Présentement c'est toujours la
même image qui s'insère, ce qui est comprenable car dans le code VB le
chemin

d'accès est statique. Comment puis-je modifer le chemin d'accès d'une
fois à

l'autre?
Merci beaucoup...André