IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Impression Frame d'un UserForm


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Par défaut Impression Frame d'un UserForm
    Bonjour à tous,

    Je crois que le titre dis tout: je souhaiterais imprimer seulement la frame de mon userrform et non le userform complet.

    J'ai essayé de bidouiller mes codes en long, large et travers avec toujours le même résultats, une erreur.

    Pouvez vous m'aider?

    En vous remerciant par avance.

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Je ne pense pas que ce soit possible, du moins sans fabriquer une usine à gaz.

    Une solution éventuelle serait de rendre tous les autres contrôles invisibles et d'ensuite imprimer le Userform avec uniquement la Frame visible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub test()
    Dim Ctrl As Control, x As Integer
     
    'noms du Userform (Userform1) et de la Frame (Frame2) à adapter
     
    With UserForm1
     
        'rendre tous les contrôle du Userform1 invisibles
        For Each Ctrl In .Controls
            Ctrl.Visible = False
        Next
     
        'rendre la Frame2 visible
        .Frame2.Visible = True
     
        'rendre tous les contrôles de la Frame2 visibles
        For x = 0 To .Frame2.Controls.Count - 1
            .Frame2.Controls.Item(x).Visible = True
        Next
     
        'imprimer le Userform1
        .printform
     
    End With
     
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Par défaut sdispro
    Merci de ta réponse Fring,

    j'ai déjà effectué cette méthode mais l'impression du userform avec uniquement la frame en masquant les autres objets mais cela n'est pas très propre.

    Encore merci pour ta réponse

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    je n'en suis pas sur mais je pense que c'est possible

    une solution serait d'utiliser les api windows et gdiplus ou gdi

    en début de code déclarer les api
    gdi
    findwindows pour le handle
    getwindowa et setwindowa pour l'afichage

    dans un premier temps

    1 on declare les variable handle, rect,
    2 on cherche le handle avec findwindoa
    3 on créé le rectangle avec gdi sur la base du frame
    4 et on affiche l'userform sur la base du frame avec setwindowa......par son handle

    je pense que tu devrais trouver ton bonheur dans la faq et les anciennes discutions

    le seul doute que je peut avoir c'est la capture du userform si il n'a pas sa caption je n'ai jamais essayer ca
    je vais essayer de te faire un exemple
    je viens de faire l'essai comme ca :
    ca decoupe bien le userform mais a l'impression le userform est complet sans la caption c'est bien ce que je pensais
    code dans le userform sur un bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton2_Click()
    impression_frame Me, Frame1
    End Sub
    et dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    '// Régions rectangulaires :
    Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
    '// Fonction permettant de determiner le handle
    Declare Function fwa Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    '// Fonction permettant d'appliquer les régions sur une form :
    Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
     
    Type POINTAPI
        X As Long
        Y As Long
    End Type
     
    Sub impression_frame(usf As Object, laframe As Object)
    usf.Hide
    usf.Show 0
    handle = fwa(vbNullString, usf.Caption) 'on trouve le handle
    'on coupe tout ce qui est autour de la frame1
    partie_a_imprimer = CreateRectRgn(laframe.Left * 4 / 3, (laframe.Top + 20) * 4 / 3, (laframe.Left + laframe.Width) * 4 / 3, (laframe.Top + 20 + laframe.Height) * 4 / 3)
    'maintenant que le rectangle representant la frame est determiné on affiche le userform sur cette base ce qui a
    'pour effet d'afficher que la frame
    SetWindowRgn handle, partie_a_imprimer, False
     
    'ici ta macro pour imprimer ton userfom
     'comme ceci par exemple
     usf.PrintForm
     
     
    End Sub
    je pense que de cette maniere il faut crééer un hdc de facon a ne prendre en compte juste la frame


    maintenant il y a peut etre une autre maniere beaucoup plus simple

    le procédé serait le suivant

    1 comme fring rendre les controls invisible sauf ceux de la frame
    2 decalé la frame a 0 de left et 0 de top(en haut a gauche)
    3 redimentionner le userform a la dimention de la frame
    4 supprimer la caption
    5 imprimer
    6 tout remetre a l'initial
    ainsi la partie qui serait imprimer aurais les meme dimension que la frame (economie imprimante couleur,temp etc...)

    je vais essayer de faire un truc dans le genre

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Par défaut Sdispro
    salut Patrick,

    J'ai une solution (plutôt) du bricolage,

    J'ai fait une macro windows liée à Excel qui me permet de faire un print ecran et de lancer la capture d'image à un moment précis.

    Cela n'es plus du Excel et ne répond pas à mes éxigences et ne s'adaptera à aucun poste car il s'agit d'une réelle usine à Gaz.

    Je te remerci pour ton retour et reste très attentif à ton "truc dans le genre".

    A bientôt

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    rebonjour

    voila celon mon idée une macro generique dans un module standard
    et l'apel a cette macro dans un bouton de l'userfom ou tu veux

    code dans le module userfom

    code du bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton2_Click()
    impression_frames Me, frame1  ' a adapter le nom de ta frame
    End Sub
    et dans un module standard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Option Explicit
    Declare Function fwa Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Dim handle As Long, topframe As Long, leftframe As Long, heightme As Long, widthme As Long, X As Long
    Dim ctrl As Object
    Sub impression_frames(usf As Object, laframe As Object)
    ' ici on reprend l'idée de fring(invisibilité de tout les controls)
        With usf
            'rendre tous les contrôle du Userform1 invisibles
            For Each ctrl In .Controls
                ctrl.Visible = False
            Next
     
            'rendre la Frame2 visible
            .Controls(laframe.Name).Visible = True
            'rendre tous les contrôles de la Frame2 visibles
            For X = 0 To .Controls(laframe.Name).Controls.Count - 1
                .Controls(laframe.Name).Controls.Item(X).Visible = True
            Next
        End With
        'on memorise la taille initial du userform
        heightme = usf.Height
        widthme = usf.Width
        'on memorise la position initiale  de la frame
        topframe = usf.Controls(laframe.Name).Top
        leftframe = usf.Controls(laframe.Name).Left
        'on trouve le handle
        handle = fwa(vbNullString, usf.Caption)
        'on suprime la caption du userform
        SetWindowLong handle, -16, GetWindowLong(handle, -16) And Not &HC00000                                              '*
        'on deplace la frame a gauche et en haut
        usf.Controls(laframe.Name).Top = 0
        usf.Controls(laframe.Name).Left = 0
        'on aplique les dimentions de la frame a lcelle de l'userfom
        usf.Height = usf.Controls(laframe.Name).Height + 5
        usf.Width = usf.Controls(laframe.Name).Width + 5
        'on imprime l'userform
        usf.printform
     
     
        'on remet tout a l'initial
        SetWindowLong handle, -16, GetWindowLong(handle, -16) Or &HC00000                                              '*
        usf.Height = heightme
        usf.Width = widthme
        usf.Controls(laframe.Name).Top = topframe
        usf.Controls(laframe.Name).Left = leftframe
        For Each ctrl In usf.Controls
            ctrl.Visible = True
        Next
     
    End Sub
    et voila maintenant tu n'aura que la frame et ses controls d'imprimé

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Par défaut SDISPRO
    Un grand merci car c'est bien cela.
    Je suis fier de t'avoir ajouter ton 2152ème point.
    Juste petit point mais pas important, ma frame s'étend sur 2 pages d'impression mais seulement une s'imprime.
    Une idée?

    En tout cas, merci pour la réponse et a réactivité.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    re
    c'est assez etonnant qu'une seul page s'imprime si le document en prend plusieurs

    ce fichier est il deja regler pour l'impression d'un sheets ou je ne sais quoi?

    si c'est le cas il va te falloir faire une seconde macro pour relgler la mise en page

    si ca n'est pas le cas essai directement de régler la mise en page en landscape(paysage)en diminuant le pourcentage de la taille

    peu etre cela suffira t _il


    je regarde ca bien que ca m'est difficile je n'ais pas ton fichier


    si on n'y arrive pas comme ca il va faloir utiliser une astuces

    mais d'abord essai la mise en page


    au plaisir

    tout d'abord je te conseil si tu veux avoir plus d'aide de recliquer sur résolu pour remetre le sujet a nouveau en attente de reponses

    je viens d'essayer la mises en page mais ca ne fonctionne pas
    meme la mise au format landscape ne fonctionne pas

    alors on va passer directement a l'astuce


    maintenant donne moi les dimensions de ta frames qui se trouve dans ton usf
    je me debrouille pour le reste


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Par défaut sdispro
    Re Patrick,

    Je n'ai pas de taille prédifinie puisque c'est en fonction des données crée ou graphique que ma frame se crée.

    Concretement cela me fait 2 pages de base en 21*29.7.

    Je me base dessus car je ne peux réduire mes données à l'userform pour rentrer sur une seule page.

    J'ai un scrollbar, peut etre cela vient de là...

    Je regarde de mon côté également.

    Te casse pas trop la tête, tu m'as déjà trouvé la grande solution.

    Encore merci pour tes réponses Patrick

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    mais je ne me casse pas du tout la tète au contraire ça me fait travailler

    pour ton problème des deux page j'ai la solution

    comme en largeur horizontale tu peut aller jusqu'à 20.5 cm soit 750 en unité excel pour ta frame

    quoi qu'elle face comme dimension il faut la réduire a ça

    donc le principe

    la largeur de ta frame / 750= le_bon_chiffre
    donc largeurframe/lebonchiffre
    hauteurframe/ par lebonchifre
    adaptation des control de la meme maniere
    reduction de l'userform a la frame comme avant
    suppression de la caption
    impression
    remise a l'initial
    si tu est d'accord on fait ça

    ok

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Par défaut SDISPRO
    Salut Patrick,

    J'ai pas bien compris ton astuce.
    J'ai adapter mon impression en 2 frames mais ta méthode m'éviterai bien du bricolage.

    Donc si je peux t'aider en te faisant travailler c'est avec plaisir de t'offrir mon aide

    Au plaisir

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    merci pour ton aide

    alors l'astuce serait de reduire au minimum de 750 horizontalement

    en divisant la largeur actuel au moment ou tu envoie la macropar 750
    on obtiendrait donc le diviseur pour arriver de la largeur actuel vers 750

    ce diviseur serait apliqué aussi a la hauteur de facon a garder un aspect ratio
    proportoné

    ensuite on applique le reste de la meme maniere que la methode precedante precedant

    a tu compris cette fois ci ?????

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    bon voila un exemple pour reduire ,l'imprimer et remettre a l'initial

    tu n'a qu'a mettre ce nouveau code a la place de l'autre dans le module standard

    tu peut modifier le "650" si ca ne suffit pas pour toi


    voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    Option Explicit
    Declare Function fwa Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Dim handle As Long, topframe As Long, leftframe As Long, heightme As Long, widthme As Long, X As Long
    Dim largeframe As Long, hautframe As Long
    Dim diviseur
    Dim ctrl As Object
     
    Sub impression_frames(usf As Object, laframe As Object)
     'on memorise la taille initial du userform
        heightme = usf.Height
        widthme = usf.Width
     
       'on memorise la position initiale  de la frame
        topframe = usf.Controls(laframe.Name).Top
        leftframe = usf.Controls(laframe.Name).Left
       largeframe = usf.Controls(laframe.Name).Width
       hautframe = usf.Controls(laframe.Name).Height
     
     
     
     
      ' ici on reprend l'idée de fring(invisibilité de tout les controls)
        With usf
            'rendre tous les contrôle du Userform1 invisibles
            For Each ctrl In .Controls
     
     
               If ctrl.Name <> "frame1" Then
               If ctrl.Parent.Name = usf.Name Then ctrl.Visible = False
     
               Else
               ctrl.Visible = True
               End If
     
     
            Next
     
     
    usf.Frame1.Visible = True
        End With
         'on trouve le handle
        handle = fwa(vbNullString, usf.Caption)
        'on suprime la caption du userform
        SetWindowLong handle, -16, GetWindowLong(handle, -16) And Not &HC00000                                              '*
        'on deplace la frame a gauche et en haut
        usf.Controls(laframe.Name).Move 0, 0, usf.Controls(laframe.Name).Width, usf.Controls(laframe.Name).Height
     
      'ici on reduit au maximum que la page 21,29.7 peut supporter
    diviseur = usf.Controls(laframe.Name).Width / 650
       usf.Controls(laframe.Name).Width = usf.Controls(laframe.Name).Width / diviseur
       usf.Controls(laframe.Name).Height = usf.Controls(laframe.Name).Height / diviseur
     
     'on met les control au proportion de la frame
     For Each ctrl In usf.Controls(laframe.Name).Controls
    ctrl.Move ctrl.Left / diviseur, ctrl.Top / diviseur, ctrl.Width / diviseur, ctrl.Height / diviseur
     On Error Resume Next
     
     ctrl.FontSize = ctrl.FontSize / diviseur
     On Error GoTo 0
     Next
     
     
        'on aplique les dimentions de la frame a lcelle de l'userfom
        usf.Height = usf.Controls(laframe.Name).Height + 4
        usf.Width = usf.Controls(laframe.Name).Width + 4
       usf.Controls("TextBox1").Value = usf.Controls(laframe.Name).Width
      usf.Repaint
     'on imprime l'userform
       usf.printform
     
     
        'on remet tout a l'initial
        SetWindowLong handle, -16, GetWindowLong(handle, -16) Or &HC00000                                              '*
        usf.Height = heightme
        usf.Width = widthme
         usf.Controls(laframe.Name).Move leftframe, topframe, largeframe, hautframe
         'on met les control au proportion de la frame
     For Each ctrl In usf.Controls(laframe.Name).Controls
    ctrl.Move ctrl.Left * diviseur, ctrl.Top * diviseur, ctrl.Width * diviseur, ctrl.Height * diviseur
     On Error Resume Next
     
     ctrl.FontSize = ctrl.FontSize * diviseur
     On Error GoTo 0
     Next
     
        For Each ctrl In usf.Controls
           ctrl.Visible = True
        Next
     
    End Sub
    maintenant si c'est en hauteur que ca ne vapas il faudra trouver le diviseur par le height de la frame / par 700
    enfin si tu n'y arrive pas je le fairais

    allez bon lecture

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  14. #14
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Novembre 2011
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 196
    Par défaut
    Salut Patrick,

    Desolé pour la réponse un peu tardive.

    J'ai mieux compris cette fois si et je me met au travail quand au test de ta proposition.

    Encore merci pour ton aide.

    ps: si j'ai du travail pour toi, je n'hésiterai pas

    Re Patrick,

    le problème reste sur la hateur de ma Frame.

    Il faut donc, trouver le diviseur.

    Il est donc pour moi, un plaisir de te faire travailler.

    En te remerciant encore une fois

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    et oui et oui j'ai refléchi a ton probleme

    en fait il faut partir sur la base de la feuille imprimée soit 21X29.7

    donc ta frame doit faire en largeur (hauteur /1,414285714285714)
    pour avoir les meme proportion q'une feuille 21:29.7

    reste a determiner maintenant les dimention en unité excel en respectant ces proportions

    maintenantcomme la limite largeur est de 650
    et la hauteur de 700 je crois(reste a determiner)

    il suffit de ramener la largeur ou la hauteur a cette limite jusqua que les deux dimension soit egal ou inferieur a cette limite

    et le tour est joué


    j'etudie la question et je reviens

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2018
    Messages : 61
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    bonjour

    et oui et oui j'ai refléchi a ton probleme

    en fait il faut partir sur la base de la feuille imprimée soit 21X29.7

    donc ta frame doit faire en largeur (hauteur /1,414285714285714)
    pour avoir les meme proportion q'une feuille 21:29.7

    reste a determiner maintenant les dimention en unité excel en respectant ces proportions

    maintenantcomme la limite largeur est de 650
    et la hauteur de 700 je crois(reste a determiner)

    il suffit de ramener la largeur ou la hauteur a cette limite jusqua que les deux dimension soit egal ou inferieur a cette limite

    et le tour est joué


    j'etudie la question et je reviens

    au plaisir
    Bonjour rien a voir avec votre discussion mais j'aimerais de l'aide. J e veux imprimer un multipage dans un userform J'ai vue quelques code sur les forums mais ca ne marche pas merci bien!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Navigation entre diverses textbox et frame d'un userform
    Par Naaby dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/06/2011, 19h34
  2. [XL-2003] Impression Multipage d'un UserForm
    Par Lufia dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/10/2009, 16h51
  3. Impression à partir d'un userform
    Par collinchris dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/08/2007, 12h44
  4. Réponses: 1
    Dernier message: 23/04/2007, 22h05
  5. [VBA-E]Impression feuille calcul sans userform
    Par pombela dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/03/2007, 20h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo