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 :

Message erreur si même info dans colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Par défaut Message erreur si même info dans colonne
    Bonjour a tous.

    Voila en fait j'essaye de faire un message d'erreur si j'écris la même information non grisé dans la colonne. Je met le document joint pour les explications. Si vous avez une idée. J'ai essayé avec une variable type change mais je n'arrive pas au bout
    Si quelqu'un à une petite idée ??

    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    Bonjour, et bienvenue sur le forum.

    Essaie :
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim cell As Range, doublon As Range
        col = 3             ' la colonne à contrôler
        couleurIndex = 16   ' la couleur autorisée
        For Each cell In Target.Cells   ' parcourt toutes les cellules au cas ou plusieurs cellules copiées
            If cell.Column = col Then   ' seulement dans la colonne en question
                If cell = "" Then
                    If cell.NoteText <> "" Then cell.NoteText ""
                Else                    ' seulement si non vide
                    If cell.Interior.ColorIndex = couleurIndex Then
                            ' si couleur autorisée, ne rien faire
                        If cell.NoteText <> "" Then cell.NoteText ""
                    Else    ' si couleur non autorisée
                        existe = False ' autre valeur identique de couleur non autorisée
                        ' 1ere recherche de la valeur exacte dans la plage
                        Set doublon = Union(Me.Range(Me.Cells(1, col), cell.Offset(-1, 0)), _
                                Me.Range(Me.Cells(65536, col), cell.Offset(1, 0))).Find(What:=cell.Text, LookAt:=xlWhole, MatchCase:=False)
                        If Not doublon Is Nothing Then ' si autre valeur identique trouvée
                            ' parcourt cellule par cellule de la colonne
                            For i = Me.UsedRange.Row To Me.UsedRange.Rows.Count + Me.UsedRange.Row - 1
                                ' vérifie la valeur, la couleur dans autre cellule
                                If Me.Cells(i, col) = cell And Me.Cells(i, col).Interior.ColorIndex <> couleurIndex And i <> cell.Row Then
                                    ' affiche un commentaire
                                    cell.NoteText "Cette valeur existe déjà non grisée"
                                    existe = True
                                    Exit For
                                End If
                            Next i
                        End If
                        ' si rien trouvé, efface commentaire
                        If existe = False Then If cell.NoteText <> "" Then cell.NoteText ""
                    End If
                End If
            End If
        Next cell
    End Sub

  3. #3
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    je te propose ce code :

    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
    63
    64
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        '// Target représente la cellule qui vient d'être modifiée
     
        Dim MyRng   As Range        '// Plage pour le colonne allant de la cellule
                                    '   la ligne 1 de la colonne en cours jusque
                                    '   la cellule au-dessus de la cellule modifiée.
     
        Dim loopRng As Range        '// Plage pour la boucle de vérification
     
     
        '// Inutile de vérifier s'il n'y a qu'une seule ligne
        If Target.Row = 1 Then
            '// Sortir : rien à faire
            Exit Sub
     
        '// Si donc nous n'avons pas modifié la ligne 1
        Else
            '// Définition de la colonne depuis la première cellule de la colonne de la cellule modifiée
            '       jusqu'à la cellule jusqu'au-dessus de la cellule modifiée
            Set MyRng = Range(Target.EntireColumn.Range("A1"), Target.Offset(-1, 0))
     
            '// Si la modification a consisté en un effacement
            If IsEmpty(Target) Then
     
                '// Sortir : rien à faire
                Exit Sub
     
            '// Si la cellule modifiée n'est pas vide
            Else
     
                '// Commencer à boucler sur les cellules de la colonne
                For Each loopRng In MyRng.Cells
     
                    '// Si la cellule en cours n'est pas vide
                    If Not IsEmpty(loopRng) Then
     
                        '// Si la cellule modifiée n'est pas colorée, ou est colorée en blanc
                        If (loopRng.Interior.ColorIndex = xlColorIndexAutomatic Or loopRng.Interior.Color = vbWhite) Then
     
                            '// Si la cellule modifiée a la même valeur que la cellule de la boucle
                            If (Target.Value = loopRng.Value) Then
                                '// Afficher un message d'erreur
                                'MsgBox "La valeur '" & Target.Value & "' est déjà présente dans la colonne", _
                                            vbCritical, "Niet !"
     
                                '// Afficher l'intérieur de la cellule en rouge
                                Target.Interior.Color = vbRed
     
                                '// Sortir de la boucle
                                Exit For
     
                            '// Sinon
                            Else
                                '// Afficher l'intérieur de la cellule en blanc
                                Target.Interior.Color = vbWhite
     
                            End If
                        End If
                    End If
                Next
            End If
        End If
    End Sub

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Par défaut
    Salut !!

    merci les gars pour toute ces réponse !! c'est sympa

    A bientôt !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP-2007] Message erreur avec fonction "Modifier dans Microsoft Office Excel"
    Par Xorbane dans le forum SharePoint
    Réponses: 4
    Dernier message: 18/02/2011, 09h43
  2. Message erreur sur méthode Update dans une gridview
    Par zefog dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 22/02/2008, 12h00
  3. Réponses: 3
    Dernier message: 08/02/2008, 20h02
  4. Réponses: 2
    Dernier message: 01/06/2006, 14h54
  5. [Servlet - MySQL] Ca marche mais message d'erreur quand même
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/11/2004, 15h15

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