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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| Public sD As Variant, S As String 'à mettre tout en haut avant le 1er Sub
Sub Compilations()
Dim Rep$, Fichier$, sD_Courant$, Choix_sD$, Rw As Range, R_Rw As Long, C_Rw As Integer
MsgBox Hoja1.UsedRange.Rows.Count
Hoja1.UsedRange.Select
Application.ScreenUpdating = False
Drt = ThisWorkbook.Path 'code permettant de déterminer quel type de séparation nous avons pour le chemin dans un répertoire
If InStr(Drt, "\") Then sep = "\" Else sep = ":" ' "\" => pour PC - ":" => pour MAC
Entete& = 2 'Choisir le nombre de ligne pour l'entête => Entête des fichiers sources se trouvant dans le sous-dossier => pour récup. données
sD_Courant$ = "Macompil" 'mettre le sous-dossier utilisé couramment
Choix_sD = MsgBox("Voulez-vous utiliser le sous-dossier courant", vbYesNo) 'sD pour "sous-dossier"
If Choix_sD = vbYes Then sD = sD_Courant Else sD = Application.InputBox("Mettre le nom du sous-dossier", "SOUS_DOSSIER")
On Error Resume Next
Dir (ThisWorkbook.Path & sep & sD & sep)
If sD = False Then
S = "Annulation de la copie"
GoTo Reponse
ElseIf sD = "" Then
S = "Aucun nom de sous-dossier entré"
GoTo Reponse
ElseIf Err.Number <> 0 Then
S = "Le dossier '" & sD & "' n'existe pas"
Err.Clear: On Error GoTo 0: GoTo Reponse
Else
S = "La MAJ du fichier est OK" & vbCrLf & "Sous-dossier choisi : " & sD
End If
Application.EnableEvents = False
Rep = ThisWorkbook.Path & sep & sD & sep
Fichier = Dir(Rep)
Do While Fichier <> ""
Application.EnableEvents = False
Workbooks.Open Workbooks(ActiveWorkbook.Name).Path & sep & sD & sep & Fichier
Application.EnableEvents = True
With Sheets("PA")
Set Rw = .UsedRange.Resize(.UsedRange.Rows.Count - Entete).Offset(Entete)
R_Rw = Rw.Rows.Count
C_Rw = Rw.Columns.Count
MsgBox R_Rw & " - " & C_Rw
Hoja1.UsedRange.Resize(R_Rw, C_Rw).Offset(Hoja1.Range("A" & Rows.Count).End(xlUp).Row).Value = Rw.Value 'dans Offset(Hoja1.Range("A" & Rows.Count) remplacer A par la colonne référentes aux infos pour avoir la dernière ligne non utilisé
End With
Set Rw = Nothing
Application.Workbooks(Fichier).Close False
ThisWorkbook.Activate
Fichier = Dir
Loop
Application.ScreenUpdating = True
Reponse:
MsgBox S
Application.Goto Cells(1), True
End Sub |
Partager