Macro

Fermé
camille - 15 avril 2009 à 11:37
m@rina Messages postés 21056 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 octobre 2024 - 15 avril 2009 à 20:15
Bonjour,

Voila, j'ai un classeur Excel, ou sur une feuille des exploitants transports remplissent toutes leurs demandes de transport qu'ils créent, et à partir de ce tableau je calcul grâce au tableau croisé dynamique le taux de service des transporteurs. Ce classeur devait être partagé, mais j'ai vu qu'il était impossible de partagé un classeur si il y a des tableaux croisé dynamique ou plutot que ceci ne marcheront plus.
J'aimerais donc trouver une solution macro ou autre qui me permettra de selectionner toute ma feuille de mon classeur (celui renseigné par les exploitants) et de l'envoyer dans un autre classeur afin que je puisse faire les TCD sans partager le fichier cette fois ci.

J'espère que j'ai été clair, c'est vraiment urgent

Merci d'avance
A voir également:

7 réponses

qmike Messages postés 1509 Date d'inscription mardi 19 juillet 2005 Statut Membre Dernière intervention 18 juin 2012 594
15 avril 2009 à 11:40
bonjour

oui tu devrais nous dire quels sont les calculs souhaités
en effet, dans bien des cas, la formule sommeprod peut remplacer les résultats d'un TCD
bonne journée
0
les calculs se sont les calculs des taux de services des transporteurs. Dans le fichier les exploitants précise la date de livraison prévu et réel et en fonction de ces données j'ai fait une programmation qui me dit si la livraison a été faite en retard, liv ok ou en avance, et c'est a partir de ces données que je fais mes TCD pour déterminer le pourcentage de LIV OK.... pour chacun des transporteurs.
0
m@rina Messages postés 21056 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 octobre 2024 11 337
15 avril 2009 à 12:43
Bonjour

Une idée comme ça en passant :
Et si tu créais une macro qui fasse un double enregistrement à chaque enregistrement : le classeur original et une copie non partagée ? Ainsi tu pourrais faire ce que tu veux avec tes tableaux croisés à partir de cette copie...

m@rina
0
Oui c'est une bonne idée, mais je ne sais pas comment faire..... je suis pas très doué en informatique, pourrais tu m'expliquais stp?

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
m@rina Messages postés 21056 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 octobre 2024 11 337
15 avril 2009 à 13:52
En simplifiant à l'extrême, voilà ce qu'on peut faire :

Tu copies-colles cette macro dans le module ThisWorkBook :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
FileCopy ActiveWorkbook.FullName, "C:\version2.xls"
End Sub

Evidemment, il faut départager et déprotéger pour mettre la macro. Ensuite tu reprotèges avec partage.

Quand l'utilisateur fermera le document, celui-ci sera enregistré également en copie sous le nom "version2.xls" (dans mon exemple).
Evidemment, la macro sera recopiée aussi. Pour éviter l'erreur qui va fatalement survenir quand tu voudras fermer la version2, j'ai juste mis un "On Error Resume Next".

Avec cette fonction simplissime, on ne peut pas créer un classeur avec déprotection et en fait, je ne pense que ce n'est pas souhaitable car dans la version2, c'est bien que tu puisses voir les modifs qui ont été faites. Tu pourras le déprotéger manuellement, c'est rapide.

J'ai prévu cette macro à la fermeture du fichier parce que si on la prévoit à la sauvegarde, la copie sera toujours N-1... Le risque c'est que l'utilisateur sauvegarde sans fermer... Aussi on peut peut être prévoir la macro également à la copie...

Mais bon, peut être que d'autres intervenants auront plus d'idées ! ;))

m@rina

0
Je viens de copier coller comme tu m'as dit, mais lorsque je fais executer sa me demande le nom de la macro.....
Désolé de mon niveau pitoyable :-(
0
m@rina Messages postés 21056 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 11 octobre 2024 11 337
15 avril 2009 à 20:15
La macro est une macro événementielle, cela signifie qu'elle s'exécute automatiquement selon l'événement qui est ici la fermeture du fichier. On ne peut pas la lancer manuellement.

Donc, mets ta macro (dans le module WorkBook), enregistre et ferme pour tester.

m@rina
0