Bonjour,
Je reprends un message dans une nouvelle conversation parce que le sujet a un peu changé.
J'ai crée un classeur excel qui centralise des données dans le sens où il récupère les données de plusieurs autres classeurs bâtis de la même manière. Mon souci c'est que pour l'importation des données sur le fichier principal en question, cela demande à ouvrir les autres classeurs le temps de la copie et donc qu'ils soient préalablement fermés. Si le classeur est déjà ouvert, j'ai le message suivant:
machintruc.xls est déjà ouvert. Si vous l'ouvrez à nouveau, toutes vos modifications seront perdues. Voulez-vous rouvrir machintruc.xls?
Mais je n'y tiens pas non.
On m'a proposé une solution d'ouverture en lecture seule ce qui serait une très bonne chose. Mais la commande Readonly:=True ajoutée à mon code ne fonctionne pas.
Comment alors forcer l'ouverture de mes fichiers en lecture seule?
Ci-joint, mon code:
Et celui proposé qui ne fonctionne pas:
Je reprends un message dans une nouvelle conversation parce que le sujet a un peu changé.
J'ai crée un classeur excel qui centralise des données dans le sens où il récupère les données de plusieurs autres classeurs bâtis de la même manière. Mon souci c'est que pour l'importation des données sur le fichier principal en question, cela demande à ouvrir les autres classeurs le temps de la copie et donc qu'ils soient préalablement fermés. Si le classeur est déjà ouvert, j'ai le message suivant:
machintruc.xls est déjà ouvert. Si vous l'ouvrez à nouveau, toutes vos modifications seront perdues. Voulez-vous rouvrir machintruc.xls?
Mais je n'y tiens pas non.
On m'a proposé une solution d'ouverture en lecture seule ce qui serait une très bonne chose. Mais la commande Readonly:=True ajoutée à mon code ne fonctionne pas.
Comment alors forcer l'ouverture de mes fichiers en lecture seule?
Ci-joint, mon code:
Code:
Private Sub CommandButton2_Click()
Dim wbk As Workbook, awbk As Workbook
Dim wsh As Worksheet
Dim Fich As String
Dim Ligne As Double
Application.ScreenUpdating = False
Set awbk = ThisWorkbook
Set wsh = awbk.Sheets("Donnees regroupees")
Fich = Dir("C:\Users\M\Documents\*.xls")
Do While Fich <> ""
With wsh
Ligne = .Range("A65536").End(xlUp).Row + 1
Set wbk = Workbooks.Open("C:\Users\M\Documents\Fla\" & Fich)
wbk.Sheets("Decompte temps").Range("listeplagesource").Copy.Cells(Ligne, 1)
End With
wbk.Close False
Fich = Dir
Set wbk = Nothing
Loop
Set wsh = Nothing
Set awbk = Nothing
Application.ScreenUpdating = True
End Sub
Et celui proposé qui ne fonctionne pas:
Code:
Private Sub CommandButton2_Click()
Dim wbk As Workbook, awbk As Workbook
Dim wsh As Worksheet
Dim Fich As String
Dim Ligne As Double
Application.ScreenUpdating = False
Set awbk = ThisWorkbook
Set wsh = awbk.Sheets("Donnees regroupees")
Fich = Dir("C:\Users\M\Documents\*.xls")
Do While Fich <> ""
With wsh
Ligne = .Range("A65536").End(xlUp).Row + 1
Set wbk = Workbooks.Open("C:\Users\M\Documents\Fla\" & Fich, [COLOR="Red"]ReadOnly:=True[/COLOR])
wbk.Sheets("Decompte temps").Range("listeplagesource").Copy.Cells(Ligne, 1)
End With
wbk.Close False
Fich = Dir
Set wbk = Nothing
Loop
Set wsh = Nothing
Set awbk = Nothing
Application.ScreenUpdating = True
End Sub