Développer des contrôles de validation de données personnalisés, Excel VBA

Développer des contrôles de validation de données personnalisés, Excel VBA

Voici une explication détaillée et le code pour développer des contrôles de validation de données personnalisés en utilisant Excel VBA. Le code inclut des vérifications pour différents types de données et affiche des messages d’erreur lorsque des données invalides sont saisies.
Objectif :
Nous allons créer une solution de validation de données personnalisée en utilisant VBA dans Excel. Cela inclura :

  • Valider différents types de données (par exemple, numérique, date, longueur du texte, formules personnalisées).
  • Afficher des messages lorsque des données invalides sont saisies.
  • Empêcher les entrées invalides ou les corriger automatiquement.

1. Configuration et préparation :
Avant de commencer avec le code, assurez-vous que les macros sont activées dans Excel et que l’éditeur VBA est ouvert.
Pour ouvrir l’éditeur VBA :
Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
Insérez un nouveau module via Insertion -> Module dans l’éditeur VBA.
2. Code VBA pour des contrôles de validation de données personnalisés :
Ce code effectuera les tâches suivantes :

  • Valider si une cellule contient une valeur numérique.
  • Valider si une cellule contient une date dans une certaine plage.
  • Vérifier la longueur du texte dans une cellule.
  • Utiliser une validation de formule personnalisée.

Voici le code détaillé :

Sub CustomizedDataValidationChecks()
    Dim ws As Worksheet
    Dim cell As Range
    Dim inputValue As Variant
    Dim isValid As Boolean
    Dim validationType As String
    ' Définir la feuille de travail cible
    Set ws = ThisWorkbook.Sheets("Feuil1")  ' Modifiez selon votre besoin
    ' Boucle à travers la plage de cellules à valider (vous pouvez ajuster la plage)
    For Each cell In ws.Range("A1:A10") ' Modifiez cette plage selon votre besoin
        inputValue = cell.Value
        isValid = True ' On suppose que la valeur est valide à moins de prouver le contraire
        ' Ignorer les cellules vides
        If IsEmpty(inputValue) Then GoTo ContinueLoop
        ' Déterminer le type de validation en fonction de la colonne ou d'une autre condition
        validationType = DetermineValidationType(cell)
        Select Case validationType
            Case "Numeric"
                ' Vérifier si la valeur est numérique
                If Not IsNumeric(inputValue) Then
                    MsgBox "Entrée invalide dans la cellule " & cell.Address & ". Veuillez entrer une valeur numérique.", vbExclamation
                    cell.ClearContents ' Effacer l'entrée invalide
                    isValid = False
                End If
            Case "Date"
                ' Vérifier si la valeur est une date valide et si elle est dans une plage spécifique
                If Not IsDate(inputValue) Then
                    MsgBox "Date invalide dans la cellule " & cell.Address & ". Veuillez entrer une date valide.", vbExclamation
                    cell.ClearContents
                    isValid = False
                Else
                    ' Vérifier si la date est dans une plage spécifique (par exemple, entre le 01/01/2020 et le 31/12/2025)
                    If inputValue < DateSerial(2020, 1, 1) Or inputValue > DateSerial(2025, 12, 31) Then
                        MsgBox "La date dans la cellule " & cell.Address & " est hors de la plage autorisée. Veuillez entrer une date entre le 01/01/2020 et le 31/12/2025.", vbExclamation
                        cell.ClearContents
                        isValid = False
                    End If
                End If
            Case "TextLength"
                ' Vérifier si la longueur du texte est dans une plage spécifique
                If Len(inputValue) < 5 Or Len(inputValue) > 20 Then
                    MsgBox "Le texte dans la cellule " & cell.Address & " doit comporter entre 5 et 20 caractères.", vbExclamation
                    cell.ClearContents
                    isValid = False
                End If
            Case "CustomFormula"
                ' Utiliser une formule personnalisée pour la validation (par exemple, vérifier si la valeur commence par une lettre spécifique)
                If Not inputValue Like "A*" Then
                    MsgBox "La valeur dans la cellule " & cell.Address & " doit commencer par la lettre 'A'.", vbExclamation
                    cell.ClearContents
                    isValid = False
                End If
            Case Else
                ' Validation par défaut (si nécessaire)
                MsgBox "Aucune règle de validation définie pour la cellule " & cell.Address, vbInformation
        End Select
        ' Passer à la cellule suivante si la validation échoue
