[ Résolu ] [excel 2007] copier une image d'un worksheet à un autre
copier une image d'un worksheet à un autre [ Résolu ] [excel 2007] - VB/VBA/VBS - Programmation
Sujets relatifs:
Leave a Replay
Make sure you enter the(*)required information where indicate.HTML code is not allowed
Marsh Posté le 19-02-2010 à 16:22:51
[ Résolu ]
arf...
encore plus drôle...
Si j'inclue l'image en tant que commentaire dans une feuille : il semblerait qu'une bête copie de worksheet fonctionne si je la copie de manière unitaire (je veux dire par là, si je ne fait une procédure qui ne fait que ça dans mon traitement excel).
Par contre la même ligne de copie, incluse dans une boucle qui va ouvrir de nombreux fichier excel et copier la feuille numéro 2, là j'ai le message comme quoi excel ne trouve pas l'image, qu'il manque peut être de mémoire etc...
(une image qui fait 10ko).
là je sèche...
en gros :
si je fais un bouton qui ne lance que cette proc, ça marche :
Public Sub copy_logo_test()
Dim initWkBkCount As Integer
initWkBkCount = Workbooks.Count
If open_workbook(COMtest, True) Then
Workbooks(Workbooks.Count).Worksheets(1).Copy _
After:=Workbooks(initWkBkCount).Worksheets(2)
Workbooks(Workbooks.Count).Close SaveChanges:=False
End If
End Sub
où open_workbook est une fonction qui vérifie que le fichier excel existe et l'ouvre (en ReadOnly ou en RW selon que le 2ème arg est False ou True).
par contre, dans une boucle qui copie toutes les worksheets à partir de la WkSheet numéro AgReportWkShNb
là ça ne copie pas l'image...
(extraits)
For fpaglsCounter = 1 To MaxFullPathAgencyNumber
FullPathAgencyName = FullPathAgenciesList(fpaglsCounter)
If open_workbook(FullPathAgencyName) Then
For wkshCounter = AgReportWkShNb To Workbooks(Workbooks.Count).Worksheets.Count
Workbooks(Workbooks.Count).Worksheets(wkshCounter).Copy _
After:=Workbooks(intCurWkBk).Worksheets(intCurWkSh)
intCurWkSh = intCurWkSh + 1
Next wkshCounter
End If
Next fpaglsCounter
Une idée du pourquoi ????
au cas où je vous livre ma fonction open_workbook....
Public Function open_workbook(InputFile As String, Optional ReadOnly As Boolean) As Boolean
'checks weither workbook exists, then open the named workbook
'in ReadOnly mode by default if no access mode is supplied
'arguments are: workbook_name, (optional access mode's name ReadOnly )
'access_mode may be either False (ReadWrite), or True (ReadOnly)
'if no access_mode is given, RO mode is assumed
Dim Access As Boolean
If IsMissing(ReadOnly) Then
ReadOnly = True
End If
If does_file_exist(InputFile) Then
Workbooks.Open Filename:=InputFile, UpdateLinks:=True, ReadOnly:=ReadOnly
open_workbook = True
Else
open_workbook = False
End If
End Function
Solution :
En fait, au début dans ma fonction open_workbook, le UpdateLinks était à False :
Workbooks.Open Filename:=InputFile, UpdateLinks:=False, ReadOnly:=ReadOnly
et j'ai du faire une modif sans refaire tourner ma proc en mettant l'UpdateLinks à True:
Workbooks.Open Filename:=InputFile, UpdateLinks:=True, ReadOnly:=ReadOnly
et là ça marche !!!
c'est con quand même (mais en même temps logique)....
Ce que je ne m'explique pas c'est que ma fonction a toujours été codé avec l'UpdateLinks à False et pourtant à un moment j'avais partiellement des fichiers avec le logo... peut être que je les ouvrais avec la proc native d'excel (Workbooks.Open etc...) ???
Message édité par blooodydie le 23-02-2010 à 14:24:54
---------------
[Feed back] [Ventes]