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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
| Public BDD As FileDialog 'déclare la variable BDD (Boîte de Dialogue Dossier)
Public CA As String 'déclare la variable CA (Chemin d'Accès)
Public CD As Workbook 'déclare la variable CD (Classeur Destination)
Public OD As Worksheet 'déclare la variable OD (Onglet Destination)
Public FS_SORTIE As String 'décalre la variable FS (Fichier Source)
Public FS_ENTRANT As String 'décalre la variable FS (Fichier Source)
Public CS_SORTIE As Workbook 'déclare la variable CS (Classeur Source)
Public OS_SORTIE As Worksheet 'déclare la variable OS (Onglet Source
Public MH_SORTIE As String
Public CS_ENTRANT As Workbook 'déclare la variable CS (Classeur Source)
Public OS_ENTRANT As Worksheet 'déclare la variable OS (Onglet Source)
Public MH_ENTRANT As String
Public DEST As Range 'déclare la variable DEST (celllue de DESTination)
Public Derligne As Long
Public Num_ope_entrant As Long
Public Num_ope_sortie As Long
Public LigneA As Long
Public LigneB As Long
Public Rng As Range
Public colonne_cours As Long
Public nbre_lignes_max_colonne_cours As Long
Public nbre_lignes_max_mh_entrant As Long
Public nbre_lignes_max_mh_sortant As Long
Public cle_cours As Variant
Option Explicit
Sub Extract_données()
1 Dim nb_caract As Long
2 Dim pos_anti As Long
3 Dim Fichier_dest As String
4 Application.Calculation = xlManual 'calcul en mode manuel
5 Application.ScreenUpdating = False 'ne pas mettre a jour l'ecran
6 Call Effacer_les_données
7 '*******************************************************************************************
8 '*******************************************************************************************
9 ' Partie recherche de données
10 CA = "\\192.168.1.5\Fichiers communs\INFORMATIQUE\Stat pour macro\PASSEPORT\Archives\" 'Definit l'emplacement du dossier CA
11 Set CD = ThisWorkbook 'définit la classeur destination CD
12 Set OD = CD.Sheets("INTERFACE") 'définit l'onglet destination OD (à adapter à ton cas, ici j'ai mis le premier onglet)
13 MH_SORTIE = Sheets("INTERFACE").Cells(8, 2).Value 'Definit la variable MH_SORTIE égale a la cellule A3 de la feuille interface
14 MH_ENTRANT = Sheets("INTERFACE").Cells(8, 6).Value 'Definit la variable MH_ENTRANT égale a la cellule D3 de la feuille interface
15 '*******************************************************************************************
16 '*******************************************************************************************
17 ' Partie recherche de données MH SORTIE
18 ' Definit le Nom de la serie _ le premier numero de serie et le derniere numero de serie
19 '*******************************************************************************************
20 compteA = InStr(MH_SORTIE, " ")
21 compteB = Len(MH_SORTIE)
22 compteC = InStr(MH_SORTIE, "-")
23 compteD = compteC - compteA - 2
24 compteE = compteB - compteC
25 type_MH_sortant = Left(MH_SORTIE, compteA - 1)
26 Num_Ser_sort_prem = Mid(MH_SORTIE, compteA + 1, compteD)
27 Num_Ser_sort_der = Mid(MH_SORTIE, compteC + 2, compteE)
28 '*******************************************************************************************
29 'Recherche dans le dossier le MH SORTIE
30 '*******************************************************************************************
31 Dim FSO As Scripting.FileSystemObject
32 Dim SourceFolder As Scripting.Folder
33 Dim SubFolder As Scripting.Folder
34 Dim FileItem As Scripting.File
35 Set FSO = CreateObject("Scripting.FileSystemObject")
36 Set SourceFolder = FSO.GetFolder(CA)
37 For Each FileItem In SourceFolder.Files
38 'FileItem.Name 'pour recup le nom de fichier
39 FS_SORTIE = FileItem
40 nb_caract = Len(FS_SORTIE)
41 pos_anti = InStrRev(FS_SORTIE, "\")
42 Fichier_dest = Right(FS_SORTIE, nb_caract - pos_anti - 11)
Debug.Print Fichier_dest
43 For Num_serie = Num_Ser_sort_prem To Num_Ser_sort_der
44 If Fichier_dest = type_MH_sortant & " " & Num_serie & ".xlsx" Then
45 Workbooks.Open FS_SORTIE 'ouvre le fichier source FS
46 Set CS_SORTIE = ActiveWorkbook 'définit le classeur source CS
47 Set OS_SORTIE = CS_SORTIE.Worksheets(1) 'définit l'onglet source OS (à adapter à ton cas, ici j'ai j'ai mis le premier onglet)
48 '*******************************************************************************************
49 '*******************************************************************************************
50 ' Partie copier / Coller MH SORTIE
51 '*******************************************************************************************
52 '*******************************************************************************************
53 Derligne = Cells(Rows.Count, 1).End(xlUp).Row 'cherche la derniere ligne du tableau
54 For LigneA = Derligne To 1 Step -1 'boucle de la derniere ligne a 1
55 If Not IsNumeric(Cells(LigneA, 1)) = True Or IsEmpty(Cells(LigneA, 1)) Then 'si la cellule n'est pas une valeur numerique ou si elle est vide
56 Rows(LigneA).Delete 'supprimer la ligne
57 End If 'fin de condition
58 Next LigneA 'ligne suivante
59 Derligne = Cells(Rows.Count, 1).End(xlUp).Row 'cherche la derniere ligne du tableau
60 OS_SORTIE.Range(Cells(1, 1), Cells(Derligne, 5)).Copy 'Copie le tableau
61 Workbooks("Listing vide de ligne.xlsm").Activate 'selectionne le classeur de desination
62 Worksheets(5).Activate 'selectionne l'onglet de destination
63 ActiveSheet.Name = "MH SORTANT " & MH_SORTIE 'renome l'onglet de destination
64 LigneB = Cells(Rows.Count, 1).End(xlUp).Row 'Affect le numero de la derniere ligne a la variable LigneB
65 Cells(LigneB, 1).Offset(1, 0).Select 'Selectionne la ligne en dessous de la derniere
66 ActiveSheet.Paste 'colle les données
67 Application.CutCopyMode = False 'Désactive le presse papier
68 CS_SORTIE.Close False 'ferme le claseur source CS (sans enregistrer)
69 'FS_SORTIE = Dir 'définit le prochain fichier source excel du dossier ayant CA comme chemin d'accès
70 'Loop 'boucle
71 Derligne = Cells(Rows.Count, 1).End(xlUp).Row 'cherche la derniere ligne du tableau
72 ActiveSheet.UsedRange.RemoveDuplicates Columns:=Array(1, 3), Header:=xlYes 'supprime les doublons
73 Cells(1, 1).Select
74 End If
75 Next
76 Next
End Sub |
Partager