ContinueLoop:
    Next cell
    MsgBox "Vérification de la validation des données terminée !", vbInformation
End Sub
' Fonction pour déterminer le type de validation en fonction de la colonne ou d'autres critères
Function DetermineValidationType(cell As Range) As String
    If cell.Column = 1 Then
        ' La colonne A aura une validation numérique
        DetermineValidationType = "Numeric"
    ElseIf cell.Column = 2 Then
        ' La colonne B aura une validation de date
        DetermineValidationType = "Date"
    ElseIf cell.Column = 3 Then
        ' La colonne C aura une validation de longueur de texte
        DetermineValidationType = "TextLength"
    ElseIf cell.Column = 4 Then
        ' La colonne D aura une validation de formule personnalisée
        DetermineValidationType = "CustomFormula"
    Else
        ' Cas par défaut
        DetermineValidationType = "Default"
    End If
End Function

Explication du code :
1. Configuration de la feuille et de la plage :

  • Le code commence par définir la feuille de travail ws où la validation se déroulera.
  • La plage Range(« A1:A10″) spécifie que les vérifications de validation s’appliquent aux cellules de cette plage. Vous pouvez modifier cette plage selon vos besoins.

2. Boucle à travers chaque cellule :

  • Le code parcourt chaque cellule de la plage définie et récupère la valeur saisie dans la cellule (inputValue).

3. Validation selon la colonne :

  • La fonction DetermineValidationType attribue un type de validation spécifique à chaque colonne. Par exemple :
    • La colonne 1 (A) aura une validation numérique.
    • La colonne 2 (B) aura une validation de date.
    • La colonne 3 (C) vérifiera la longueur du texte.
    • La colonne 4 (D) appliquera une formule personnalisée pour la validation.
  • Cela permet d’avoir une validation flexible pour différentes colonnes.

4. Vérifications de validation des données :

  • Validation numérique : Vérifie que la valeur entrée est bien un nombre. Si ce n’est pas le cas, un message d’erreur est affiché et la cellule est vidée.
  • Validation de date : Vérifie si la valeur est une date valide et si elle est dans une plage spécifique (par exemple, entre le 01/01/2020 et le 31/12/2025).
  • Validation de longueur de texte : Vérifie que la longueur du texte est comprise entre 5 et 20 caractères.
  • Validation de formule personnalisée : Dans cet exemple, la règle personnalisée vérifie si la valeur commence par la lettre « A ». Vous pouvez modifier cette formule selon vos besoins.

5. Message d’erreur :

  • Si une entrée est invalide, une MsgBox apparaît pour alerter l’utilisateur du type d’erreur.
  • Les données invalides sont effacées de la cellule (cell.ClearContents), et l’utilisateur doit les corriger.

Comment exécuter le code :
1. Ouvrir l’éditeur VBA (Alt + F11).
2. Insérer un module (Cliquez sur Insertion -> Module).
3. Coller le code dans le module.
4. Exécuter le code en appuyant sur F5 ou en utilisant le bouton Exécuter dans l’éditeur.
Conseils de personnalisation :

  • Modifiez la plage Range(« A1:A10″) pour valider d’autres plages de cellules selon vos besoins.
  • Vous pouvez ajuster les règles de validation à l’intérieur du bloc Select Case pour les adapter à vos besoins, par exemple, en ajoutant de nouveaux types de validation.
  • Pour la validation de formule personnalisée, remplacez Like « A* » par la condition souhaitée (par exemple, vérifier si la valeur a une longueur spécifique, correspond à une expression régulière, etc.).

Cette approche fournit une méthode flexible et robuste pour gérer des contrôles de validation de données personnalisés dans Excel via VBA.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x