Salut les petits loups !
Je vous expose un ptt pbme sur lequel je me casse la tête depuis 3 jours sans rien trouver comme solution (et sur ce coup là Google n'est pas mon pote).
Voila le topo :
- J'ai un fichier Excel avec deux onglets ainsi qu'une procédure Workbook_BeforeSave qui me permet de déplacer automatiquement les lignes à historiser du premier onglet vers le second onglet. Le code fonctionne correctement quand je ferme le classeur à la main. Voici un exemple simplifié de mon code (dans l'exemple je me contente de déplacer la dernière valeur du premier onglet dans le second).
- J'ai une base Access dans laquelle une macro ouvre le fichier Excel pour y mettre les lignes à jour.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Dim xlWsIn As Worksheet Dim xlWsOut As Worksheet Dim iLineToCopy As Integer Dim iLineToPaste As Integer Set xlWsIn = ActiveWorkbook.Worksheets(1) Set xlWsOut = ActiveWorkbook.Worksheets(2) iLineToCopy = 1 iLineToPaste = 1 Do Until xlWsIn.Range("A" & iLineToCopy + 1) = "" iLineToCopy = iLineToCopy + 1 Loop Do Until xlWsOut.Range("A" & iLineToPaste) = "" iLineToPaste = iLineToPaste + 1 Loop xlWsIn.Range("A" & iLineToCopy).Cut xlWsOut.Paste xlWsOut.Range("A" & iLineToPaste) Set xlWsIn = Nothing Set xlWsOut = Nothing
Voici mon pbme. Quand la macro Access ferme le fichier Excel, cela déclenche bien la procédure BeforeSave (testé en ajoutant des MsgBox dans le code) MAIS les instructions suivantes ne fonctionnent pas ! :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Dim xlApp As Excel.Application Dim xlWb As Excel.Workbook Dim xlWs As Excel.Worksheet 'Démarrage d'Excel Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True Set xlWb = xlApp.Workbooks.Open("C:\test.xls") xlWb.Worksheets(1).Range("A1").Value = Time() xlWb.Close True Set xlWb = Nothing Set xlApp = Nothing
Bref gros coup de pouce demandé car je ne m'y retrouve plus ! Etes vous au courant d'une limitation ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 xlWsIn.Range("A" & iLineToCopy).Cut xlWsOut.Paste xlWsOut.Range("A" & iLineToPaste)
Merci par avance.
Partager