OVH Cloud OVH Cloud

fichier deja ouvert

4 réponses
Avatar
patrick
Bonjour,
je teste cette fonction issue d' excelabo et de Frederic
Sigonneau celà marche parfaitement
Function DejaOuvert(CheminComplet$) As Boolean
Dim Wbk As Workbook
On Error Resume Next
Set Wbk = Workbooks(Dir$(CheminComplet))
DejaOuvert = Err = 0
Err.Clear
End Function

mais je ne comprends pas la ligne suivante
on valorise la fonction avec Err mais que fait le = 0
DejaOuvert = Err = 0

qqun peut-il m'expliquer ?
merci
@+
patrick

4 réponses

Avatar
anonymousA
bonjour,

Il s'agit d'un passage d'une valeur logique. Si il n'y a pas d'erreur,
alors Err est égal à 0 et donc écrire Err=0 revient à renvoyer la valeur
booléenne True donc dans ces conditions , on passe à la fonction DejaOuvert
le résultat du test booléen et donc la valeur True.
Dans le cas contraire, la valeur booleenne de la fonction n'ayant pas été
changée, celle-ci reste à false car par défaut les valeurs booléennes sont
toujours initialisées à false par VBA.

A+


Bonjour,
je teste cette fonction issue d' excelabo et de Frederic
Sigonneau celà marche parfaitement
Function DejaOuvert(CheminComplet$) As Boolean
Dim Wbk As Workbook
On Error Resume Next
Set Wbk = Workbooks(Dir$(CheminComplet))
DejaOuvert = Err = 0
Err.Clear
End Function

mais je ne comprends pas la ligne suivante
on valorise la fonction avec Err mais que fait le = 0
DejaOuvert = Err = 0

qqun peut-il m'expliquer ?
merci
@+
patrick







Avatar
ClémentMarcotte
Bonjour,

mais je ne comprends pas la ligne suivante
on valorise la fonction avec Err mais que fait le = 0
DejaOuvert = Err = 0


C'est un test logique. Pour VB - VBA (avant VB.net) le Vrai signifie -1, en
"sortie", encore qu'en "entrée", toute valeur différente de 0 est aussi
interprétée comme "True". "False" est zéro dans tout les cas. (Pour VB.net,
True retourne la valeur numérique 1)

Dans le cas qui nous préoccupe, le second signe "=" est un test logique qui
vérifie si la tentative d'ouverture du fichier retourne une erreur. En fait,
la comparaison a lieu entre le numéro de l'erreur (Err retourne le numéro de
l'erreur par défaut) et 0. S'il n'y a pas d'erreur, tu as 0 = 0 et la
comparaison retourne -1 ou True; pour indiquer que le fichier n'est pas déjà
ouvert. Rendu là, c'est le premier égal qui entre en jeu. On a un second
test logique, 0 = -1. Puisque le resultat est Faux, la valeur de la fonction
est fausse.

D'autre part, si la première comparaison est "True", (il n'y a pas d'erreur
dans la tentative d'ouverture du fichier et le numéro de l'erreur qui
n'existe pas es zéro). On a donc, à la deuxième comparaison, 0=0. Puisque
la seconde comparaison retourne True, la fonction retourne -1 ou True.

Ensuite, c'est au programme "appelant" de bien "formuler la question" pour
utiliser la bonne réponse à la bonne place.
assigne la valeur 0 (False) à la fonction


"patrick" a écrit dans le message de
news:429dcd66$
Bonjour,
je teste cette fonction issue d' excelabo et de Frederic
Sigonneau celà marche parfaitement
Function DejaOuvert(CheminComplet$) As Boolean
Dim Wbk As Workbook
On Error Resume Next
Set Wbk = Workbooks(Dir$(CheminComplet))
DejaOuvert = Err = 0
Err.Clear
End Function


qqun peut-il m'expliquer ?
merci
@+
patrick






Avatar
anonymousA
erratum

c'est l'inverse qu'il faut comprendre .J'ai écrit trop vite.
En fait,s'il y a une erreur alors Err est différent de 0 et donc Err=0
renvoie False et par voie de conséquence DejaOuvert recoit false.
Dans le cas contraire Err=0 renvoie true et donc DejaOUvert recoit true.

Encore mes excuses pour le 1er envoi trop rapide et foireux.

A+

A+


Bonjour,
je teste cette fonction issue d' excelabo et de Frederic
Sigonneau celà marche parfaitement
Function DejaOuvert(CheminComplet$) As Boolean
Dim Wbk As Workbook
On Error Resume Next
Set Wbk = Workbooks(Dir$(CheminComplet))
DejaOuvert = Err = 0
Err.Clear
End Function

mais je ne comprends pas la ligne suivante
on valorise la fonction avec Err mais que fait le = 0
DejaOuvert = Err = 0

qqun peut-il m'expliquer ?
merci
@+
patrick







Avatar
patrick
Ce matin j'ai lu vos réponses avec grand interet
et j'ai encore appris quelquechose.
merci à Clément Marcotte et à anonymousA pour leurs explications

patrick


"anonymousA" a écrit dans le message
news:
erratum

c'est l'inverse qu'il faut comprendre .J'ai écrit trop vite.
En fait,s'il y a une erreur alors Err est différent de 0 et donc Err=0
renvoie False et par voie de conséquence DejaOuvert recoit false.
Dans le cas contraire Err=0 renvoie true et donc DejaOUvert recoit true.

Encore mes excuses pour le 1er envoi trop rapide et foireux.

A+

A+


Bonjour,
je teste cette fonction issue d' excelabo et de Frederic
Sigonneau celà marche parfaitement
Function DejaOuvert(CheminComplet$) As Boolean
Dim Wbk As Workbook
On Error Resume Next
Set Wbk = Workbooks(Dir$(CheminComplet))
DejaOuvert = Err = 0
Err.Clear
End Function

mais je ne comprends pas la ligne suivante
on valorise la fonction avec Err mais que fait le = 0
DejaOuvert = Err = 0

qqun peut-il m'expliquer ?
merci
@+
patrick