XL 2010 VBA-Enregistrement UserForm

antilus

XLDnaute Nouveau
Bonjour le forum,

Après plusieurs jours à chercher une solution, je n'ai jamais réussi à résoudre mon problème.

Je dispose d'un UserForm que je veux partager avec plusieurs personnes sur un serveur. J'ai réussi à l'enregistrer sous format pdf grâce à Print.Form.
Le problème est que je souhaites que le fichier soit automatiquement enregistrer dans un dossier sur le serveur et qu'il soit nommer automatiquement par la occasion.

Pouvez-vous m'aidez??

Merci beaucoup!
 

Dudu2

XLDnaute Barbatruc
Bonjour,
Ne suffit-il pas d'exporter le UserForm ce qui donne lieu à la création de 2 fichiers (.frm & .frx) qu'o peut ré-importer dans un autre projet ?

1625732423673.png
 

patricktoulon

XLDnaute Barbatruc
Bonjour
et bien essaie un chrdir(chemin de ton dossier sur serveur ) avant ton print form (j'ai pas testé)
sinon tu fait tout de suite après un copyfile vers ton dossier serveur et kill celui que l'imprimante a fait sur ton bureau ou là ou elle l'a mis
MAIS !!!!!!!
des imprimantes virtuelles PDF il y a des tas chacune a ses paramètres et de plus chacun sur son pc l'a peut être paramétré différemment donc cette idée est la moins bonne

par contre une solution plus sure serait !!!

ça consiste a faire un cliché de l'userform et colle l'image dans une feuille et tu sauve l'image de la feuille avec l'export d'un graph et là c'est toi qui choisi le chemin
kill l'image et le graphe en fin d'opération

tu trouvera cela moult fois sur ce forum et même ailleurs
;)
 

patricktoulon

XLDnaute Barbatruc
tiens un exemple que j'ai récupérer dans mes archive
j'ai adapté les apis sans déclaration comme ça avec office 32/64 ce sera bon
j'ai mis un bouton dans mon userform et ...
VB:
Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
    Dim Wsh As Object, z&, a&, chemin$
    chemin = Environ("userprofile") & "\Desktop\" & Environ("username") & "-" & Me.Name & ".gif"
    
    'vidage du clipboard
    With CreateObject("htmlfile").parentwindow.clipboardData.clearData("Text"): End With

    Application.SendKeys "(%{1068})"    'touche impression ecran

    'gestion d'attente pour laisser le cliboard digérer l'image de la capture
    Do While z = 0    'utilisation des api sans declaration (compatible tout windows et office
        z = ExecuteExcel4Macro("CALL(""user32"",""IsClipboardFormatAvailable"",""JJC""," & 2 & ")")    '2 pour bitmap,14 pour wmf
    DoEvents
    Loop

    With ActiveSheet.ChartObjects.Add(0, 0, Me.Width, Me.Height)    'creation graphique,paste,export,delete
        .Chart.Paste: .Chart.Export chemin, "GIF": .Delete
    End With

    'controle et le cas echéant remise en route de la touche numlock
    a = Excel.ExecuteExcel4Macro("CALL(""user32"", ""GetKeyState"", ""JJ"", " & &H90 & ")")
    If a <> 0 Then
        Set Wsh = CreateObject("wscript.shell")
        Wsh.SendKeys "{NUMLOCK}", True     ' si le pavénumerique est désactivé on le réactive
    End If

    MsgBox "L USERFORM : " & Me.Name & " a été  capturé sous:" & vbCrLf & chemin
End Sub
l'userform sera enregistrer en GIF et avec le nom de l'utilisateur qui l'aura fait
libre a toi d'adapter le chemin et le nom

on passe même plus par pdf
 

patricktoulon

XLDnaute Barbatruc
sinon essaie avec ça en pdf

j'ai mis un 2d bouton dans l'userform pour pdf
VB:
Private Sub CommandButton2_Click()
 Dim Wsh As Object, z&, a&, chemin$
    chemin = Environ("userprofile") & "\Desktop\" & Environ("username") & "-" & Me.Name & ".pdf"
    Application.ScreenUpdating = False
    'vidage du clipboard
    With CreateObject("htmlfile").parentwindow.clipboardData.clearData("Text"): End With
    Application.SendKeys "(%{1068})"    'touche impression ecran
    'gestion d'attente pour laisser le cliboard digérer l'image de la capture
    Do While z = 0    'utilisation des api sans declaration (compatible tout windows et office
        z = ExecuteExcel4Macro("CALL(""user32"",""IsClipboardFormatAvailable"",""JJC""," & 2 & ")")    '2 pour bitmap,14 pour wmf
    DoEvents
    Loop
   
    With Workbooks.Add
        ActiveSheet.Paste
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                                        chemin, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        Application.DisplayAlerts = False
        .Close
    End With
 'controle et le cas echéant remise en route de la touche numlock
    a = Excel.ExecuteExcel4Macro("CALL(""user32"", ""GetKeyState"", ""JJ"", " & &H90 & ")")
    If a <> 0 Then
        Set Wsh = CreateObject("wscript.shell")
        Wsh.SendKeys "{NUMLOCK}", True     ' si le pavénumerique est désactivé on le réactive
    End If

    MsgBox "L USERFORM : " & Me.Name & " a été  capturé sous:" & vbCrLf & chemin
End Sub
 

Noleleda

XLDnaute Nouveau
sinon essaie avec ça en pdf

j'ai mis un 2d bouton dans l'userform pour pdf
VB:
Private Sub CommandButton2_Click()
 Dim Wsh As Object, z&, a&, chemin$
    chemin = Environ("userprofile") & "\Desktop\" & Environ("username") & "-" & Me.Name & ".pdf"
    Application.ScreenUpdating = False
    'vidage du clipboard
    With CreateObject("htmlfile").parentwindow.clipboardData.clearData("Text"): End With
    Application.SendKeys "(%{1068})"    'touche impression ecran
    'gestion d'attente pour laisser le cliboard digérer l'image de la capture
    Do While z = 0    'utilisation des api sans declaration (compatible tout windows et office
        z = ExecuteExcel4Macro("CALL(""user32"",""IsClipboardFormatAvailable"",""JJC""," & 2 & ")")    '2 pour bitmap,14 pour wmf
    DoEvents
    Loop
 
    With Workbooks.Add
        ActiveSheet.Paste
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                                        chemin, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        Application.DisplayAlerts = False
        .Close
    End With
 'controle et le cas echéant remise en route de la touche numlock
    a = Excel.ExecuteExcel4Macro("CALL(""user32"", ""GetKeyState"", ""JJ"", " & &H90 & ")")
    If a <> 0 Then
        Set Wsh = CreateObject("wscript.shell")
        Wsh.SendKeys "{NUMLOCK}", True     ' si le pavénumerique est désactivé on le réactive
    End If

    MsgBox "L USERFORM : " & Me.Name & " a été  capturé sous:" & vbCrLf & chemin
End Sub
Bonjour,

Il y a t'il possibilité que la capture s'ajuste a mon userform?

Quand je copie le code au complet, j'ai une erreur ici(voir ci-dessous), mais, l'image est parfaite et s'ouvre dans un classeur neuf :
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
chemin, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Quand je modifie :

Environ("userprofile") & "\Desktop\" & Environ("username") & "-" & Me.Name & ".pdf"

pour:

Environ("\Desktop\") & Environ("username") & "-" & Me.Name & ".pdf"

Il enregistre un pdf , mais le format coupe mon userform sur 2 pages.

Merci!
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 103
Messages
2 077 056
Membres
242 013
dernier inscrit
jhe38