timcourbet
Messages postés6Date d'inscriptionjeudi 1 décembre 2005StatutMembreDernière intervention 9 février 2006
-
8 déc. 2005 à 15:36
timcourbet
Messages postés6Date d'inscriptionjeudi 1 décembre 2005StatutMembreDernière intervention 9 février 2006
-
12 déc. 2005 à 11:27
Voila mon pb :
Je crée un fichier excel qui va recevoir des données et une image. Pour insérer l'image, j'utilise la fonction suivante :
Sub InsertPictureInRange(PictureFileName As String, TargetCells As String)
' inserts a picture and resizes it to fit the TargetCells range
Dim p As Object, t As Double, l As Double, w As Double, h As Double
If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
If Dir(PictureFileName) = "" Then Exit Sub
' import picture
Set p = ActiveSheet.Pictures.Insert(PictureFileName)
' determine positions
With Range(TargetCells)
t = .Top
l = .Left
w = .Offset(0, .Columns.Count).Left - .Left
h = .Offset(.Rows.Count, 0).Top - .Top
End With
' position picture
With p
.Top = t
.Left = l
.Width = w
.Height = h
End With
Set p = Nothing
End Sub
Le prog principal fait ceci :
Dim Excel_Application As Excel.Application
Dim Classeur As Excel.Workbook
Dim Feuil1 As Excel.Worksheet
Dim ligne As Integer
Dim i As Integer
Dim Image As String
Dim Plage As String
Dim EspaceEntreArticles As Integer
Set Excel_Application = CreateObject("Excel.Application")
Set Classeur = Excel_Application.Workbooks.Add
Set Feuil1 = Classeur.Worksheets(1)
EspaceEntreArticles = 20
ligne = 1
Excel_Application.Visible = True
For ligne = 0 To (UBound(Tableau, 2) - 1) * EspaceEntreArticles Step EspaceEntreArticles
Feuil1.Cells(ligne + 1, 1).Value = Tableau(0, ligne / EspaceEntreArticles)
Feuil1.Cells(ligne + 1, 2).Value = Tableau(1, ligne / EspaceEntreArticles)
Feuil1.Cells(ligne + 1, 3).Value = Tableau(2, ligne / EspaceEntreArticles)
Feuil1.Cells(ligne + 1, 4).Value = Tableau(3, ligne / EspaceEntreArticles)
Feuil1.Cells(ligne + 1, 5).Value = Tableau(4, ligne / EspaceEntreArticles)
Image = Tableau(5, ligne / EspaceEntreArticles)
Plage = "F" & ligne + 1 & ":J" & ligne + EspaceEntreArticles
Call InsertPictureInRange(Image, Plage)
DoEvents
Next
Excel_Application.Application.Quit
Set Feuil1 = Nothing
Set Classeur = Nothing
Set Excel_Application = Nothing
Voila mon problème : quand je lance le traitement une première fois,
tout se passe bien sauf que l'appli excel reste ouverte (seulement
quand j'appelle la fonction InsertPictureInRange), ce qui fait que
quand je lance le traitement une 2ème fois, le ActiveSheet pointe sur
ma première application Excel. De ce fait, les images sont insérées
dans le 1er classeur au lieu du 2ème.
Si quelqu'un savait comment fermer la 1ère appli Excel pour que la création de la 2ème instance d'excel se déroule correctement.
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 8 déc. 2005 à 23:45
Lut,
Deux modifs à faire
Excel_Application.Quit
Set Feuil1 = Nothing
Set Classeur = Nothing
Set Excel_Application = Nothing
Il te sera peut-être necéssaire de sauvegarder ton classeur !!
Cordialement, Jean-Paul
______________________________________________________________________