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 :

Macro: case avec un like


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut Macro: case avec un like
    Bonjour,

    je souhaiterais créer une marco avec des case qui permettrait de colorier la cellule si le texte comprend une partie de texte:
    Exemple:
    si le texte de la cellule comprend le mot ART alors couleur bleue
    si le texte de la cellule comprend le mot BRE alors couleur rose

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lig As Byte, plage As Range
    If Intersect(Target, Range("E6:E95")) Is Nothing Then: Exit Sub
     
    lig = Target.Row
    Set plage = Range(Cells(lig, 5), Cells(lig, 5))
     
    Select Case Target
         Case like "*ART*"
            plage.Interior.ColorIndex = 41
         Case like "*BRE*"
            plage.Interior.ColorIndex = 38
     
        Case Else
            plage.Interior.ColorIndex = -4142 ' enlève la couleur
    End Select
     
    Set plage = Nothing
    End Sub
    J'ai des erreurs de syntaxe au niveau du like, pouvez-vous m'aider?
    Merci d'avance pour votre reponse.

  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
    Par défaut
    Bonjour,

    Lu dans l'aide en ligne à propos de l'instruction Select Case :

    expressionlist-n Si une instruction Case apparaît. Liste délimitée dont les éléments peuvent prendre l'une des formes suivantes : expression, expression To expression, Is comparisonoperator expression. Le mot clé To indique une plage de valeurs. Si vous utilisez To, la valeur la plus petite doit figurer avant To. Utilisez le mot clé Is avec les opérateurs de comparaison (sauf Is et Like) pour indiquer une plage de valeurs. S'il n'est pas indiqué, le mot clé Is est inséré automatiquement.
    et à la rubrique Like :

    opérateur de comparaison
    Caractère ou symbole indiquant une relation entre plusieurs valeurs ou expressions. Il s'agit notamment des opérateurs inférieur à (<), inférieur ou égal à (<=), supérieur à (>), supérieur ou égal à (>=), différent de (<>) et égal (=). Les opérateurs de comparaison Is et Like peuvent également être utilisés. N'oubliez pas que les opérateurs Is et Like ne peuvent servir d'opérateurs de comparaison dans une instruction Select Case.

  3. #3
    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
    Par défaut
    Bon...

    Alors ?

    Si tu as peu de cas à traiter : ===>>> des If imbriqués
    Si tu en as beaucoup, tu as intérêt à faire une fonction utilisant deux arrays...

    Un exermple bâclé qui devrait t'inspirer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButton1_Click()
      CommandButton1.BackColor = allons("bonjour", CommandButton1.BackColor)
      MsgBox "au suivant"
      CommandButton1.BackColor = allons("salut", CommandButton1.BackColor)
    End Sub
     
    Private Function allons(ch As String, c As Long) As Long
       mesfiltres = Array("*bon*", "*lu*", "*y*")
       mescouls = Array(vbRed, vbBlue, vbBlack)
       allons = c
       For i = 0 To UBound(mesfiltres)
         If ch Like mesfiltres(i) Then allons = mescouls(i): Exit For
       Next
    End Function
    Adapte...

Discussions similaires

  1. Utilisation d'une macro variable avec un like
    Par thomahh dans le forum Macro
    Réponses: 2
    Dernier message: 18/07/2012, 10h31
  2. [Hibernate] Requête avec un LIKE %% case insensitive
    Par n@n¤u dans le forum Hibernate
    Réponses: 4
    Dernier message: 21/06/2006, 17h27
  3. blocage avec mon like
    Par ouedmouss dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/09/2005, 14h20
  4. Problème avec un LIKE dans une procédure stockée
    Par Oluha dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/12/2004, 14h38
  5. Synthaxe pour expression comprenant quote avec commande like
    Par loopy4321 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/07/2004, 12h21

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