La variable temporaire WITH est'elle automatiquement=20
d=E9truite en cas d'erreur VB dans la proc=E9dure d=E9crite ci-
dessous ?
Y a t'il un int=E9r=EAt, en terme de performances et/ou de=20
taille du code compil=E9, =E0 utiliser With - End With avec=20
des structures VB ?
Exemple :
Private Type StructX
Nom as string
Prenom as string
Rue as string
...
end Type
private sub Verif()
Dim X as structX
on error goto Verif_Error
With X
if Nom =3D "" then Error 13
....
End With
Verif_Error:
msgbox "Erreur n=B0 " & err.number & vbcrlf &=20
err.description,vbCritical
end sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut Jean! :O)
La variable temporaire WITH est'elle automatiquement détruite en cas d'erreur VB dans la procédure décrite ci- dessous ?
Généralement oui, mais la doc conseille toutefois d'éviter de sauter dans ou hors d'un bloc With...
Y a t'il un intérêt, en terme de performances et/ou de taille du code compilé, à utiliser With - End With avec des structures VB ?
C'est très pratique lorsque tu as quelque chose comme ceci : '*** Debug.Print colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul eur").Value Debug.Print colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul eur").Price Debug.Print colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul eur").Name '***
qui devient ceci '*** With colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul eur") Debug.Print .Value Debug.Print .Price Debug.Print .Name End With '***
La structure With est facile à lire et à aussi *maintenir*. De plus elle peut offrir un gain de performance assez intéressant... Dans l'exemple ci-haut, le recherche l'option Couleur d'un certain détail de commande. Je dois passer par deux collections et une fonction pour l'atteindre... Moins je devrai le faire souvent plus rapide sera mon code car on évite d'aller rechercher encore et encore le même objet.
L'utilisation d'un bloc With est donc équivalente à ceci si on continue avec l'exemple ci-haut : '*** Dim opt As Option
Set opt colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul eur")
Debug.Print opt.Value Debug.Print opt.Price Debug.Print opt.Name '*** En conservant l'objet dans une variable temporaire on évite ainsi de réappelé les fonctions nécessaire à retrouver cet objet ce qui peut faire gagner un temps précieux.
Si toutefois on avait eu ceci, comme c'est ton cas ici : '*** Debug.Print opt.Value Debug.Print opt.Price Debug.Print opt.Name '*** L'utilisation d'un bloc With ici importe peu.. Le code n'est pas vraiment plus facile à lire et le gain de performance est nul (si c'est pas plus lent..).
La variable temporaire WITH est'elle automatiquement
détruite en cas d'erreur VB dans la procédure décrite ci-
dessous ?
Généralement oui, mais la doc conseille toutefois d'éviter de sauter dans ou
hors d'un bloc With...
Y a t'il un intérêt, en terme de performances et/ou de
taille du code compilé, à utiliser With - End With avec
des structures VB ?
C'est très pratique lorsque tu as quelque chose comme ceci :
'***
Debug.Print
colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul
eur").Value
Debug.Print
colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul
eur").Price
Debug.Print
colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul
eur").Name
'***
qui devient ceci
'***
With
colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul
eur")
Debug.Print .Value
Debug.Print .Price
Debug.Print .Name
End With
'***
La structure With est facile à lire et à aussi *maintenir*.
De plus elle peut offrir un gain de performance assez intéressant... Dans
l'exemple ci-haut, le recherche l'option Couleur d'un certain détail de
commande. Je dois passer par deux collections et une fonction pour
l'atteindre... Moins je devrai le faire souvent plus rapide sera mon code
car on évite d'aller rechercher encore et encore le même objet.
L'utilisation d'un bloc With est donc équivalente à ceci si on continue avec
l'exemple ci-haut :
'***
Dim opt As Option
Set opt colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul
eur")
Debug.Print opt.Value
Debug.Print opt.Price
Debug.Print opt.Name
'***
En conservant l'objet dans une variable temporaire on évite ainsi de
réappelé les fonctions nécessaire à retrouver cet objet ce qui peut faire
gagner un temps précieux.
Si toutefois on avait eu ceci, comme c'est ton cas ici :
'***
Debug.Print opt.Value
Debug.Print opt.Price
Debug.Print opt.Name
'***
L'utilisation d'un bloc With ici importe peu.. Le code n'est pas vraiment
plus facile à lire et le gain de performance est nul (si c'est pas plus
lent..).
La variable temporaire WITH est'elle automatiquement détruite en cas d'erreur VB dans la procédure décrite ci- dessous ?
Généralement oui, mais la doc conseille toutefois d'éviter de sauter dans ou hors d'un bloc With...
Y a t'il un intérêt, en terme de performances et/ou de taille du code compilé, à utiliser With - End With avec des structures VB ?
C'est très pratique lorsque tu as quelque chose comme ceci : '*** Debug.Print colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul eur").Value Debug.Print colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul eur").Price Debug.Print colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul eur").Name '***
qui devient ceci '*** With colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul eur") Debug.Print .Value Debug.Print .Price Debug.Print .Name End With '***
La structure With est facile à lire et à aussi *maintenir*. De plus elle peut offrir un gain de performance assez intéressant... Dans l'exemple ci-haut, le recherche l'option Couleur d'un certain détail de commande. Je dois passer par deux collections et une fonction pour l'atteindre... Moins je devrai le faire souvent plus rapide sera mon code car on évite d'aller rechercher encore et encore le même objet.
L'utilisation d'un bloc With est donc équivalente à ceci si on continue avec l'exemple ci-haut : '*** Dim opt As Option
Set opt colCommandes(lCommandeID).GetDetailCommande(lDetailCommandeID).Options("Coul eur")
Debug.Print opt.Value Debug.Print opt.Price Debug.Print opt.Name '*** En conservant l'objet dans une variable temporaire on évite ainsi de réappelé les fonctions nécessaire à retrouver cet objet ce qui peut faire gagner un temps précieux.
Si toutefois on avait eu ceci, comme c'est ton cas ici : '*** Debug.Print opt.Value Debug.Print opt.Price Debug.Print opt.Name '*** L'utilisation d'un bloc With ici importe peu.. Le code n'est pas vraiment plus facile à lire et le gain de performance est nul (si c'est pas plus lent..).
>L'utilisation d'un bloc With ici importe peu.. Le code n'est pas vraiment plus facile à lire et le gain de performance est nul (si c'est pas plus lent..).
Ah bon ? N'avais-tu pas fait des benchmark un coup pour ça ? Il me semblait qu'il y avait un gain (négligeable certes) pour les objets COMs.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
Zoury a écrit :
Salut Jean! :O)
La variable temporaire WITH est'elle automatiquement détruite en cas d'erreur VB dans la procédure décrite ci- dessous ?
Généralement oui, mais la doc conseille toutefois d'éviter de sauter dans ou hors d'un bloc With...
Y a t'il un intérêt, en terme de performances et/ou de taille du code compilé, à utiliser With - End With avec des structures VB ?
C'est très pratique lorsque tu as quelque chose comme ceci : '*** Debug.Print
eur") Debug.Print .Value Debug.Print .Price Debug.Print .Name End With '***
La structure With est facile à lire et à aussi *maintenir*. De plus elle peut offrir un gain de performance assez intéressant... Dans l'exemple ci-haut, le recherche l'option Couleur d'un certain détail de commande. Je dois passer par deux collections et une fonction pour l'atteindre... Moins je devrai le faire souvent plus rapide sera mon code car on évite d'aller rechercher encore et encore le même objet.
L'utilisation d'un bloc With est donc équivalente à ceci si on continue avec l'exemple ci-haut : '*** Dim opt As Option
Debug.Print opt.Value Debug.Print opt.Price Debug.Print opt.Name '*** En conservant l'objet dans une variable temporaire on évite ainsi de réappelé les fonctions nécessaire à retrouver cet objet ce qui peut faire gagner un temps précieux.
Si toutefois on avait eu ceci, comme c'est ton cas ici : '*** Debug.Print opt.Value Debug.Print opt.Price Debug.Print opt.Name '*** L'utilisation d'un bloc With ici importe peu.. Le code n'est pas vraiment plus facile à lire et le gain de performance est nul (si c'est pas plus lent..).
>L'utilisation d'un bloc With ici importe peu.. Le code n'est pas vraiment
plus facile à lire et le gain de performance est nul (si c'est pas plus
lent..).
Ah bon ? N'avais-tu pas fait des benchmark un coup pour ça ? Il me semblait
qu'il y avait un gain (négligeable certes) pour les objets COMs.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/
Zoury <yanick_lefebvre@hotmail.com> a écrit :
Salut Jean! :O)
La variable temporaire WITH est'elle automatiquement
détruite en cas d'erreur VB dans la procédure décrite ci-
dessous ?
Généralement oui, mais la doc conseille toutefois d'éviter de sauter
dans ou hors d'un bloc With...
Y a t'il un intérêt, en terme de performances et/ou de
taille du code compilé, à utiliser With - End With avec
des structures VB ?
C'est très pratique lorsque tu as quelque chose comme ceci :
'***
Debug.Print
eur")
Debug.Print .Value
Debug.Print .Price
Debug.Print .Name
End With
'***
La structure With est facile à lire et à aussi *maintenir*.
De plus elle peut offrir un gain de performance assez intéressant...
Dans l'exemple ci-haut, le recherche l'option Couleur d'un certain
détail de commande. Je dois passer par deux collections et une
fonction pour l'atteindre... Moins je devrai le faire souvent plus
rapide sera mon code car on évite d'aller rechercher encore et encore
le même objet.
L'utilisation d'un bloc With est donc équivalente à ceci si on
continue avec l'exemple ci-haut :
'***
Dim opt As Option
Debug.Print opt.Value
Debug.Print opt.Price
Debug.Print opt.Name
'***
En conservant l'objet dans une variable temporaire on évite ainsi de
réappelé les fonctions nécessaire à retrouver cet objet ce qui peut
faire gagner un temps précieux.
Si toutefois on avait eu ceci, comme c'est ton cas ici :
'***
Debug.Print opt.Value
Debug.Print opt.Price
Debug.Print opt.Name
'***
L'utilisation d'un bloc With ici importe peu.. Le code n'est pas
vraiment plus facile à lire et le gain de performance est nul (si
c'est pas plus lent..).
>L'utilisation d'un bloc With ici importe peu.. Le code n'est pas vraiment plus facile à lire et le gain de performance est nul (si c'est pas plus lent..).
Ah bon ? N'avais-tu pas fait des benchmark un coup pour ça ? Il me semblait qu'il y avait un gain (négligeable certes) pour les objets COMs.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
Zoury a écrit :
Salut Jean! :O)
La variable temporaire WITH est'elle automatiquement détruite en cas d'erreur VB dans la procédure décrite ci- dessous ?
Généralement oui, mais la doc conseille toutefois d'éviter de sauter dans ou hors d'un bloc With...
Y a t'il un intérêt, en terme de performances et/ou de taille du code compilé, à utiliser With - End With avec des structures VB ?
C'est très pratique lorsque tu as quelque chose comme ceci : '*** Debug.Print
eur") Debug.Print .Value Debug.Print .Price Debug.Print .Name End With '***
La structure With est facile à lire et à aussi *maintenir*. De plus elle peut offrir un gain de performance assez intéressant... Dans l'exemple ci-haut, le recherche l'option Couleur d'un certain détail de commande. Je dois passer par deux collections et une fonction pour l'atteindre... Moins je devrai le faire souvent plus rapide sera mon code car on évite d'aller rechercher encore et encore le même objet.
L'utilisation d'un bloc With est donc équivalente à ceci si on continue avec l'exemple ci-haut : '*** Dim opt As Option
Debug.Print opt.Value Debug.Print opt.Price Debug.Print opt.Name '*** En conservant l'objet dans une variable temporaire on évite ainsi de réappelé les fonctions nécessaire à retrouver cet objet ce qui peut faire gagner un temps précieux.
Si toutefois on avait eu ceci, comme c'est ton cas ici : '*** Debug.Print opt.Value Debug.Print opt.Price Debug.Print opt.Name '*** L'utilisation d'un bloc With ici importe peu.. Le code n'est pas vraiment plus facile à lire et le gain de performance est nul (si c'est pas plus lent..).
Zoury
hehe! bonne mémoire :O)
le voici justement http://groups.google.com/groups?selmíGST5SzCHA.2648%40TK2MSFTNGP11
on avait testé des cas du genre A.B.C.D.E sans testé le cas A.B (un seul membre accédé..), mais logiquement ça ne varie pas beaucoup.. :OP
le voici justement http://groups.google.com/groups?selmíGST5SzCHA.2648%40TK2MSFTNGP11
Oui c'est bien ce thread là ;)
on avait testé des cas du genre A.B.C.D.E sans testé le cas A.B (un seul membre accédé..), mais logiquement ça ne varie pas beaucoup.. :OP
En effet...
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
Salut,
le voici justement
http://groups.google.com/groups?selmíGST5SzCHA.2648%40TK2MSFTNGP11
Oui c'est bien ce thread là ;)
on avait testé des cas du genre A.B.C.D.E sans testé le cas A.B (un
seul membre accédé..), mais logiquement ça ne varie pas beaucoup.. :OP
En effet...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/
le voici justement http://groups.google.com/groups?selmíGST5SzCHA.2648%40TK2MSFTNGP11
Oui c'est bien ce thread là ;)
on avait testé des cas du genre A.B.C.D.E sans testé le cas A.B (un seul membre accédé..), mais logiquement ça ne varie pas beaucoup.. :OP
En effet...
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/