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).
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
- 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
    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
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
    xlWsIn.Range("A" & iLineToCopy).Cut
    xlWsOut.Paste xlWsOut.Range("A" & iLineToPaste)
Bref gros coup de pouce demandé car je ne m'y retrouve plus ! Etes vous au courant d'une limitation ?
Merci par avance.