Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] libérer un objet

2 réponses
Avatar
barbibul
Bonjour à toutes et à tous,


Voici ma question :

je souhaite piloter un classeur fermé.

d'où le code :
__________________________________________________________
1 Sub testVariableObjet()
2
3 Dim cible As Workbook
4 Set cible = GetObject("C:\Dossier\Classeur_test.xls")
5
6 '........................................'
7 'Diverses opérations sur l'objet "cible" '
8 '........................................'
9
10 Set cible = Nothing
11
12 End Sub
__________________________________________________________

Je pensais que "set cible = Nothing" suffisait à libérer le classeur.
Mais si je veux y accéder directement le doc est "déjà en utilisation"
et je ne peux l'ouvrir qu'en mode lecture.

en ajoutant ligne 9 :

cible.close

C'est ok. le classeur peut se lire normalement.

Pour une utilisation en mono-poste c'est ok.

Mais si je veux que le classeur soit accessible par plusieurs
postes ça se complique...

En effet quand un utilisateur lit des infos sur le classeur cible,
un autre utilisateur n'y aura sans doute pas accès avant qu'il
soit "close".

Voyez-vous une solution ?

2 réponses

Avatar
Ardus Petus
10 cible.Application.Quit


Et voilà!

Cordialement,
--
AP

"barbibul" a écrit dans le message de news:
447737d2$0$20882$
Bonjour à toutes et à tous,


Voici ma question :

je souhaite piloter un classeur fermé.

d'où le code :
__________________________________________________________
1 Sub testVariableObjet()
2
3 Dim cible As Workbook
4 Set cible = GetObject("C:DossierClasseur_test.xls")
5
6 '........................................'
7 'Diverses opérations sur l'objet "cible" '
8 '........................................'
9
10 Set cible = Nothing
11
12 End Sub
__________________________________________________________

Je pensais que "set cible = Nothing" suffisait à libérer le classeur.
Mais si je veux y accéder directement le doc est "déjà en utilisation"
et je ne peux l'ouvrir qu'en mode lecture.

en ajoutant ligne 9 :

cible.close

C'est ok. le classeur peut se lire normalement.

Pour une utilisation en mono-poste c'est ok.

Mais si je veux que le classeur soit accessible par plusieurs
postes ça se complique...

En effet quand un utilisateur lit des infos sur le classeur cible,
un autre utilisateur n'y aura sans doute pas accès avant qu'il
soit "close".

Voyez-vous une solution ?


Avatar
barbibul
Merci Ardus Petus pour la réponse
cependant ceci ne réponds pas à ma question.

Je la pose autrement :

Peut-on travailler à plusieurs utilisateurs sur un classeur fermé
(ou plus généralement sur un objet)
sachant que une fois l'objet déclaré, il n'est plus accessible
pour d'autres postes (sauf en mode lecture seulement) ?

---------------


10 cible.Application.Quit


Et voilà!

Cordialement,
--
AP

"barbibul" a écrit dans le message de news:
447737d2$0$20882$
Bonjour à toutes et à tous,


Voici ma question :

je souhaite piloter un classeur fermé.

d'où le code :
__________________________________________________________
1 Sub testVariableObjet()
2
3 Dim cible As Workbook
4 Set cible = GetObject("C:DossierClasseur_test.xls")
5
6 '........................................'
7 'Diverses opérations sur l'objet "cible" '
8 '........................................'
9
10 Set cible = Nothing
11
12 End Sub
__________________________________________________________

Je pensais que "set cible = Nothing" suffisait à libérer le classeur.
Mais si je veux y accéder directement le doc est "déjà en utilisation"
et je ne peux l'ouvrir qu'en mode lecture.

en ajoutant ligne 9 :

cible.close

C'est ok. le classeur peut se lire normalement.

Pour une utilisation en mono-poste c'est ok.

Mais si je veux que le classeur soit accessible par plusieurs
postes ça se complique...

En effet quand un utilisateur lit des infos sur le classeur cible,
un autre utilisateur n'y aura sans doute pas accès avant qu'il
soit "close".

Voyez-vous une solution ?