Userform comment mémoriser mes choix

didus

XLDnaute Occasionnel
Bonjour au forum et ses spécialistes
plusieurs heures que je suis sur ce sujet, pour donner un choix à l'utilisateur d'imprimer un état
pour 1 ou plusieurs gestionnaire en laissant le choix de l'impression brouillon sans mise en page particulière
ou avec mise en page de qualité,

soit deux choix, et quatre valeurs à mémoriser pour le code...
mes dernières lignes juste pour tester le résultat, la msgbox s'affiche, sans variables, juste le texte,
comprend rien

variables déclarées, impossible de faire debogage pas à pas, j'ai lu et relu des aides pour userform sans résultat, ça devrait et ça doit être simple...
merci de m'aider

userform
upload_2018-12-10_1-51-54.png


code
Private Sub choix_tous_Click()
If TypeOf Ctrl Is MSForms.OptionButton Then
If Ctrl.Value = True Then
utilisateur = "tous"
End If
End If
End Sub

Private Sub choix_unseul_Click()
utilisateur = "un seul"
End Sub

Private Sub imp_full_Click()
qualite = "full"
End Sub

Private Sub imp_light_Click()
qualité = "light"
End Sub

Private Sub lancer_imp_Click()
MsgBox ("vous avez choisi" & vbCrLf & "une qualité " & qualite & vbCrLf & "pour " & utilisateur & " utilisateur (s)")

End Sub
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Mais avez vous déclaré dans une instruction Private en tête de l'UserForm vos variables globales utilisateur et qualité ?
Notez que les contrôles sont toujours globaux et même Public. Il serait à mon avis plus simple d'exploiter les états des OptionButton.
 

Si...

XLDnaute Barbatruc
Salut

Je préfère réduire au maximum le nombre de contrôles. Avec 2 listes nommées L1 et L2 :
Code:
Private Sub UserForm_Activate()
  L1.List = Array("1 utilisateur", "tous les utilisateurs")
  L2.List = Array("une qualité Full", "une qualité Light")
End Sub
Private Sub Label1_Click()
  If L1.ListIndex < 0 Or L2.ListIndex < 0 Then Exit Sub
  MsgBox "vous avez choisi" & vbLf & "  - " & L1 & vbLf & "pour" & vbLf & "  - " & L2
  'etc
End Sub

édition : si tu tiens à tes boutons, tu as un exemple dans le second fichier
 

Pièces jointes

  • Options(UsF).xlsm
    23.6 KB · Affichages: 14
  • Boutons Options(UsF).xlsm
    22.9 KB · Affichages: 9
Dernière édition:

didus

XLDnaute Occasionnel
Bonjour à tous,
merci Dranreb et si... pour vos réponses
Bonsoir.
Mais avez vous déclaré dans une instruction Private en tête de l'UserForm vos variables globales utilisateur et qualité ?
Notez que les contrôles sont toujours globaux et même Public. Il serait à mon avis plus simple d'exploiter les états des OptionButton.
non dans des variables publiques en début de module1

Salut
Je préfère réduire au maximum le nombre de contrôles. Avec 2 listes nommées L1 et L2 :
et
édition : si tu tiens à tes boutons, tu as un exemple dans le second fichier
merci beaucoup pour ces deux propositions que je vais regarder tranquillement et je reviens pour en discuter

c'est génial d'avoir de l'aide, c'est ce que je fais tout le temps dans divers domaines mais c'est super sympa quand on peut en bénéficier, ça me conforte dans mes choix .
mes actions pour ce userform sont liées à un tableau pour une association qui gére les anciens d'une grosse commune, 1300 noms gérés par des bénévoles un peu perdus avec un gros fichier excel.
j'ai écrit pas mal de macros pour leur gestion et me suis donc replongé dans le code avec délectation... et beaucoup de peines, en 6 ans bien perdu et pas mal de temps et d'energie passés souvent pour des gestes simples.
je vous ferai passer le fichier expurgé des noms pour peut être aider d'autres qui aurait un besoin identique ou me faire critiquer (positivement) car mon code ne doit pas être le plus simple du monde...

