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 :

Cell.Interior.Color avec exception [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2014
    Messages : 13
    Par défaut Cell.Interior.Color avec exception
    Bonjour à tous,

    L'idée de base est un code VBA pour une plage donnée qui si une des cellules est non vide il force les majuscule et colorie la case en gris mais il doit faire une exception pour les textes suivants "M", "S", "M." ou "S." si une case à un de ces quatre texte la il force toujours les majuscule mais ne colore pas la case.

    Ci-dessous le code qui fonctionne mais je ne vois pas comment gérer les quatre exceptions.

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rng As Range
        Dim cell As Range
     
        ' Spécifiez la plage à surveiller (C12:T377)
        Set rng = Me.Range("C12:T377")
     
        ' Vérifiez si la modification a eu lieu dans la plage surveillée
        If Not Intersect(Target, rng) Is Nothing Then
            Application.EnableEvents = False ' Désactive les événements pour éviter une boucle infinie
            On Error Resume Next ' Gère les erreurs si des cellules vides sont rencontrées
            For Each cell In Target
                If cell.value <> "" Then
                    cell.value = UCase(cell.value) ' Convertit le texte en majuscules
                    cell.Interior.Color = RGB(192, 192, 192) ' Gris
                Else
                    cell.Interior.ColorIndex = xlNone ' Efface la couleur de fond
                End If
            Next cell
            On Error GoTo 0 ' Réactive la gestion des erreurs
            Application.EnableEvents = True ' Réactive les événements
        End If
    End Sub
    Je précise la plage de cellule contient des cellules fusionnées.

    Si quelqu'un a une idée cela m'aiderai bien.

    Merci.

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    978
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 978
    Par défaut
    Bonsoir, teste ça:

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rng As Range
        Dim cell As Range
        Dim exceptionValues As Variant
        Dim isException As Boolean
        Dim i As Long
     
        ' Spécifiez la plage à surveiller (C12:T377)
        Set rng = Me.Range("C12:T377")
     
        ' Valeurs d'exception
        exceptionValues = Array("M", "S", "M.", "S.")
     
        ' Vérifiez si la modification a eu lieu dans la plage surveillée
        If Not Intersect(Target, rng) Is Nothing Then
            Application.EnableEvents = False ' Désactive les événements pour éviter une boucle infinie
            On Error Resume Next ' Gère les erreurs si des cellules vides sont rencontrées
            For Each cell In Target
                If cell.Value <> "" Then
                    ' Vérifie si la valeur est une exception
                    isException = False
                    For i = LBound(exceptionValues) To UBound(exceptionValues)
                        If UCase(cell.Value) = exceptionValues(i) Then
                            isException = True
                            Exit For
                        End If
                    Next i
     
                    ' Si c'est une exception, force les majuscules mais ne colore pas la cellule
                    If Not isException Then
                        cell.Value = UCase(cell.Value) ' Convertit le texte en majuscules
                        cell.Interior.Color = RGB(192, 192, 192) ' Gris
                    Else
                        cell.Value = UCase(cell.Value) ' Convertit le texte en majuscules
                        cell.Interior.ColorIndex = xlNone ' Efface la couleur de fond
                    End If
                Else
                    cell.Interior.ColorIndex = xlNone ' Efface la couleur de fond
                End If
            Next cell
            On Error GoTo 0 ' Réactive la gestion des erreurs
            Application.EnableEvents = True ' Réactive les événements
        End If
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2014
    Messages : 13
    Par défaut
    Merci Franc pour ta réponse,

    Malheureusement cela ne gère pas non plus l'exception.
    J'ai joins le fichier si cela peut aider.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    978
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 978
    Par défaut
    Tu n'avais pas tout dit! Les couleurs de tes cellules sont le résultat d'une MFC, moi je ne sais pas comment l'outrepasser pour changer la couleur, désolé

  5. #5
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur de gestion

    Informations forums :
    Inscription : Février 2014
    Messages : 13
    Par défaut
    Bonjour Franc,

    Merci de ton aide maintenant cela fonctionne, effectivement je ne pensai plus à mes MFC et en ajustant celle-ci et ton code j'ai résolu le problème

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

Discussions similaires

  1. cells interior color index
    Par manuhell601 dans le forum Excel
    Réponses: 3
    Dernier message: 04/04/2023, 18h42
  2. [XL-2003] Probleme avec la propriété "Interior.Color"
    Par polo92 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/03/2015, 17h55
  3. Porblème avec Except
    Par kooljy dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/06/2006, 11h34
  4. [RegEx] Rechercher n'importe quel nombre, avec exceptions
    Par alex.hitman dans le forum Langage
    Réponses: 6
    Dernier message: 27/03/2006, 20h23
  5. [JButton] Background non coloré avec LnF Windows
    Par leminipouce dans le forum Composants
    Réponses: 7
    Dernier message: 03/10/2005, 13h48

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