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
235
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
35793
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
358
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
235
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
235
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
235
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
235
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
235
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
14007
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
14007
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
14007
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
235
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
235
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
235
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