celiphane
Messages postés466Date d'inscriptionsamedi 16 février 2002StatutMembreDernière intervention20 avril 2007 27 déc. 2004 à 15:13
+1 pour JeCommence
princefido n'avait rien compris a l'exemple VB.
Rien que pour reprendre l'argument :
<<<1 - Tu déclare O comme Object : Désolé mais ne comparons pas le type Object au tupe byte !!!>>>
Désolé, mais ne parles pas de ce que tu ne connais pas ! Dans le for each, l'Object que tu crois plus long ne fait que prendre la valeur du pointeur de chaque contrôle de ta feuille : c'est une valeur long, le "mot" le plus rapide sur un processeur 32 bits (les notres) en compilation. Je n'itère pas avec O, je le renseigne.
Il est encore temps de corriger ton code source, ça se fait pour ceux qui vont arriver sur ta source prochainement : met l'exemple de JeCommence : c'est mieux.
@+
Celiphane
JeCommence
Messages postés10Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 1 mars 2003 5 déc. 2002 à 19:28
princefido : Très bien, mais dans ce cas, je préfère le code de céliphane !
j'ai lu qq part sur ce site qu'il faut tjrs préférer un for each à un for next, question de rapidité ! et puis ce que tu dis c'est faux car si il y a plus de 255 controles ton byte va planter le programme, et il suffit de rajouter un test sur le nom de l'objet comme tu l'as fait pour dans ton code pour n'affecter que certains controles, par exemple (je m'inspire, j'avoue, des codes plus haut...dsl) :
Private Sub showctrl(ByVal flag As Boolean, byval str as string)
On Error Resume Next
Dim O As Object
For Each O In Me
If InStr(1, O.Name, str, vbTextCompare) <> 0 Then O.Visible = flag
Next O
End Sub
Un mélange des 2, c'est pas le meilleur ?
FrostByte
Messages postés138Date d'inscriptionmercredi 4 avril 2001StatutMembreDernière intervention28 janvier 2006 5 déc. 2002 à 18:47
cs_princefido
Messages postés5Date d'inscriptionmercredi 25 octobre 2000StatutMembreDernière intervention 5 décembre 2002 5 déc. 2002 à 14:17
JeCommence : Ben, supposons que dans un prog' tu aies plusieurs frames et que tu ne veuilles faire apparaître qu'une à la fois, ben eu lieu de mettre invisible chaque frame, tu utilises cette astuce pour mettre tout invisible, ensuite tu remet visible la frame que tu veux faire apparaître !! Bien sur il y'a d'autres utilisation plus compliquées ...
cs_princefido
Messages postés5Date d'inscriptionmercredi 25 octobre 2000StatutMembreDernière intervention 5 décembre 2002 5 déc. 2002 à 14:09
oué celiphane, c'est une idéé, mais voila pourquoi je ne l'utilise pas :
1 - Tu déclare O comme Object : Désolé mais ne comparons pas le type Object au tupe byte !!!
2 - Ca va mettre tout les objets en invisible, et si tu veux mettre que les frames et les textbox, il faudra écrire deux procédures une pour les frames et une pour les textbox
Sinon pour la déclaration du i, c'est que ce code fait partie d'un programme, et le i est déclaré dans les Option Explicit.
Merci quand même pour les critiques.
JeCommence
Messages postés10Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 1 mars 2003 5 déc. 2002 à 13:59
slt à tous
je comprends pas à quoi ça vous sert de cacher les contrôles de la feuille...
celiphane
Messages postés466Date d'inscriptionsamedi 16 février 2002StatutMembreDernière intervention20 avril 2007 5 déc. 2002 à 13:56
C'est pas terrible de ne pas déclarer ta variable i, puis en plus, le for next implique une incrémentation en mémoire, ca prend du temps machine...
prend plutot ce code :
Private Sub showctrl(ByVal flag As Boolean)
On Error Resume Next
Dim O As Object
For Each O In Me
O.Visible = flag
Next O
End Sub
c mieux ! en plus, le parametre peut prendre true ou false selon que tu veux cacher ou afficher les controles !
@+ slt ! et bonne prog'
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 5 déc. 2002 à 13:54
nox (il me semble que c lui) avait deja mis ca sur le site, sous je ne sais plus quel nom de source....
c'est pratique en tt cas
27 déc. 2004 à 15:13
princefido n'avait rien compris a l'exemple VB.
Rien que pour reprendre l'argument :
<<<1 - Tu déclare O comme Object : Désolé mais ne comparons pas le type Object au tupe byte !!!>>>
Désolé, mais ne parles pas de ce que tu ne connais pas ! Dans le for each, l'Object que tu crois plus long ne fait que prendre la valeur du pointeur de chaque contrôle de ta feuille : c'est une valeur long, le "mot" le plus rapide sur un processeur 32 bits (les notres) en compilation. Je n'itère pas avec O, je le renseigne.
Il est encore temps de corriger ton code source, ça se fait pour ceux qui vont arriver sur ta source prochainement : met l'exemple de JeCommence : c'est mieux.
@+
Celiphane
5 déc. 2002 à 19:28
j'ai lu qq part sur ce site qu'il faut tjrs préférer un for each à un for next, question de rapidité ! et puis ce que tu dis c'est faux car si il y a plus de 255 controles ton byte va planter le programme, et il suffit de rajouter un test sur le nom de l'objet comme tu l'as fait pour dans ton code pour n'affecter que certains controles, par exemple (je m'inspire, j'avoue, des codes plus haut...dsl) :
Private Sub showctrl(ByVal flag As Boolean, byval str as string)
On Error Resume Next
Dim O As Object
For Each O In Me
If InStr(1, O.Name, str, vbTextCompare) <> 0 Then O.Visible = flag
Next O
End Sub
Un mélange des 2, c'est pas le meilleur ?
5 déc. 2002 à 18:47
5 déc. 2002 à 14:17
5 déc. 2002 à 14:09
1 - Tu déclare O comme Object : Désolé mais ne comparons pas le type Object au tupe byte !!!
2 - Ca va mettre tout les objets en invisible, et si tu veux mettre que les frames et les textbox, il faudra écrire deux procédures une pour les frames et une pour les textbox
Sinon pour la déclaration du i, c'est que ce code fait partie d'un programme, et le i est déclaré dans les Option Explicit.
Merci quand même pour les critiques.
5 déc. 2002 à 13:59
je comprends pas à quoi ça vous sert de cacher les contrôles de la feuille...
5 déc. 2002 à 13:56
prend plutot ce code :
Private Sub showctrl(ByVal flag As Boolean)
On Error Resume Next
Dim O As Object
For Each O In Me
O.Visible = flag
Next O
End Sub
c mieux ! en plus, le parametre peut prendre true ou false selon que tu veux cacher ou afficher les controles !
@+ slt ! et bonne prog'
5 déc. 2002 à 13:54
c'est pratique en tt cas