Exporter des donnée sur un autre classeur Excel fermé

Bonjour,

Comme base de mon problème j'ai un classeur excel (une main courante que j'appelle relève) que j'ai amélioré avec du VBA et des macros pour faciliter la tache de mes collègues.

Mon problème est que dans mon fichier il y avait des tableaux, ce qui est totalement incompatible avec le partage du document. J'ai dégagé en corner en créant un deuxième classeur (tableau de bord) qui quand on l'ouvre va "importer" des données dans mon premier classeur et les insère dans un tableau qui lui ne nécessite pas d'être partagé. Jusque là tout allait bien ... quand j'ai tenté de partager mon document "relève" je me suis trouvé face à un autre problème: j'utilise le VBA et les filtres pour pouvoir faire des totaux d'événements... le hic c'est que les filtre et le partage c'est pas compatible non plus.

J'ai dans l'idée de dégager les données qui doivent être filtrées dans mon classeur tableau de bord, mais cela rendrait difficile voir impossible l'établissement des données quotidiennes car ce classeur tableau de bord ne serait pas utilisé tous les jours et dans ce cas certains jours ne serai pas pris en compte...

du coup je dois prendre le problème dans l'autre sens je dois, à l'ouverture et lors de chaque sauvegarde de mon classeur relève (qui lui est ouvert tous les jours 24h24), exporter les données de la feuille "archives" sur mon classeur tableau de bord (qui lui sera principalement fermé).

Ce qui devrait donner à l'ouverture du classeur relève:

  • ouverture du classeur tableau de bord
  • copie des données de relève à tableau de bord
  • avant la fermeture du classeur tableau de bord (before closing) filtrer et extrapolé les chiffres nécessaires
  • fermer le classeur tableau de bord.

J'ai bien essayé d'adapter la formule d'importation que j'avais trouvée , mais je n'arrive pas à la faire fonctionner...

voici la formule originale

Private Sub Workbook_Open()

Dim classeurSource As Workbook, classeurDestination As Workbook

'ouvrir le classeur source (en lecture seule)

Set classeurSource = Application.Workbooks.Open("P:\Sg\OTP\09 Relève OTP\Releve OTP new.xlsm", , True)

'définir le classeur destination

Set classeurDestination = ThisWorkbook

'copier les données de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination

classeurSource.Sheets("Tableau de bord").Range("B5:G9999").Cells.Copy classeurDestination.Sheets("Archives").Range("A2")

'fermer le classeur source

classeurSource.Close False

End Sub

Je l'ai modifiée comme suit et placée dans relève

Private Sub Workbook_Open()

Dim classeurSource As Workbook, classeurDestination As Workbook

'définir le classeur source

Set classeurSource = ThisWorkbook

'définir le classeur destination

Set classeurDestination = Application.Workbooks.Open("P:\Sg\OTP\09 Relève OTP\Tableau de bord.xlsm", , True)

'copier les données de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination

classeurSource.Sheets("Archives").Range("A2:F9999").Cells.Copy classeurDestination.Sheets("Archives").Range("A2")

'fermer le classeur destination

classeurDestination.Close False

End Sub

Mais ça ne marche pas qq'un pourrait il me dire pourquoi?

Bonjour,

Si j'ai bien compris ton objectif ...

A tester ...

Private Sub Workbook_Open()
Dim classeurSource As Workbook, classeurDestination As Workbook

'définir le classeur source
Set classeurSource = ActiveWorkbook

'définir le classeur destination
Set classeurDestination = Application.Workbooks.Open("P:\Sg\OTP\09 Relève OTP\Tableau de bord.xlsm", , True)

'copier les données de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination
classeurSource.Sheets("Archives").Range("A2:F9999").Copy Destination:=classeurDestination.Sheets("Archives").Range("A2")

'fermer le classeur destination sans message
Application.DisplayAlerts = False
classeurDestination.Close SaveChanges:=True
Application.DisplayAlerts = True

End Sub

Merci pour ta réponse rapide

je vais tester ça de suite...

Bon on avance dans la bonne voie, mais ... car il y a un mais.... j'ai un message d'erreur qui me dit que le classeur de destination est en lecture seule....

Du coup il faut que je trouve comment ouvrir ce damné classeur en lecture écriture....

Edit en fait c'est pas vraiment un msg d'erreur... c'est plutôt que lors de la fermeture du classeur destination il ne sauvegarde pas mais enregistre sous...

Ja'i essayé ça :

'désactivation mode "lecture seule"

SetAttr "P:\Sg\OTP\09 Relève OTP\Tableau de bord.xlsm", vbNormal

Sans changement, ça me fait toujours un enregistrer sous....

Re,

Si on avance ... ce n'est déjà pas si mal ...

'définir le classeur destination
Set classeurDestination = Application.Workbooks.Open("P:\Sg\OTP\09 Relève OTP\Tableau de bord.xlsm")

Merci pour ta promptitude...

J'ai essayé ton code, mais lors de la fermeture du classeur destination, j'ai toujours un enregistrer sous....

Re,

'sauvegarder le classeur destination sans message
Application.DisplayAlerts = False
classeurDestination.Save
Application.DisplayAlerts = True

Là je crois que c'est tout bon ...j'ai rajouté la fermeture du classeur destination après ton code et les données sont copiées et tout baigne... reste plus qu'à m'atteler au classeur destination pour qu'il fasse ce que je veux before close....

Un GRAND Merci à toi...

Re,

Merci pour tes remerciements ...

Rechercher des sujets similaires à "exporter donnee classeur ferme"