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 Subquelqu'un peut me dire ou je me trompe ?
			
				Dernière édition: 
			
		
	
								
								
									
	
		
			
		
		
	
	
	
		
			
		
		
	
								
							
							 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		