Récupération de données sur plusieurs fichiers (prob lecture seul)
Bonjour à vous,
J'ai une macro qui fonctionne très bien pour aller récupérer et additionner ces données provenant de plusieurs fichiers contenus dans un même dossier.
Voici ma macro:
Sub Actualisation()
' Microsoft ActiveX DataObject doit être coché
Dim LesLignes
Dim I As Integer, J As Integer, K As Integer
Dim Cnn As Object, Rs As Object
Dim Tbl
Dim Somme()
Application.ScreenUpdating = False
If Sheets("Sommaire").Range("B4") = "[Choisir votre section]" Then
Exit Sub
Else
Sheets("Sommaire").Unprotect "essai"
M_A_J.Show vbModeless 'affiche l'userform nommé "patience"
M_A_J.Repaint 'rafraichit le contenu à placer
'commence le traitement
ReDim Somme(1 To 312)
Chemin = ThisWorkbook.Path & "\": Feuille = "Sommaire"
LesLignes = Array(8, 10, 15, 17, 22, 24, 29, 31, 36, 38, 43, 45, 50, 52, 57, 59, 64, 66, 71, 73, 78, 80, 85, 87)
For J = LBound(LesLignes) To UBound(LesLignes)
For K = 1 To 13
Sheets("Sommaire").Cells(LesLignes(J), K).ClearContents
Next K
Next J
Fichier = Dir(Chemin & "*.xlsm")
Do While Len(Fichier) > 0
If Fichier <> ThisWorkbook.Name Then
Set Cnn = New ADODB.Connection
Cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
Chemin & Fichier & ";Extended Properties='Excel 12.0;HDR=No'"
Set Rs = Cnn.Execute("[Sommaire$A1:M87]")
Tbl = Rs.GetRows
I = 1
For J = LBound(LesLignes) To UBound(LesLignes)
For K = 1 To 13
Somme(I) = CDbl(Somme(I)) + CDbl(Tbl(K - 1, LesLignes(J) - 1)): I = I + 1
Next K
Next J
Rs.Close
Cnn.Close
End If
Fichier = Dir()
Loop
Set Rs = Nothing
Set Cnn = Nothing
With Sheets("Sommaire")
I = 1
For J = LBound(LesLignes) To UBound(LesLignes)
For K = 1 To 13
.Cells(LesLignes(J), K) = Somme(I): I = I + 1
Next K
Next J
End With
Unload M_A_J 'décharge l'userform de la mémoire
End If
Sheets("Sommaire").Protect "essai"
Application.ScreenUpdating = True
End Sub
J'ai une problématique lorsque le fichier est déjà ouvert par une autre utilisateur.
Le fichier tombe alors en lecture seul et un message d'erreur s'affiche.
Erreur d'exécution '1004':La cellule ou le graphique que vous essayer de modifier se trouve sur une feuille protégée. Pour apporter une modification à celui-ci, vous devez ôter la protection de la feuille....
Pourtant si aucun fichier n'est ouvert, je n'obtient pas ce message.
Est-ce possible de contourner cette erreur?
Ou faire en sorte que même si le fichier est ouvert d'aller récupérer les données en lecture seul!!
Merci de votre aide.