Visual Basic For Applications
Une macro VBA pour vérifier un fichier Excel automatiquement !
Une solution pour vérifier vos données et détecter d’éventuelles anomalies dans vos fichiers Excel.
Principe de la macro VBA de vérification de fichier Excel
La macro VBA que nous vous proposons ci-dessous vous permet de vérifier le nombre de données contenues dans chacune des colonnes d’une feuille de votre fichier Excel.
Le code vous fournie un récapilatif synthétique de ce que votre feuille contient. Vous pourrez ainsi voir si des données sont manquantes dans une de vos colonnes.
Cette macro VBA évite de devoir faire la vérification manuellement et permet de cadrer son fichier Excel.
Le cadrage peut être défini comme le recensement des informations contenues dans une fichier. C’est une sorte d’état des lieux.
Fonctionnement de l’outil
La macro VBA peut être utilisée dans n’importe lequel de vos fichiers Excel. Pour la faire fonctionner il suffit de suivre les quelques étapes ci-dessous :
- Copier/coller le code dans votre éditeur VBA.
- Vous placer sur la feuille à analyser.
- Lancer la macro.
- Aller à l’onglet “CADRAGE” pour avoir les résultats.
En effet, la macro va créer un onglet “CADRAGE” dans votre fichier que vous pourrez par la suite supprimer. Cet onglet va contenir tous les entêtes de colonnes de votre fichier et vous indiquer le nombre de cellule non-vide par colonne.
Le code calcul ensuite 2 autres informations :
- La différence du nombre de valeur de la colonne par rapport à la colonne qui à le maximum de valeur.
- La différence du nombre de valeur de la colonne par rapport au MODE.
Ces 2 indicateurs doivent vous permettre d’identifier des défauts dans vos colonnes même si elles ne devraient potentillement pas toutes avoir le même nombre de valeurs.
Pensez à supprimer l’onglet CADRAGE si vous lancez la macro une 2ème fois afin qu’elle puisse fonctionner.
Le code VBA
'Auteur : www.Indexmatch.fr 'Date : 03/2018 Option Explicit Sub CADRAGE_FICHIER() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim LastColumnNumber As Integer Dim LastRowNumber As Integer Dim RowCounter As Integer Dim ColumnCounter As Integer Dim FramingCounter As Integer Dim ColumnName As String Dim FramingSheetCounter As Integer Dim TargetSheetName As String Dim Max As Integer Dim Mode As Integer TargetSheetName = ActiveSheet.Name Sheets.Add.Name = "CADRAGE" Range("A1").Value = "INTITULE_COLONNE" Range("B1").Value = "CADRAGE" Range("C1").Value = "ECART_AVEC_MAX" Range("D1").Value = "ECART_AVEC_MODE" Sheets(TargetSheetName).Select LastColumnNumber = Cells.SpecialCells(xlCellTypeLastCell).Column LastRowNumber = Cells.SpecialCells(xlCellTypeLastCell).Row ColumnCounter = 1 FramingSheetCounter = 2 Do 'boucle à travers les colonnes RowCounter = 2 FramingCounter = 0 Do 'boucle à travers les lignes If Columns(ColumnCounter).Find("*") Is Nothing Then Exit Do ColumnName = Cells(1, ColumnCounter) If Cells(RowCounter, ColumnCounter).Value <> "" Then FramingCounter = FramingCounter + 1 RowCounter = RowCounter + 1 Loop Until RowCounter = LastRowNumber + 1 Sheets("CADRAGE").Select 'Complète l'onglet de cadrage Cells(FramingSheetCounter, 1).Value = ColumnName ColumnName = "" Cells(FramingSheetCounter, 2).Value = FramingCounter FramingSheetCounter = FramingSheetCounter + 1 Sheets(TargetSheetName).Select ColumnCounter = ColumnCounter + 1 Loop Until ColumnCounter = LastColumnNumber + 1 Sheets("CADRAGE").Select Max = Application.WorksheetFunction.Max(Range("B:B")) Mode = Application.WorksheetFunction.Mode(Range("B:B")) FramingCounter = 2 Do While FramingCounter <= Cells.SpecialCells(xlCellTypeLastCell).Row Cells(FramingCounter, 3).Value = Max - Cells(FramingCounter, 2).Value Cells(FramingCounter, 4).Value = Mode - Cells(FramingCounter, 2).Value FramingCounter = FramingCounter + 1 Loop Application.DisplayAlerts = True End Sub |