[ 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

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]
Reply

Marsh Posté le 19-02-2010 à 16:22:51   

Reply

Marsh Posté le 19-02-2010 à 16:43:45    

alors ?
personne ?


---------------
[Feed back] [Ventes]
Reply

Marsh Posté le 22-02-2010 à 16:25:05    

ah merde j'ai effacé le premier post en l'éditant (me suis trompé de bouton c'était répondre que je voulais faire).


Message édité par blooodydie le 22-02-2010 à 16:35:45

---------------
[Feed back] [Ventes]
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed