Pb avec VB et excel

timcourbet Messages postés 6 Date d'inscription jeudi 1 décembre 2005 Statut Membre Dernière intervention 9 février 2006 - 8 déc. 2005 à 15:36
timcourbet Messages postés 6 Date d'inscription jeudi 1 décembre 2005 Statut Membre Derniè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.



Merci d'avance

2 réponses

valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
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
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
timcourbet Messages postés 6 Date d'inscription jeudi 1 décembre 2005 Statut Membre Dernière intervention 9 février 2006
12 déc. 2005 à 11:27
Quelles modifs ? C'est exactement ce que j'ai mis (sauf le
Excel_Application.Application.quit, mais j'ai déjà essayé sans le
.Application)
0
Rejoignez-nous