Bonjour les amis du forum
Je viens à présent vers vous pour savoir s'il est possible, en vba, de vérifier si le classeur dans lequel ma macro envoie les données est déjà ouvert par un autre utilisateur ou non.
Nous travaillons à distance sur ces données, et donc les fichiers sont en lecture seule si déjà ouverts et donc ma macro ne passera pas si je ne peux pas tester si un autre utilisateur utilise déjà le tableau pour archiver ses données.
Ma macro :
Voilà
Vous remerciant par avance
Je viens à présent vers vous pour savoir s'il est possible, en vba, de vérifier si le classeur dans lequel ma macro envoie les données est déjà ouvert par un autre utilisateur ou non.
Nous travaillons à distance sur ces données, et donc les fichiers sont en lecture seule si déjà ouverts et donc ma macro ne passera pas si je ne peux pas tester si un autre utilisateur utilise déjà le tableau pour archiver ses données.
Ma macro :
Code:
Sub ArchiveFact()
Dim fact_num As Long
Dim fact_date As Date
Dim cmd_num As String
Dim cmd_date As Date
Dim nom_clt As String
Dim ech_date As Date
Dim tot_HT As Double
Dim num_ligne As Integer
Sheets("Facture").Activate
'collecte les infos de la facture
fact_num = Range("A14").Value
fact_date = Range("A16").Value
cmd_num = CStr(Range("C16").Value)
cmd_date = Range("D16").Value
nom_clt = CStr(Range("F9").Value)
ech_date = Range("H16").Value
tot_HT = Range("F43").Value
'teste si le classeur cible est déjà ouvert
'ouverture du classeur archive_facture2009.xls
Workbooks.Open "C:\Documents and Settings\Talzatior\Mes documents\Excel\Transfert de données par ADO dans un classeur fermé\Archives_test.xls"
Workbooks("Archives_test.xls").Activate
Sheets("Factures").Activate
'Cherche la première ligne vide
Range("A1").Select
While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Wend
'Défini le numéro de la première ligne vide dans la variable num_ligne
num_ligne = ActiveCell.Row
Worksheets("Factures").Cells(num_ligne, 1).Value = fact_num
Worksheets("Factures").Cells(num_ligne, 2).Value = fact_date
Worksheets("Factures").Cells(num_ligne, 3).Value = cmd_num
Worksheets("Factures").Cells(num_ligne, 4).Value = cmd_date
Worksheets("Factures").Cells(num_ligne, 5).Value = nom_clt
Worksheets("Factures").Cells(num_ligne, 6).Value = tot_HT
Worksheets("Factures").Cells(num_ligne, 9).Value = ech_date
Workbooks("Archives_test.xls").Save
Workbooks("Archives_test.xls").Close
Workbooks("Facture Source.xls").Activate
MsgBox "archivage de la facture n° " & fact_num & " effectué avec succès"
End Sub
Voilà
Vous remerciant par avance