Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 VBA, erreur si données non valides (validation de données)

MilkaQuercy

XLDnaute Nouveau
Bonjour,

J'arrive à activer via VBA, sur un onglet la fonction "Données > Validation de données > Entourer les données non valides".
Ce que je souhaiterais c'est renvoyer un message d'erreur si il y a bien des données non valides d'identifiées sur cet onglet.
Si pas de données non valides d'identifiées, je sors de l'onglet, sinon je reste et j'affiche ce message d'erreur.
Est-ce possible?
 
Solution
j'ai trouvé la solution, sur des forums en anglais :
VB:
    Dim WsVariantNC As Worksheet
    Dim data_range As Range
    Dim invalid_cell As Range
    Dim nr_invalid As Integer: nr_invalid = 0
    
    Set WsVariantNC = Worksheets("Variant_Module_Incompatibility")
    
    WsVariantNC.Activate

    Set data_range = WsVariantNC.Range("A1:K10000")

    ' Loop through each cell that has data validation and gets the number of invalid cells
    For Each invalid_cell In data_range
        If Not invalid_cell.Validation.Value Then
            nr_invalid = nr_invalid + 1
            If nr_invalid <> 0 Then
                MsgBox "Invalid Data has been found, it will be surrounded in red. Please correct them"...

MilkaQuercy

XLDnaute Nouveau
Bonjour Yeahou,

Merci pour ta réponse.
J'ai déjà tester l'enregistreur, ça ne répond pas à ma problématique
Pas besoin d'un fichier. Partons du principe que je met une validations de données sur une cellule d'un onglet. Peu importe, une longueur de texte mini, une liste déroulante...
Dans VBA, je met le code suivant :
VB:
Dim Ws As WorkSheet
    Set Ws = ActiveSheet
    Ws.CircleInvalid
Ce que je souhaite, c'est rajouté dans mon code un truc du genre :
If CircleInvalid = True Then
MsgBox ("Invalid Data Has Been Detected")
 

MilkaQuercy

XLDnaute Nouveau
j'ai trouvé la solution, sur des forums en anglais :
VB:
    Dim WsVariantNC As Worksheet
    Dim data_range As Range
    Dim invalid_cell As Range
    Dim nr_invalid As Integer: nr_invalid = 0
    
    Set WsVariantNC = Worksheets("Variant_Module_Incompatibility")
    
    WsVariantNC.Activate

    Set data_range = WsVariantNC.Range("A1:K10000")

    ' Loop through each cell that has data validation and gets the number of invalid cells
    For Each invalid_cell In data_range
        If Not invalid_cell.Validation.Value Then
            nr_invalid = nr_invalid + 1
            If nr_invalid <> 0 Then
                MsgBox "Invalid Data has been found, it will be surrounded in red. Please correct them"
                WsVariantNC.CircleInvalid
                Exit For
            End If
        End If
    Next
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…