Vérification de colonnes

Bonjour la team,

voilà, j'ai un souci avec mon fichier.

Je suis débutante en VBA, il est bon de préciser avant tout.

Je voudrais pouvoir mener une vérification automatiquement sur les colonnes de mon fichier via une macro.

J'ai des fichiers de plus de 50 colonnes avec des milliers de lignes.

Chaque fichier contient des colonnes obligatoires et certaines facultatives. Certains des clients qui devraient renseigner les données dans les fichiers ne respectent pas tout le temps les consignes et laisse vide des champs de données obligatoires.

Pourriez-vous me donner un code permettant de vérifier les fichier dès leur réception (surtout sur les colonnes obligatoires)?

Je compte bcp sur votre aide pour me tirer d'affaire.

Par avance, merci

Bonjour,

Pourrais-tu charger un fichier exemple, avec la précision des colonnes obligatoires, afin qu'on puisse se baser dessus pour la macro (qui sera forcément à adapter à ton fichier réel)

Bonjour Nono78,

merci pour ta réaction.

Ci-joint le fichier comme voulu.

Merci

8collab.xlsx (11.05 Ko)

Re,

Y a t-il une colonne dont tu es sure qu'elle est non vide? Le nom ou le prénom par exemple?

Toutes les colonnes marquées en jaune doivent obligatoirement être non vide. Cependant, il y a des clients qui laissent certaines cellules des colonnes obligatoires vides.

Par exemple, certains ont le nom et prénom renseignés et la cellule matricule vide.

Salut Bibine,Nono,

voici ton fichier! Je postule que ta ligne 2 (oui, non) est permanente! Si elle ne l'est pas, préviens-moi, sinon, cata!

La macro réagit au clic sur le petit bouton jaune dissimulé en A1 ou à un changement dans tes données et refait un contrôle général.

Dim tTab
Dim tMust
'
iRow = UsedRange.Rows.Count
iCol = Cells(1, Columns.Count).End(xlToLeft).Column
sCol = Split(Columns(iCol).Address(ColumnAbsolute:=False), ":")(1)
'
Application.ScreenUpdating = False
'
tTab = Range("A3:" & sCol & iRow)
tMust = Range("A2:" & sCol & 2)
Range("A3:" & sCol & iRow).Interior.Color = xlNone
'
For x = 1 To iRow - 2
    For y = 1 To iCol
        If LCase(tMust(1, y)) = "oui" And tTab(x, y) = "" Then Cells(x + 2, y).Interior.ColorIndex = 3
    Next
Next
'
Application.ScreenUpdating = True

Les cellules obligatoires non-complétées se colorent de rouge!

Bon travail!

A+

10collab.xlsm (28.07 Ko)

Bonjour curulis,

merci pour ton aide.

Concernant la ligne 2, elle n'est pas permanente.

Je l'ai laissé à titre indicatif, sinon elle disparaît des fichiers definitifs

Eeeet m...!

Bibine,

Je te fais une suggestion : tu prends ou tu jettes!

Garde cette ligne 2, rends les valeurs invisibles par la couleur de police et réduits la hauteur à sa plus simple expression!

Avantage : si une colonne devient obligatoire ou non-obligatoire, la modif est prise automatiquement en compte dans la macro qui, du coup, reste valable dans le temps!

Sinon, je refais ce que j'avais testé et réussi dans un premier jet de ton fichier mais qui rendrait plus difficile toute modif décrite plus haut!

A te lire.

Re,

curulis57 a raison, le mieux c'est de garder la ligne 2 pour que le fichier soit dynamique.

Sinon, voici une proposition sans la ligne 2 mais qu'il faut modifier si les colonnes obligatoires changent.

Les cellules vides apparaissent en rouge et tu as un onglet qui se crée avec un récap des colonnes concernées.

Option Explicit
Option Base 1
Sub verif_remplissage()
Dim i As Byte
Dim j As Byte
Dim Nbrecol As Byte
Dim Nbreligne As Double
Dim Cell As Range
Dim O(26) As String
Dim Obligatoire(26) As Variant
Dim Vide(26) As Variant
Dim plageDeRecherche

O(1) = "Matricule"
O(2) = "Nom patronymique"
O(3) = "Prénom"
O(4) = "Code établissement"
O(5) = "Date de début de contrat"
O(6) = "Actif"
O(7) = "Nom d’usage"
O(8) = "Date de naissance"
O(9) = "Sexe "
O(10) = "Type de contrat"
O(11) = "Taux horaire brut chargé"
O(12) = "CSP légale"
O(13) = "CSP conventionnelle"
O(14) = "Date d’entrée dans le groupe"
O(15) = "Date de sortie"
O(16) = "Référence de l’organisation fonctionnelle"
O(17) = "Référence de l’organisation  analytique"
O(18) = "Région RH"
O(19) = "Centre d’imputation comptable"
O(20) = "Matricule du responsable RH"
O(21) = "Matricule du manager "
O(22) = "Entité de gestion"
O(23) = "Référence de l’organisation géographique"
O(24) = "Handicap"
O(25) = "Date d’entrée dans la société"
O(26) = "Civilité"

Nbrecol = Application.WorksheetFunction.CountA(Rows(1))

Nbreligne = ActiveSheet.UsedRange.Rows.Count
Rows(1 & ":" & 1).Select

For i = 1 To UBound(O)

    Set plageDeRecherche = ActiveSheet.Rows(1)
     Set Cell = plageDeRecherche.Cells.Find(What:=O(i), LookAt:=xlWhole)
    Obligatoire(i) = Cell.Column
Next i

For j = 1 To 26
    For i = 1 To Nbreligne
        If IsEmpty(Cells(i, Obligatoire(j))) Then
            Cells(i, Obligatoire(j)).Interior.ColorIndex = 3
            Vide(j) = O(j)
        End If
    Next i
Next j

    Sheets.Add After:=Sheets(Sheets.Count)
    ActiveSheet.Name = "Colonnes av vide"

For i = 1 To UBound(Vide)
    Cells(i, 1).value = Vide(i)
Next i

End Sub

Salut Bibine, Nono,

voici ton fichier amélioré dans les deux versions : avec et sans la Ligne 2 (oui, non).

Amélioré dans le sens où une macro (petit bouton) calcule l'ensemble du tableau et une autre ne gère que le changement de valeur d'une cellule (plus rapide).

Tu choisiras en fonction de la réalité de ton travail, évidemment!

Arguments supplémentaires en faveur du maintien de cette ligne 2 bien pratique :

  • si une ou plusieurs colonnes devenaient obsolètes et devaient être éliminées, pas de souci : la macro gère le nombre variable de colonnes ;
  • en cas de nouvelles colonnes (pas oublier de mentionner le oui-non en Ligne 2) : la macro gère déjà l'élargissement.

Pas de changement de code nécessaire!

A+

8collabavecl2.xlsm (487.59 Ko)
11collabsansl2.xlsm (490.93 Ko)

Bonjour à tous,

grand merci pour vos retours.

Une autre question, Est ce que cette macro peut être appliquée à d'autres fichiers ayant les mêmes contraintes que celle-ci?

Bonjour Bibine,

à structure identique, si tu gardes ou insères la Ligne 2 (oui, non), ces macros devraient fonctionner sans modifications sans problème.

A tester quand même sur ces fichiers que je ne connais pas!

A+

Bonjour bibine, curulis,

@ Bibine que veux tu dire concrètement par les "mêmes contraintes"?

Je veux dire sur d'autres fichiers ayant aussi des colonnes obligatoires et des en-têtes différents.

Rechercher des sujets similaires à "verification colonnes"