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 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
Public DerLigne As Integer 'permet de trouver la dernière ligne
Dim ligne As Integer 'ligne correspondant à la date de vérif ds fichier domaine
Dim vligne As Integer 'ligne correspondant au domaine dans le fichier vérification
Public Date_Verif As Date 'la date choisie par l'utilisateur
Public Mois_Verif As Integer 'la mois correspondant à la date choisie
Public Annee_Verif As Variant 'l'année correspondant à la date choisie
Public rdate As String 'la date à rechercher ds le fichier de domaine
Public domaine As String 'le nom du domaine contrôlé
Public vplage As Range 'la plage des noms de domaine dans le fichier de vérification
Public Verif As Workbook 'fichier excel contenant la macro de vérification des données
Dim KPI As Workbook 'pour chaque fichier domaine qui s'ouvrira
Dim active As Workbook 'le fichier actif durant le run de la macro (test ou domaine)
Dim wksNewSheet As Worksheet 'le fichier domaine unitaire
Dim i As Variant 'variable utilisée pour boucle de recherche dans les lignes de données
Dim j As Variant 'variable utilisée pour boucle de recherche dans les colonnes de données
'
'
'
'
'
Sub Verif_Actuals()
Application.DisplayAlerts = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Set Verif = ActiveWorkbook 'on affecte le classeur à une variable pour faciliter l'utilisation
' On commence par effacer les données
Verif.Activate
Worksheets("Vérification").Range("J2:R76").ClearContents
Worksheets("Tools").Range("E4:G4").ClearContents
DerLigne = Sheets("Vérification").Range("A500").End(xlUp).Row 'trouve la dernière ligne de la colonne A avec des data
Application.Calculation = xlCalculationAutomatic
'On Error Resume Next
Choix_date.Show
Sheets.Add.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Fin " & Sheets("Tools").Range("F4") & "-" & Sheets("Tools").Range("G4")
Worksheets("Vérification").Activate
Sheets("Vérification").Range("A1:Z200").Copy
Sheets(Sheets.Count).Paste
rdate = Sheets("Tools").Range("E4") 'Pour stocker la date choisie sur une nouvelle variable
Call import
Verif.Activate
Sheets(Sheets.Count).Columns("A:AA").EntireColumn.AutoFit
MsgBox "La vérification est terminée"
Sheets(Sheets.Count).Activate
End Sub
'
'
'------------
'
'
Function ChoisirRepertoire() As String
Dim oFolder As Object
ChoisirRepertoire = ""
Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choisir un répertoire", 0)
If (Not oFolder Is Nothing) Then ChoisirRepertoire = oFolder.Items.Item.Path
Set oFolder = Nothing
End Function
'
'-------------
'
'
'
Sub import()
'Application.DisplayAlerts = False
MsgBox "Choisir le répertoire des KPI domain"
sNomRepertoire = ChoisirRepertoire ' demande de sélectionner le dossier contenant les fichiers domaines
If sNomRepertoire = "" Then
Exit Sub
End If
Path = sNomRepertoire
fichier = Dir(Path & "\*.xlsx ") 'définit les fichiers à importer en l'occurence tous les fichiers excel se trouvant dans ce répertoire
Do While fichier <> "" 'démarre la boucle jusqu'au dernier fichier disponible dans le répertoire
Dim plage As Range 'plage de dates à balayer dans fichier KPI
Dim c As Range
Dim n As Range
Dim i As Variant
Dim donnee_123 As Variant
Dim donnee_45 As Variant
Dim donnee_67 As Variant
Dim l_donnee_123 As Variant
Dim l_donnee_45 As Variant
Dim l_donnee_67 As Variant
Dim l_date As Variant
Dim vdate As Variant
Set vplage = Sheets("Vérification").Range("A2:A78")
Set WbSource = Workbooks.Open(Path & "\" & fichier) 'ouvre le fichier actuel à contrôler
Set wksNewSheet = WbSource.Sheets("Données") 'sélectionne la feuille de données à contrôler
Set plage = wksNewSheet.Range("A2:A66") 'l'ensemble des dates des fichiers domaines unitaires
wksNewSheet.Activate 'active cette feuille
domaine = wksNewSheet.Range("AA2").Value
'MsgBox domaine
For Each c In plage
If c.Value = rdate Then
ligne = c.Row
'MsgBox ligne
For Each n In vplage
If n.Value = domaine Then
vligne = n.Row
'MsgBox vlign
WbSource.Activate
For Each i In Array(5, 6, 7) ', 13, 14, 23, 25)
If IsError(Cells(ligne, i).Value) Then
Do While IsError(Cells(ligne, i).Value) 'tant qu'on trouve un NA, remonter dans la colonne pour trouver une valeur non NA
ligne = ligne - 1
Loop
l_donnee_123 = Cells(ligne, i).Value + Cells(ligne, i + 1).Value + Cells(ligne, i + 2).Value 'variable faisant la somme des 3 valeurs qui va être remplie dans le fichier
vdate = Cells(ligne, 1) 'on récupère la date correspondant à la valeur
'MsgBox vdate
Verif.Activate
Verif.Worksheets(Sheets.Count).Cells(vligne, 10) = "NO" 'Si on trouve un NA remplir NO
Verif.Worksheets(Sheets.Count).Cells(vligne, 11) = vdate
Verif.Worksheets(Sheets.Count).Cells(vligne, 12) = l_donnee_123
WbSource.Activate
Else 'si on trouve directement une valeur (la mise à jour a été faite)
donnee_123 = Cells(ligne, i).Value + Cells(ligne, i + 1).Value + Cells(ligne, i + 2).Value 'on récupère la somme des 3 données dans une variable
l_date = Cells(ligne, 1) 'on récupère la date correspondante
Verif.Activate
Verif.Worksheets(Sheets.Count).Cells(vligne, 10) = "YES" 'on vient remplir YES car la mise à jour a été faite
Verif.Worksheets(Sheets.Count).Cells(vligne, 11) = l_date 'on remplit la date correspondante (normalement la date rentrée par l'user vu que la maj est ok
Verif.Worksheets(Sheets.Count).Cells(vligne, 12) = donnee_123 'on rentre la valeur des données
End If
Next i
End If
Next n
End If
Next c
WbSource.Close 'ferme le fichier source
fichier = Dir 'va vers le fichier suivant à importer
' Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
'Une fois que la boucle fonctionne il faudra juste rajouter la recherche pour les 2 autres types de données
' :=False, Transpose:=False
Loop 'recommence la boucle avec le fichier suivant
End Sub |
Partager