IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Vérifications de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 24
    Par défaut Vérifications de données
    Bonjour,c
    J'aimerais savoir comment vérifier l'existence des données. Dans les cellules E3, F3 et H3 j'ai de l’information obligatoires qui doit être rempli si j'ai de l'information dans la cellule C3. Comment faire pour effectuer la vérification? J'essaie mais rien ne fonctionne.

    Merci de votre précieuse aide
    Aimey

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible sans mise en forme conditionnelle dans le fichier joint, à adapter selon vos besoins : Pièce jointe 197721

    Le programme agit de deux manières :

    - Soit sur événement lors de la saisie d'une valeur sur la colonne C.
    - Soit globalement sur toute la colonne C via une macro déclenchée par un CommandButton.

    Dans un module baptisé Module_Controle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Option Explicit
     
    Sub ControlerUneFeuille(ByVal FeuilleControlee As Worksheet, ByVal LigneTitre As Long, ByVal ColonneControlee As Long)
     
    Dim DerniereLigneControle As Long
    Dim AireControlee As Range
    Dim CelluleControlee As Range
    Dim ResultatControle As String
     
        With FeuilleControlee
     
             DerniereLigneControle = .Cells(.Rows.Count, ColonneControlee).End(xlUp).Row
             ResultatControle = "Absence valeurs aux lignes : "
             If DerniereLigneControle > LigneTitre Then
     
                Set AireControlee = .Range(.Cells(LigneTitre + 1, ColonneControlee), .Cells(DerniereLigneControle, ColonneControlee))
                For Each CelluleControlee In AireControlee
                    If ControlerUneCellule(CelluleControlee) <> "Absence de valeur dans les cellules : " Then
                      ResultatControle = ResultatControle & CelluleControlee.Row & ", "
                    End If
                Next CelluleControlee
     
                If ResultatControle <> "Absence valeurs aux lignes : " Then
                    MsgBox ResultatControle, vbCritical, "Contrôle des saisies dans les colonnes E, F et H"
                End If
     
                Set AireControlee = Nothing
     
             End If
        End With
     
     
    End Sub
     
    Function ControlerUneCellule(ByVal CelluleControlee As Range) As String
     
     
        ControlerUneCellule = "Absence de valeur dans les cellules : "
        With CelluleControlee
             If .Value <> "" Then
                If .Offset(0, 2) = "" Then
                   .Offset(0, 2).Interior.Color = RGB(255, 0, 0)
                   ControlerUneCellule = ControlerUneCellule & .Offset(0, 2).Address & ", "
                Else
                   .Offset(0, 2).Interior.Color = xlNone
                End If
                If .Offset(0, 3) = "" Then
                   .Offset(0, 3).Interior.Color = RGB(255, 0, 0)
                   ControlerUneCellule = ControlerUneCellule & .Offset(0, 3).Address & ", "
                Else
                   .Offset(0, 3).Interior.Color = xlNone
                End If
                If .Offset(0, 5) = "" Then
                   .Offset(0, 5).Interior.Color = RGB(255, 0, 0)
                   ControlerUneCellule = ControlerUneCellule & .Offset(0, 5).Address
                Else
                   .Offset(0, 5).Interior.Color = xlNone
                End If
             End If
        End With
     
    End Function
    Dans le module de votre onglet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Option Explicit
     
    Private Sub BoutonControle_Click()
            ControlerUneFeuille Sheets("Feuil1"), 1, 3
    End Sub
     
    Private Sub WorkSheet_Change(ByVal ZZ As Range)
     
       If ZZ.Count > 1 Then Exit Sub
     
       If Not Application.Intersect(ZZ, Columns("C")) Is Nothing Then
         If ControlerUneCellule(ZZ) <> "Absence de valeur dans les cellules : " Then
             MsgBox ControlerUneCellule(ZZ)
         End If
       End If
     
       If Not Application.Intersect(ZZ, Columns("E")) Is Nothing Then If ZZ <> "" Then ZZ.Interior.Color = xlNone
       If Not Application.Intersect(ZZ, Columns("F")) Is Nothing Then If ZZ <> "" Then ZZ.Interior.Color = xlNone
       If Not Application.Intersect(ZZ, Columns("H")) Is Nothing Then If ZZ <> "" Then ZZ.Interior.Color = xlNone
     
    End Sub

    Cordialement.
    Dernière modification par Invité ; 12/01/2016 à 06h56.

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut Bonjour !
    Une autre voie (contrôle de la feuille active) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub DemoControleVide()
        If [C3].Value > "" Then
            AD = Filter(Filter(Evaluate("IF(E3:H3="""",ADDRESS(3,COLUMN(E3:H3),4))"), False, False), "G3", False)
            If UBound(AD) > -1 Then
                Range(AD(0)).Select
                MsgBox "Saisie manquante dans " & Join(AD, " & "), vbExclamation, "   Contrôle !"
            End If
        End If
    End Sub
    ______________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, …

Discussions similaires

  1. [MySQL] Vérification des données
    Par winkler dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/10/2006, 18h36
  2. Pb de vérification de données
    Par sagitarium dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/05/2006, 13h49
  3. Pb de vérification de données
    Par sagitarium dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 25/05/2006, 12h45
  4. Vérification de donné dans une table access
    Par xdiethank dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/05/2006, 15h29
  5. Avis sur la vérification des données d'une fiche
    Par AlexB59 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/07/2005, 20h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo