Variable TextBox dans un autre module

Bonjour le Forum,

J'ai un UserForm qui permet à l'utilisateur de choisir les paramètres d'impression avant de lancer la macro Impression.

Parmis ces paramètres, il y a le Zoom qui peut être saisie par un TextBox

Cependant, quand la macro Impression est lancer (avec la commande Valider de l'UserFrom), j'ai une erreur d'exécution '1004' : Impossible de définir la propriété Zoom de la classe PageSetup avec cette ligne de code surligné :

With ActiveSheet.PageSetup
        .Zoom = useparamètre.TextBox_Zoom.Value

Ce que je ne comprend pas, c'est que si je modifie la valeur de mon Zoom directement dans mon code, sa fonctionne parfaitement. Par exemple :

With ActiveSheet.PageSetup
        .Zoom = 70 'Sa fonctionne parfaitement

Auriez-vous une idée pour que le Zoom prenne la valeur saisie dans mon TextBox_Zoom ?

Merci d'avance pour votre aide

17classeur1.xlsm (27.13 Ko)

Bonjour Juice,

Le problème doit se situer au niveau de ton userform, il faut activer la feuille après avoir validé la valeur de zoom.

Il faut faire la relation entre le userform et la feuille

Un exemple ci-joint..

21test-zoom.xlsm (24.26 Ko)

A tester:

Private Sub CommandButton2_Click()

If TextBox_Zoom.Value = "" Then
Taille = 100
Else
Taille = TextBox_Zoom.Value
End If

Sheets("Feuil1").Activate
Call Impression_Excel

End Sub

Cordialement,

Bonjour Juice, Xorsankukai, bonjour le forum,

Deux choses :

• Une variable publique doit être déclarée dans un module standard. Tu as déclaré deux fois la variable Taille. Supprime la déclaration dans l'userForm... (au passage, évite les accents sur le nom des UserForm)..

• une TextBox renvoie une valeur de type String, qui ne correspond pas pour le zoom, dans l'UserForm remplace :

Taille = TextBox_Zoom.Value

par :

Taille = CSng(TextBox_Zoom.Value)

Dans la procédure remplace :

.Zoom = useparamètre.TextBox_Zoom.Value

par :

.Zoom = Taille

Sinon ça sert à rien de créer une variable...

Bonjour ThauThème, Bonjour Xorsankukai,

Merci à tout les deux pour vos retours et pour votre aide

@ThauThème

J'ai mis mon fichier à jour en suivant tes instructions, je lance mon UserForm et met 30% dans mon TextBox_Zoom et lorsque je lance l'impression : Miracle! Mes fichiers ressortent tous avec un Zoom à 30%

Mon erreur a été de ne pas connaître l'existence des CSng !

Non seulement sa m'a permis de mettre le Zoom que je souhaite sur mes impressions, mais sa m'a aussi permis de choisir le Format (Paysage ou Portrait) que je souhaite grâce à CStr(xlLandscape) ou CStr(xlPortrait) !

Merci pour ton aide et pour m'avoir appris l'existence des CS xD

Si des gens rencontrent également ce problème (utilisation d'une variable d'un UserForm vers un module) je vous conseil de suivre les instructions de ThauThème et de trouver le "type de conversion Function" qui correspond à votre cas ici : https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/functions/type-conversion-functions

Je me permet de rouvrir mon sujet car en faite le problème n'est pas totalement réglé

La solution apportée par ThauThème permet d'avoir la mise en page sélectionné dans mon UserForm mais seulement pour la première impression et non pas les suivantes.

Je vous remet mon fichier si vous savez comment réglé ce problème

Je regarde de mon côté aussi !

Bonjour le fil,

Attention, le problème des variables publiques c'est qu'il faut les réinitialiser... Peut-être en rajoutant dans l'userForm :

Private Sub UserForm_Initialize()
Taille = 100
Format = CStr(xlPortrait)
End Sub

ThauTheme,

Merci pour ton retour rapide.

J'ai saisie le code que tu me propose dans mon UserFrom et testé mon impression sur deux fichier Excel à la fois mais j'ai toujours ce problème :

Le premier à la mise en forme saisie dans mon UserForm, le second à la mise en forme basique.

Bonjour le Forum, ThauThème,

Après avoir effectué une batterie de test, j'en conclu que ce ne sont pas les variables qui posent problèmes.

En effet, si je modifie cette partie de ma procédure :

    With ActiveSheet.PageSetup
        .Orientation = Format
        .Zoom = Taille
    End With
    

par :

    ActiveSheet.PageSetup.Orientation = xlLandscape
    ActiveSheet.PageSetup.Zoom = 30
    

J'ai bien ma première impression en paysage et zoom 30% et la seconde ne prend pas en compte ces constantes et s'imprime en portrait et zoom 100%

Les variables Format et Taille n'est donc pas ce qui me posent problèmes mais je ne vois toujours pas comment solutionner cela...

Re,

Heu... Moi non plus...

Re,

Finalement après une nouvelle série de test "bête et méchante", j'ai fini par trouver ce qui était la cause du problème :

Application.PrintCommunication = False

Je ne comprend pas pourquoi, mais après avoir supprimé cette ligne de ma procédure et relancer une impression, mes deux fichiers se sont imprimées avec les paramétrages indiquées dans mon UserForm!

Merci ThauThème pour ton suivie et pour ton aide

Rechercher des sujets similaires à "variable textbox module"