Amicalement
 

didus

XLDnaute Occasionnel
Me voilà revenu aprés avoir vu le userform proposé
difficile de faire plus compact, ce que j'ai compris

ce sont les "captions" qui sont donc lus et utilisés
en 4 lignes tout est dit et tout est fait...
je ne tiens pas à mes boutons, juste à un usage facilité pour un utilisateur peu aguéri.

ça me parait juste ... parfait

reste à inclure ça dans un bout de code pour valider
une impression en pdf avec un affichage coloré à imprimer à l'extérieur en bonne qualité
ou en pdf toujours ou pas avec un tableau sans fioritures pour imprimer "à la maison" et économiser l'encre de l'utilisatrice.

merci encore pour cette belle proposition
Amicalement
 

didus

XLDnaute Occasionnel
Bien,
j'ai pu assez rapidement insérer cette nouvelle mouture dans mon code,
il me reste une petit soucis à régler : mon userform bloque ensuite mes impressions
et bloque même excel avec un bip quoi que j'essaie de faire, esc, arret defile, pause avec ou sans ctrl...
j'ai fait plusieurs essais et différents réglages
macros d'impression hors du userform (là les valeurs de q et u semblent avoir disparues)
ou mettre showmodal à false (là il ne se passe plus rien)

si l'ensemble des appels de procédure (call) semble fonctionner avec le code dans le userform
- il n'y a aucune variable locale visible de u et q (affichage variables)
- le userform ne me rend pas la main pour le reste de mes procédures

voici le code du userform nommé "choix_impression"

ce serait sympa de mayday encore une fois ;-)

merci d'avance

procédure de lancement:
Sub UetQ()
' affiche userform
choix_impression.Show
End Sub


bouton du userform
Private Sub imprime_Click()

If O1 + O2 = 0 Or O3 + O4 = 0 Then Exit Sub

Dim u$, q$
u = IIf(O1, O1.Caption, O2.Caption)
q = IIf(O3, O3.Caption, O4.Caption)
MsgBox "vous avez choisi" & vbLf & " - " & u & vbLf & "pour" & vbLf & " - " & q

If q = "une qualité Light" Then
Call Light
'full par défaut
End If
If u = "1 utilisateur" Then
Call impseule
Else
Call imptout
End If
If q = "une qualité Light" Then
Call full
'retour au defaut
End If
ActiveSheet.Protect

End Sub
 

didus

XLDnaute Occasionnel
Bonsoir,
Merci beaucoup Dranreb, j'ai lu beaucoup de doc sur les userform et dans certains codes j'avais vu cette syntaxe sans en connaitre le détail de signification, ça fonctionne si je place cette ligne juste aprés l'affichage de la message box avant les boucles if.
encore merci, je ne vous dérange plus et essaye de finaliser les derniers points qui me restent et posterai mon tableau expurgé.
Amicalement
 

didus

XLDnaute Occasionnel
Bonsoir,
Comme promis voici le tableau définitif
Beaucoup de code pour peu de choses, mais il est question de tester les couples et personnes seules auto, de calculer combien
de faire la répartition sur la seconde feuille des correspondants avec là aussi des calculs auto
du coup le classeur est bien lourd et il y a pas mal de temps d'attente sur des ordis peu puissants, même sur le mien en i7 ça prend du temps
Alors voilà je poste comme promis pour aider un utilisateur ayant un soucis semblable mais en même temps si quelqu'un à une idée pour rendre tout ça plus rapide, je suis preneur.
si ce n'est pas assez clair je peux rajouter des commentaires dans le code, là j'ai passé pas mal de temps à le dépersonaliser tout en le laissant
à peu prés semblable...
merci d'avance et bonnes fêtes à toutes et à tous.
 

Pièces jointes

  • exemple.xlsm
    188.1 KB · Affichages: 16

Discussions similaires