Bonjour Forum,
J'ai un bug dans une de mes macros et je me demande si c'est corrigeable ou si c'est l'idée qui est carrément mauvaise...
Je m'explique :
- J'ai trois fichiers : BdD.xls, SuiviDOC.xls et RechercheCR.xls
- Dans BdD.xls une macro avant fermeture appelle SuiviDOC.xls et y reporte des infos
Voici une partie du code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| ' Private Sub Workbook_Open()
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim BDD As Workbook
Set BDD = ActiveWorkbook
BDD.Sheets(1).Activate
Dim dlb As Integer
dlb = BDD.Sheets(1).Range("A65536").End(xlUp).Row
Application.DisplayAlerts = False
Dim TABL As Workbook
Set TABL = Workbooks.Open("T:\CHSF_Conception\Logiciels\SuiviDOC\SuiviDOC.xls")
Dim dlt As Integer
dlt = TABL.Sheets(1).Range("A65536").End(xlUp).Row + 1
Dim cex As Boolean
cex = True
For j = 9 To dlt
If (TABL.Sheets(1).Cells(j, 4) = BDD.Sheets(1).Cells(dlb, 4) & " n°" & BDD.Sheets(1).Cells(dlb, 11) And TABL.Sheets(1).Cells(j, 13) = BDD.Sheets(1).Cells(dlb, 6)) Then
cex = False
End If
Next j
If cex = True Then
TABL.Sheets(1).Cells(dlt, 1) = BDD.Sheets(1).Cells(dlb, 7)
TABL.Sheets(1).Cells(dlt, 2) = BDD.Sheets(1).Cells(dlb, 10)
' (...)
End If
TABL.Activate
Application.Save
TABL.Close
End Sub |
Important : lorsque je lance à la main BdD et que je le ferme, la macro fonctionne parfaitement
- Ma deuxième macro se trouve dans un formulaire de RechercheCR et appelle BdD pour y reporter des infos (ce triple appel est dû au fait que les fichiers sont publics et que différents intervenants sont susceptibles de changer différentes infos à différents stades du projet). Voici un extrait du code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Private Sub CommandButton1_Click()
Dim RECH As Workbook
Set RECH = ActiveWorkbook
Dim ProjectPath$
ProjectPath = ActiveWorkbook.Path
Application.DisplayAlerts = False
' (...)
' ETAT est un classeur associé à la base donnée et qui stocke les données de suivi
Dim ETAT As Workbook
Set ETAT = Workbooks.Open(ProjectPath & "\BdD.xls")
' (...)
Dim lig As Integer
lig = 6
ETAT.Sheets(1).Cells(lig, 1).Value = lig - 1
'(...)
ETAT.Activate
ETAT.Close
SIGNET.Hide
End Sub |
Le problème : quand j'execute cette macro, ça bug dans la macro BeforeClose() de la BdD.xls à cette ligne :
dlt = TABL.Sheets(1).Range("A65536").End(xlUp).Row + 1
avec ce msg d'erreur : variable d'objet ou variable de bloc With non définie
ma question : peut-on corriger le problème ou est-ce la philosophie d'une macro BeforeClose() appellé par un UserForm dans un autre fichier qui coince?
En vous remerciant,
Marc
Partager