Allias de variables

Résolu
Herve29000 Messages postés 38 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 20 octobre 2014 - 4 janv. 2014 à 19:58
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 5 janv. 2014 à 18:31
Bonjour,

Voila, dans un Userforms, j'ai différents boutons noté de B1 à B14, que je veux faire apparaître et disparaître suivant le déroulement du programme (dans une boucle).

Mon problème est que l'association de "B" & i (i étant un compteur), j'ai un plantage, me disant que ce n'est pas reconnu.

Auriez-vous une idée ?
Merci - Hervé

--

14 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
5 janv. 2014 à 07:17
Désolé et toutes mes excuses, Herve29000. Je t'ai confondu avec un autre Hervé ...
Controls("B" & n) se réfère au contrôle nommé B3 si n = 3
===>>>
For II = 1 To 14
FClients.controls("B" & II).Value = True
Next
--
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
1
Herve29000 Messages postés 38 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 20 octobre 2014
5 janv. 2014 à 11:21
Merci pour tes infos, c'est cool.

Mais pour l'instant, VBA ne fait pas ce que je lui demande dans cette boucle. Pourrais tu me dire ce qui coince. Merci par avance - Hervé

En fait je veux faire afficher et faire disparaître des Checkbox avec cette routine.

For II = 1 To 14
FClients.Controls("B" & II).Visible = True

FFlag = True
Sheets(II).Cells.ClearContents

Traitement (II) (Part dans un PGM qui traite l'information)

FClients.Controls("B" & II).Visible = False
Next
0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 345
4 janv. 2014 à 20:02
Bonjour.
Il faut utiliser la collection "controls"


Si je me connecte sur mon pc je te filerai du code.

0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
4 janv. 2014 à 20:02
Bonjour;
1) Il ne s'agit pas là d'un "alias", mais d'un sujet déjà traité mille et une fois sur ce forum
2) montre ce que tu as écrit et qui provoque :
j'ai un plantage, me disant que ce n'est pas reconnu.


0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
4 janv. 2014 à 20:04
Je me retire aussitôt.
N'avais pas consulté ma petite liste "spéciale". Cette consultation m'aurait conduit à ne rien répondre...
0
Herve29000 Messages postés 38 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 20 octobre 2014
4 janv. 2014 à 20:18
Qu'elle est cette petite liste UCFOUTU ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
4 janv. 2014 à 21:07
Oh ... devine ...
Bonne chance.
0
Herve29000 Messages postés 38 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 20 octobre 2014
4 janv. 2014 à 20:06
Voila l'entête :
For II = 1 To 14
Cial = "B" & II
FClients.Cial.Value = True
FClients.Cial.Visible = True

Le résultat donne :

Erreur de compilation
Membre de méthode ou de données introuvable

Merci pour vos réponses

--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
5 janv. 2014 à 11:34
Ben ...
Si dans ta boucle :
citation :
For II = 1 To 14
FClients.Controls("B" & II).Visible = True

FFlag = True
Sheets(II).Cells.ClearContents

'Traitement (II) (Part dans un PGM qui traite l'information)

FClients.Controls("B" & II).Visible = False
Next
tu demandes d'afficher puis de rendre invisibles, tu n'auras même pas le temps de voir qu'elles s'affichent, qu'elles seront à nouveau invisibles !
0
Herve29000 Messages postés 38 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 20 octobre 2014
5 janv. 2014 à 11:44
Merci pour ta réponse, certes j'y avais pensé, mais pour certains traitements cela met plus de 30 secondes de travail, et pourtant elle ne se rend pas visible pour autant ..... Certes c'est juste pour améliorer graphiquement le programme, car tout fonctionne derrière, mais enfin, j'aurais aimé réussir; J'y suis depuis hier midi... Merci en tout cas pour tes réponses Ucfoutu - Hervé

--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
5 janv. 2014 à 11:55
Mets alors un DoEvents après la ligne disant :
FClients.Controls("B" & II).Visible = True
ou (encore mieux) :
dim debut as single
For II = 1 To 14
FClients.Controls("B" & II).Visible = True
debut = timer
do while timer - debut < 2
doevents
loop
FFlag = True
Sheets(II).Cells.ClearContents

'Traitement (II) (Part dans un PGM qui traite l'information)

FClients.Controls("B" & II).Visible = False
Next
Mais tu vas allonger ainsi forcément le temps d'exécution ... pour aucun réel gain !
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 janv. 2014 à 13:00
Salut tout le monde
La boucle de 2 mSec est amusante, surtout sous VBA.
DoEvents sans boucle fonctionnera aussi bien.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 janv. 2014 à 13:03
NB : Perso, j'aurai commencé par renommer les boutons : B3 ressemble trop à un nom de cellule ~ risqué avec les syntaxes abrégées
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 janv. 2014 à 13:08
NB 2 : Perso, j'ai banni les variables avec les lettres I ou O : ressemblent trop à des chiffres (en lecture rapide)
0
Herve29000 Messages postés 38 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 20 octobre 2014
5 janv. 2014 à 12:23
MERCI !!!! C'est exactement ce que je cherchais comme effet. Tu es un trop fort. Merci encore

--
0
Herve29000 Messages postés 38 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 20 octobre 2014
5 janv. 2014 à 13:13
Tout fonctionne comme j'en avais envie, merci à tous pour vos idées. Maintenant je vais m'attaquer à une barre de progression, indiquant l'avancement du traitement du programme. Si vous avez des idées je serais preneur. Merci encore. Hervé

--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
5 janv. 2014 à 18:02
Le plus simple serait sans aucun doute d'utiliser une barre de progression (composant ProgressBar), d'en fixer sa propriété Max à 14 (le nombre de tes feuilles) et sa propriété Min à 0
Et dans ta boucle, d'incrémenter la propriété Value de ta progressBar de 1 à chaque feuille traitée.
0
Herve29000 Messages postés 38 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 20 octobre 2014
5 janv. 2014 à 18:06
Je vais regarder ce composant. Tu l'as déjà essayé ?
--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
5 janv. 2014 à 18:14
Bien évidemment (c'est l'un des composants les plus utilisés et il est d'utilisation très simple).
0
Herve29000 Messages postés 38 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 20 octobre 2014
5 janv. 2014 à 18:20
Merci Ucfoutu pour toutes tes aides, tu sembles avoir un très bon niveau dans ce genre de programmation, moi je commence en fait (malgrés mon age) - Ou puis je trouver de l'aide à ce sujet de barre de progression STP ?

--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
5 janv. 2014 à 18:31
Aucune aide n'est nécessaire pour un composant aussi simple :
Pour l'insérer : clic droit dans la boîte à outil ===>>> clic gauche sur Contrôles complémentaires ===>> parcours de la liste ===>> coche Microsoft ProgressBar Control, Version 5,0 ===>> clique sur OK ===>>
Il apparait maintenant dans ta boîte à outil est peut maintenant être inséré sur ton userform de la même manière que tous les autres contrôles.
Regarde ses propriétés, parmi lesquelles Min et Max ==>> définis-les comme dit plus haut.
La propriété Value, par contre, n'est accessible qu'en exécution (et pour cause).
Pour l'incrémenter de 1 unité ===>>
progressbar1.value = progressbar1.value + 1
Nul besoin d'aide pour si pet, comme tu le vois.

0
Rejoignez-nous