Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

classeur partagé et vba

49 views
Skip to first unread message

kikigames

unread,
Oct 19, 2000, 3:00:00 AM10/19/00
to
Bonjour, je voudrais savoir s'il est possible de partager un fichier et de
pouvoir aussi utiliser les macro de ce même classeur

merci à vous

Laurent Longre

unread,
Oct 19, 2000, 3:00:00 AM10/19/00
to

Je ne crois pas que ce soit possible.

Mais tu pourrais peut-être essayer de placer les macros dans un autre
classeur non partagé (donc simplement lu en lecture seule), qui
manipulerait le classeur partagé?

Laurent

kikigames a écrit :

kikigames

unread,
Oct 20, 2000, 3:00:00 AM10/20/00
to
bonjour laurent et merci de t'intéresser à ma question,
en fait, je voudrais pouvoir partagé un classeur sur un réseau, les
utilisateurs du réseau pourraient le modifier le lire etc...

Pourquoi ? tout simplement parce que c'est un planning où différentes
personnes ont besoin d'y faire des changements, les macros posent donc un
problème

si tu as une solution, n'hésite pas, je t'en remercie par avance

:0)

kikigames

unread,
Oct 23, 2000, 3:00:00 AM10/23/00
to

Alexandra Kramoroff

unread,
Oct 25, 2000, 3:00:00 AM10/25/00
to
Bonjour,

Je viens de débarquer sur ce newsgroup, qui m'a l'air fort sympa :-)
Et justement, j'ai exactement le même problème de tableau de planning
bourré de macros et modifié par une dizaine de personnes à la fois.
Jusqu'à présent, le fichier est sur le réseau, mais des modifications
simultanées et surtout la tenue d'un historique sont impossibles,
puisque "classeur partagé" et "macros" me semblent incompatibles.

Laurent, as-tu essayé ta solution ? Fonctionne-t-elle ? Si oui, comment
"transporte-t-on" ce fichier ? Toujours accompagné de son classeur de
macro ?
Car je dois mailer le planning toutes les semaines à des gens qui
utilisent eux aussi ces macros... sans avoir besoin de classeur partagé
car ils sont non connectés au réseau.

Merci d'avance :-)
Alexandra

Laurent Longre a écrit :

Laurent Longre

unread,
Oct 26, 2000, 11:09:39 AM10/26/00
to

Alexandra,

Alexandra Kramoroff a écrit :


>
> Je viens de débarquer sur ce newsgroup, qui m'a l'air fort sympa :-)
> Et justement, j'ai exactement le même problème de tableau de planning
> bourré de macros et modifié par une dizaine de personnes à la fois.
> Jusqu'à présent, le fichier est sur le réseau, mais des modifications
> simultanées et surtout la tenue d'un historique sont impossibles,
> puisque "classeur partagé" et "macros" me semblent incompatibles.
>
> Laurent, as-tu essayé ta solution ? Fonctionne-t-elle ?

C'était juste une idée en l'air, mais oui, je viens de tester et ça
fonctionne très bien.

A mon avis, le mieux est de passer par une macro complémentaire
référencée par le classeur à partager:

- Déplace toutes tes macros dans un nouveau classeur, que tu enregistres
avec le type "macro complémentaire" (par exemple Test.xla) dans le même
répertoire que le classeur à partager (Test.xls)

- Ouvre la macro complémentaire Test.xla.

- Dans l'éditeur VBA, fais Outils -> Propriétés de VBAProject et donne
un nom personnalisé au projet du fichier XLA, par exemple "Macros", puis
enregistre-le.

- Ouvre le classeur à partager (Test.xls), va dans l'éditeur VBA, fais
Outils -> Référence, et coche "Macros".

Que ce soit sur le poste où il est stocké ou sur les autres postes du
réseau, l'ouverture de Test.xls entraînera automatiquement celle de la
macro complémentaire Test.xla.

Bien sûr, il faudrait que tu modifies les macros en mettant des
références explicites au classeur:
Workbooks("Test.xls").Sheets(1).Range("A1") à la place de
Sheets(1).Range("A1"), par exemple.

Seul inconvénient avec ce système : la macro complémentaire restera
ouverte après la fermeture du classeur.

Pour éviter cela et sans trop compliquer les choses, tu peux tester à
intervalles régulières, dans la macro XLA, si le classeur partagé a été
fermé, auquel cas le XLA se fait aussitôt hara-kiri:

Dans le module ThisWorkbook du XLA :

Dim Wbk As Workbook

Private Sub Workbook_Open()
Set Wbk = ActiveWorkbook
Vérif
End Sub

Private Sub Vérif()
If TypeName(Wbk) = "Object" Then Me.Close
Application.OnTime Now + #12:01:00 AM#, "ThisWorkbook.Vérif"
End Sub

(Attention : non testé !)

> Si oui, comment
> "transporte-t-on" ce fichier ? Toujours accompagné de son classeur de
> macro ?

Oui. Du moment que le classeur et la macro complémentaire sont copiés
dans le même dossier, ça marche comme sur des roulettes, sans manip
supplémentaire.

Bonne chance,

Laurent

Flo

unread,
Oct 26, 2000, 11:42:31 AM10/26/00
to

Laurent Longre <laurent...@free.fr> a écrit dans le message :
39F84933...@free.fr...


>
> Alexandra,
>
> Alexandra Kramoroff a écrit :

incompatibles.
> >
> > Laurent, as-tu essayé ta solution ? Fonctionne-t-elle ?
>
> C'était juste une idée en l'air, mais oui, je viens de tester et ça
> fonctionne très bien.
>

Merci beaucoup Laurent pour avoir mis ceci au point, l'avoir testé et
l'avoir expliqué clairement.
J'avais exactement le même pb à résoudre, mais vu les précédentes réponses
je me voyais mal partie
y'a plus qu'à faire un super rechercher remplacer pour préciser toutes les
références !
Est ce qu'on ne pourrait pas mettre cette réponse dans la FAQ ?
Flo


Laurent Longre

unread,
Oct 26, 2000, 1:54:51 PM10/26/00
to

Flo,

Flo a écrit :


>
> y'a plus qu'à faire un super rechercher remplacer pour préciser toutes les
> références !

En fait, ça s'impose pas. Si tu utilises 'Sheets(1)' dans un module
standard, implicitement ça correspond à 'ActiveWorkbook.Sheets(1)' pour
VBA. Donc il n'y a pas lieu de changer tout ça dans la macro.

La seule exception, c'est le module ThisWorkbook. Là, VBA considère que
l'objet parent par défaut est ThisWorkbook et non pas ActiveWorkbook.
Donc c'est plutôt dans ce module qu'il faut préciser par exemple
ActiveWorkbook.Sheets(1) ou alors Workbooks("Test.xls").Sheets(1).

Autre point : les procédures événementielles et le code inscrit dans des
modules de feuilles de calcul. Là, il faudrait revoir le code à fond,
remplacer les anciennes P.E. par des P.E. de niveau Application, les
contrôles de la barre d'outils "Commandes" par ceux de la barre d'outils
"Formulaires", en leur attachant les macros du fichier XLA, etc. etc. Un
peu la galère. Mais s'il n'y a rien de tout ça dans le classeur, les
adaptations devraient rester mineures.

Laurent

kikigames

unread,
Oct 26, 2000, 3:21:07 PM10/26/00
to
merci beaucoup pour ces explications très détaillées, je vais essayer de
réaliser tout ça !?


encore merci

;0)


0 new messages