Re ...
Venons à des choses claires.
Ce ne sauraient être les instructions que l'on voit dans le seul code montré qui tournent en boucle infinie.
Si donc on entre dans une boucle infinie, la cause est à chercher ailleurs que dans ce code en soi : cette cause est très probablement des évènements (procédures évènementielles) qui s'appellent sans cesse entre eux-mêmes, en une espèce de va-et-vient perpétuel.
Cette boucle infinie d'évènements peut soit concerner des évènements au sein-même de l'userform, soit concerner des évènements E du classeur (d'une ou plusieurs de ses feuilles) déclenchant des évènements du userform qui déclenchent à leur tour des évènements E (etc ... etc ...)
Et ce n'est pas le bout de code montré qui peut à lui seul permettre de déceler la totalité du mécanisme responsable.
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
A tes ordres, pijaku ! ;-)
J'ai exécuté ton plan selon les 2 approches dans 2 classeurs distincts, radical.xls et radical2.xls et toutes les deux fonctionnent à merveille, sauf que le "exécution en cours" est de nouveau là. Il faut croire que c'est normal jusqu'à ce que je ferme la USF.
Maintenant, il faudrait que j'obtienne le même résultat avec
- douze feuilles au lieu de 3 (ça, ça semble facile)
- un module standard envoyant des e mails automatiquement (seul, il fonctionne)
- une piste, un conseil concernant la manière dont le choix obtenu par le module de l'USF est repris dans le module standard. (Est-ce que le passage de paramètres dans la parenthèse de la sub fonctionne entre 2 modules différents ?)
Merci d'avance
Bonne soirée
Cordialement
Pierre
There is always an easy solution to every human problem - neat, plausible. And wrong.
Bonjour pijaku,
Donc le modèle "radical" que tu m'as fourni tourne très bien.
Mais il y a quelque chose que je ne comprends pas. J'ai remplacé tes noms de variables par les miens et d'abord ça a marché (le msgbox indiquait correctement quel bouton avait été cliqué) mais ensuite j'ai systématiquement l'erreur "Incompatibilité de type" dans cette ligne:
Determine_la_Feuille Me.Option_Groupe (qui remplace Me.OptionbuttonN).
Pourtant je n'ai rien changé d'autre.
Peux-tu, quelqu'un peut-il éclairer ma lanterne ?
Merci d'avance
Cordialement
Pierre
There is always an easy solution to every human problem - neat, plausible. And wrong.
Bonjour,
Option_Groupe c'est quoi?
Au choix :
- Un OptionButton nommé Option_Groupe,
- Une variable, ==> qui représente quoi dans ce cas?
- Un Frame regroupant tes OptionButton?
- Autre chose?
Cordialement,
Franck
Bonjour,
C'est le 1 qui est juste: Option_Groupe remplace OptionButton1 en tant que nom d'un bouton d'option.
A ta disposition s'il y a d'autres obscurités.
Cordialement
Pierre
There is always an easy solution to every human problem - neat, plausible. And wrong.
Envoie nous donc tout le code de ton Module d'UserForm, stp.
Cordialement,
Franck
Bonsoir Frank P.
Voici le code de ma USF:
Les contrôles dont le nom commence par Comm sont de simples boutons de commande.
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
93 Option Explicit Private Sub Textbox1_Click() 'ligne de début Dim Debut As Integer Debut = TextBox1.Value End Sub Private Sub Textbox2_Click() 'ligne de fin Dim fin As Integer fin = TextBox2.Value End Sub Private Sub Comm_annuler_Click() 'ferme la USF Unload Lanceur_de_mailing End Sub Private Option_Groupe As MSForms.OptionButton 'cette ligne pour voir si déclarer ' "Option_Groupe" change quelque ' chose. Réponse: non. Private Feuille As Worksheet Private Sub Option_groupe_Click() Determine_la_Feuille Me.Option_Groupe End Sub Private Sub Option_proches_Click() Determine_la_Feuille Me.Option_Proches End Sub Private Sub Option_groupe_proches_Click() Determine_la_Feuille Me.Option_Groupe_Proches End Sub Private Sub Option_propagande_Click() Determine_la_Feuille Me.Option_Propagande End Sub Private Sub Option_groupe_proches_propagande_Click() Determine_la_Feuille Me.Option_Groupe_Proches_Propagande End Sub Private Sub Option_adversaires_Click() Determine_la_Feuille Me.Option_adversaires End Sub Private Sub Option_sct_Carouge_Click() Determine_la_Feuille Me.Option_sct_Carouge End Sub Private Sub Option_sct_Vernier_Click() Determine_la_Feuille Me.Option_sct_Vernier End Sub Private Sub Présidents_sections_Click() Determine_la_Feuille Me.Présidents_sections End Sub Private Sub Présidents_commissions_Click() Determine_la_Feuille Me.Présidents_commissions End Sub Private Sub Option_CD_Click() Determine_la_Feuille Me.Option_CD End Sub Private Sub Option_test_Click() Determine_la_Feuille Me.Option_test End Sub Private Sub Determine_la_Feuille(Feuille As Worksheet) Select Case True Case Me.Option_Groupe Set Feuille = Worksheets("email_groupe") Case Me.Option_Proches Set Feuille = Worksheets("email_proches") Case Me.Option_Groupe_Proches Set Feuille = Worksheets("email_groupe_proches") Case Me.Option_Propagande Set Feuille = Worksheets("email_propag") Case Me.Option_Groupe_Proches_Propagande Set Feuille = Worksheets("email_grou_pro_propag") Case Me.Option_adversaires Set Feuille = Worksheets("email_advers") Case Me.Option_sct_Carouge Set Feuille = Worksheets("sct_Carouge") Case Me.Option_sct_Vernier Set Feuille = Worksheets("sct_Vernier") Case Me.Présidents_sections Set Feuille = Worksheets("Prés_sections") Case Me.Présidents_commissions Set Feuille = Worksheets("Prés_commissions") Case Me.Option_CD Set Feuille = Worksheets("email_CD") Case Me.Option_test Set Feuille = Worksheets("email_test") End Select MsgBox Feuille.Name End Sub Private Sub Comm_OK_Click() Execute EnvoiMail(Feuille) End Sub
Les 2 textbox servent à délimiter la plage à utiliser dans chaque feuille contenant les adresses e-mail.
Ce qui peut éventuellement interférer avec ce code, c'est
- le code d'un bouton placé dans la première feuille et ouvrant l'userform
- le code dans le module standard dont la fonction est d'envoyer automatiquement des e mails en série à des intervalles de temps irréguliers, avec ou sans pièce(s) jointe(s).
Dis-moi si tu veux les examiner aussi.
Merci de ton regard critique.
Cordialement
Pierre
There is always an easy solution to every human problem - neat, plausible. And wrong.
2-3 choses à revoir...
1- Tous les événements TextBox_Click, dans ton cas ne sont pas adaptés...
2- Private Option_Groupe As MSForms.OptionButton ne sert à rien, à supprimer
3- ne vois tu pas un problème de majuscule dans TON code, ici :
Option n°4 : Private Feuille As Worksheet doit être placé juste sous Option Explicit....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Option_groupe_Click() Determine_la_Feuille Me.Option_Groupe End Sub
Cordialement,
Franck
Bonsoir pijaku et merci,
Majuscules: autant pour moi. Quelle négligence !
Textbox: sur les événements, mes lacunes sont des gouffres ! Je vais m'y attaquer demain, avec la tête un peu plus claire. Je reviendrai probablement la semaine prochaine, pas avant.
Bonne fin de semaine.
Cordialement
Pierre
There is always an easy solution to every human problem - neat, plausible. And wrong.
Juste souligner que la programmation ne tolère aucune approximation.
Cordialement,
Franck
Bonsoir Frank,
J'ai repêché mon sujet dans les profondeurs du forum et voici ma question: avant de me remettre à coder j'aimerais vérifier que j'ai compris pourquoi mes textbox ne sont pas adaptés. C'est je crois parce que pour saisir un entier à chaque fois, je dois les remplacer par des inputbox. Le souci c'est (je crois, encore une fois !) que l'inputbox n'est pas un contrôle de userform et qu'il se programme dans un module standard. Je pense que quand l'une des feuilles portant les adresses e mail aura été sélectionnée les inputbox s'afficheront.
Il y aurait une autre possibilité, c'est que l'événement Click du textbox doive être remplacé par l'événement Change. Donc je suis très hésitant sur la suite à donner!
J'ai consulté les 2 tutoriels portant sur les USF mais ni l'un ni l'autre ne m'a éclairé sur ce problème.
Merci d'avance de me donner un coup de pouce.
Cordialement
Pierre
There is always an easy solution to every human problem - neat, plausible. And wrong.
Bonjour,
Cette question n'ayant rien à voir avec le sujet, il convient d'en créer un nouveau.
Mais bon, tu peux déjà t'intéresser aux événements suivants :
- TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
- TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
- TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Sache que tu n'as pas besoin d'inputbox, fais une recherche TextBox numérique sur ce forum...
Cordialement,
Franck
Bonjour,
Tout d'abord je tiens à remercier MarcelG, unparia, dysorthographie et pijaku, ce dernier plus particulièrement pour sa grande patience.
Il est dit qu'après 11 ans de consultations généralement fructueuses de ce forum je resterai un débutant ou plutôt un éternel novice. Bref, je renonce à réaliser la solution autour de laquelle je tourne depuis trop longtemps, et dont je regretterai l'élégance, au profit d'une solution plus simple et plus banale, évidemment: placer chacun de mes fichiers d'adresses e mail dans un classeur différent et y adjoindre une copie de la sub d'envoi automatique, qui fonctionne, et qui sera ainsi paramétrée une fois pour toutes. Adieu textbox et inputbox
Donc merci et sans doute à bientôt pour d'autres soucis de novice.
Cordialement
Pierre
There is always an easy solution to every human problem - neat, plausible. And wrong.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager