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 :

Problème avec un code VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut Problème avec un code VBA
    Bonjour à tous,

    Le code ci-dessous me permet de colorer des cellules lorsqu'un doublon est signalé. Ce que je ne comprends pas, c'est que les cellules b1:b4, ce colorent en rouge dès que je saisie des données dans n'importe quelle cellule.
    Pouvez-vous m'aider à comprendre ou me montrer mon erreur ?
    Je vous en remercie par avance

    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
    Private Sub Worksheet_change(ByVal Target As Range)
        If Target.Count > 1 Or Target.Column <> 2 Then Exit Sub
    Test
    End Sub
     
    Sub Test()
    Dim I As Integer, J As Integer, X As Byte, C As Range, DerL As Integer
        Application.ScreenUpdating = False
            Range("B6:B3000").Interior.ColorIndex = xlNone
        X = 3
            DerL = Cells(Rows.Count, 2).End(xlUp).Row
        For I = 1 To DerL - 1
            If Cells(I, 2).Interior.ColorIndex = xlNone Then
                If X < 57 Then
                    X = X
                Else
                    X = 3
                End If
            For J = I + 1 To DerL
                If Cells(J, 2) = Cells(I, 2) Then
                    Cells(I, 2).Interior.ColorIndex = X
                    Cells(J, 2).Interior.ColorIndex = X
                End If
            Next
            End If
            X = X + 1
        Next
    Application.ScreenUpdating = True
    End Sub

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    déjà, j'ai des difficultés à comprendre ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Count > 1 Or Target.Column <> 2 Then Exit Sub
    quelle que soit la valeur de target.Count, donc ... (car par exemple 0 est < 1 mais est bien différent de 2 !!! et ... OR veut dire ou... Il en va de même de 2 car 2 rentre dans le cas admis par Or de > 1 ...)

  3. #3
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut Ucfoutu,

    quelle que soit la valeur de target.Count, donc ... (car par exemple 0 est < 1 mais est bien différent de 2 !!! et ... OR veut dire ou... Il en va de même de 2 car 2 rentre dans le cas admis par Or de > 1 ...)
    Je ne te suis pas bien dans ton raisonnement car le test n'est pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Target.Count > 1 Or Target.Count  <> 2 Then Exit Sub
    mais bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Target.Count > 1 Or Target.Column <> 2 Then Exit Sub

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour ucfoutu,

    J'ai trouvé ce code dans le forum, je l'ai appliqué et il fonctionne.
    Je ne comprends pas tout non plus, alors je ne saurai t'expliquer cette ligne. Si un expert peu le faire cela pourrait éclairer notre lanterne.

    De plus, je viens de m'apercevoir, qu'à chaque nouvelle saisie, les lignes dèjà colorées changent à nouveau de couleur, elles ne sont pas stables ?????????

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_change(ByVal Target As Range)
        If Target.Count > 1 Or Target.Column <> 2 Then Exit Sub
    Test
    End Sub
    Je comprends très bien que cette procédure fonctionne puisque "Target.Count" ne peut être inférieur à 1 (il faut bien qu'une cellule soit modifiée pour que la procédure soit lancée).

    Sachant cela, si plusieurs cellules sont sélectionnées quelle que soit la colonne ou si une seule cellule est sélectionnée dans une autre colonne que la 2, la procédure "Test" ne se lance pas et tout va bien.

    Par contre ce que je ne comprends pas très bien c'est pourquoi dans la procédure "Test" vous sélectionnez la plage "B6:B3000" puis dans la boucle vous démarrez avec une valeur de "I" = 1 ?

    Ne devrait-elle pas démarrer à :

    et d'autre part pourquoi "DerL - 1" ?

    il est certain que le contenu de l'avant-dernière ligne ne peut pas être égal au contenu de la dernière ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Finalement j'ai testé votre code.

    En dehors du cas que j'évoquais qui fait que sur les lignes 1 à 5 certaines ont été colorées et que la couleur n'est pas modifiée du fait que vous avez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B6:B3000").Interior.ColorIndex = xlNone
    tout fonctionne bien chez moi.

    Que contiennent vos cellules B1 à B5 ?

  7. #7
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Citation Envoyé par jacques_jean Voir le message
    Que contiennent vos cellules B1 à B5 ?
    Deux boutons (Faire un choix et Fermer)

    Bonjour JacquesJean,

    Effectivement j'ai remplacé 1 par 6 et je ne rencontre plus ce problème.
    Merci pour cette info

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

Discussions similaires

  1. [XL-2010] Problème avec le code VBA
    Par mimiaqu dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/04/2013, 20h52
  2. [XL-2003] Problème avec un code en Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2009, 09h34
  3. Problème avec un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/10/2007, 16h43
  4. [MySQL] OU est le probléme avec ce code ??
    Par adlich dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/04/2006, 17h47
  5. Problème avec open() [Excel VBA]
    Par heddicmi dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 16h21

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