patricktoulon
XLDnaute Barbatruc
Bonjour bonjour
aujourd'hui mon pc c'est levé du mauvais processeur le couillon devant mon l'ecran peu être un peu aussi
j'ai deux soucis
1° ma fonction saveallTo pngfile2 ne repond pas comme il devrait
en effet a la fin je supprime des fichiers et dossier temporaire mais là le dossier reste apparent sur le bureau tant que je ferme pas le fichier
le 2d soucis c'est que même avec application.CopyObjectsWithCells= false ca copie les shapes avec quand même
quelqu'un peut me dire ou je me trompe ?
aujourd'hui mon pc c'est levé du mauvais processeur le couillon devant mon l'ecran peu être un peu aussi
j'ai deux soucis
1° ma fonction saveallTo pngfile2 ne repond pas comme il devrait
en effet a la fin je supprime des fichiers et dossier temporaire mais là le dossier reste apparent sur le bureau tant que je ferme pas le fichier
le 2d soucis c'est que même avec application.CopyObjectsWithCells= false ca copie les shapes avec quand même
VB:
Sub Test_une_shape2()
Dim Chemin$
Chemin = ThisWorkbook.Path & "\mondossier"
Set shap = ActiveSheet.Shapes(2)
SaveAllToPngFile2 shap, Chemin
End Sub
Sub Test_Toutes_Les_Shapes2()
Dim i&, Chemin$
Chemin = ThisWorkbook.Path & "\mondossier"
SaveAllToPngFile2 ActiveSheet.Shapes, Chemin
End Sub
Sub Test_une_Range2()
Dim Chemin$
Chemin = ThisWorkbook.Path & "\mondossier"
Set r = ActiveSheet.Range("A1:f10")
SaveAllToPngFile2 r, Chemin
End Sub
Sub SaveAllToPngFile2(OBJ, Chemin As String)
Dim chemintemp, sh, Img$, Nom$
Application.ScreenUpdating = False
chemintemp = ThisWorkbook.Path & "\temp.htm" 'chemin temporaire du html
If TypeName(OBJ) = "Shape" Then OBJ = Array(OBJ) 'si c'est une shape alors OBJ = un array avec juste la shape
If TypeName(OBJ) = "Range" Then OBJ = Array(OBJ) 'si c'est une range alors OBJ = un array avec juste la range
'si le dossier n'exite pas on le crée
If Dir(Chemin, vbDirectory) = "" Then
MkDir (Chemin)
Else 'sinon on le vide
Kill (Chemin & "\*.*")
End If
Application.CopyObjectsWithCells = False
With Workbooks.Add 'ouvre un new classeur provisoire
For Each sh In OBJ 'boucle sur OBJ
If TypeName(sh) = "Range" Then
Nom = Replace(sh.Address(0, 0), ":", "-")
sh.Copy 'copie de la l'object itéré dans la boucle
Else
Nom = Replace(sh.Name, " ", "_") & ".png"
sh.Copy 'copie de la l'object itéré dans la boucle
End If
ActiveSheet.Pictures.Paste 'colle en tant qu'image dans le new classeur
'publication en html
With .PublishObjects.Add(xlSourceSheet, chemintemp, "Feuil1", "", xlHtmlStatic, "calque", "")
.Publish (True)
.AutoRepublish = False
End With
ActiveSheet.Pictures(1).Delete 'suppression de l'image collée
'récupération du chemin complet de la premiere image png dans le dossier affilié au html
Img = ThisWorkbook.Path & "\temp_fichiers\" & Dir(ThisWorkbook.Path & "\temp_fichiers\" & "*.png")
Name Img As (Chemin & "\" & Replace(Nom, " ", "_") & ".png") 'transfert dans le dossier désigné
Next
.Close False 'fermeture du classeur provisoire
End With
Kill chemintemp 'suppression du fichier html
Kill ThisWorkbook.Path & "\temp_fichiers\*.*" 'vide le dossier affilié au html
RmDir ThisWorkbook.Path & "\temp_fichiers\" 'supprime le dossier affilié au html
Application.CutCopyMode = False
End Sub
quelqu'un peut me dire ou je me trompe ?
Dernière édition: