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?