Se connecter avec
S'enregistrer | Connectez-vous

Macro mise en forme conditionnelle help !

Dernière réponse : dans Programmation

bonjour,
je ne comprends pas pourquoi ce code ne marche pas sur VBA alors que je l'ai deja utilisé sur une autre feuille !!!
le message signalé est objet requis. Merci d'avance

Option Explicit

  1. Private Sub Worksheet_Change(ByVal target As Range)
  2. Dim iSect As Range, i As Long
  3. Set iSect = Intersect([E2:J200], target)
  4.  
  5. If iSect Is Nothing Then Exit Sub
  6. With iSect
  7.  
  8.  
  9. For i = 1 To .Cells.Count
  10. Select Case LCase(.Cells(i))
  11.  
  12. Case "Adéquat"
  13. .Cells(i).Interior.ColorIndex = 4
  14. Case "Adéquat avec PA"
  15. .Cells(i).Interior.ColorIndex = 8
  16. Case "Non Adéquat Avec PA"
  17. .Cells(i).Interior.ColorIndex = 12
  18. Case "Non Applicable"
  19. .Cells(i).Interior.ColorIndex = 16
  20. Case "Efficace"
  21. .Cells(i).Interior.ColorIndex = 20
  22. Case "Efficace avec PA"
  23. .Cells(i).Interior.ColorIndex = 24
  24. Case "Non Efficace"
  25. .Cells(i).Interior.ColorIndex = 25
  26. Case "Non Testé"
  27. .Cells(i).Interior.ColorIndex = 31
  28. Case "Non Testable"
  29. .Cells(i).Interior.ColorIndex = 34
  30. Case "OUI"
  31. .Cells(i).Interior.ColorIndex = 34
  32. Case "ENCOURS"
  33. .Cells(i).Interior.ColorIndex = 34
  34. Case "NON COMMENCE"
  35. .Cells(i).Interior.ColorIndex = 34
  36. Case "SOLDE"
  37. .Cells(i).Interior.ColorIndex = 34
  38.  
  39. Case Else
  40.  
  41. .Cells(i).Interior.ColorIndex = xlNone
  42.  
  43. End Select
  44.  
  45. Next
  46.  
  47. End With
  48.  
  49. End Sub
Lassé par la pub ? Créez un compte
Expert Programmation

Bonjour,

A quelle ligne le problème survient-il ?

_____________
NB 1: Et ce bout de code fonctionne ?
Ligne 10, tu mets en minuscule un mot que tu compares à des tas d'autres choses, jamais en miniscule :/ 
_____________
NB 2: Merci d'indenter ton code, c'est juste plus sympa à lire.

Rebonjour!

Desolée !!! Des problemes recurrents avec internet ces tempsci m'ont empechée de me connecter ! Alors je n'ai toujours pas résolu mon problème :cry:  ;
NB1 :En fait cette macro vient d'une biblio de macro que je m'étais faite il y longtemps sur word ; je ne retrouve pas le fichier excel d'origine mais je sui sure ... qu'il avait marché.

le code s'execute mais mon tableau ne prends pas les couleurs et reste tout blanc.
Je ne vois pas de mots en majuscule à la ligne 10 zeb



  1. Private Sub MFC()
  2.  
  3. Dim iSect As Range, i As Long
  4. Set iSect = [E2:J200]
  5. If iSect Is Nothing Then Exit Sub
  6.  
  7. With iSect
  8. For i = 1 To .Cells.Count
  9.  
  10. Select Case LCase(.Cells(i))
  11.  
  12. Case "Adéquat"
  13. .Cells(i).Interior.ColorIndex = 4
  14. Case "Adéquat avec PA"
  15. .Cells(i).Interior.ColorIndex = 8
  16. Case "Non Adéquat Avec PA"
  17. .Cells(i).Interior.ColorIndex = 12
  18. Case "Non Applicable"
  19. .Cells(i).Interior.ColorIndex = 16
  20. Case "Efficace"
  21. .Cells(i).Interior.ColorIndex = 20
  22. Case "Efficace avec PA"
  23. .Cells(i).Interior.ColorIndex = 24
  24. Case "Non Efficace"
  25. .Cells(i).Interior.ColorIndex = 25
  26. Case "Non Testé"
  27. .Cells(i).Interior.ColorIndex = 31
  28. Case "Non Testable"
  29. .Cells(i).Interior.ColorIndex = 34
  30. Case "OUI"
  31. .Cells(i).Interior.ColorIndex = 34
  32. Case "ENCOURS"
  33. .Cells(i).Interior.ColorIndex = 34
  34. Case "NON COMMENCE"
  35. .Cells(i).Interior.ColorIndex = 34
  36. Case "SOLDE"
  37. .Cells(i).Interior.ColorIndex = 34
  38.  
  39. Case Else
  40. .Cells(i).Interior.ColorIndex = xlNone
  41.  
  42. End Select
  43. Next
  44. End With
  45. End Sub



Expert Programmation

Ceci est un forum, pas un tchat. Tu viens quand tu veux quand tu peux. ;) 

Citation :
Je ne vois pas de mots en majuscule à la ligne
Pour l'indentation, c'est autant pour ce qui te lisent ici que pour toi. Je ne te demandais pas de tout réécrire. Qu'importe, merci. Mais par contre, tu vas aller me lire l'aide de la fonction LCase(), la copier ici, et après tu me reposes ta question. (Dépêche-toi, j'ai déjà ta réponse ;)  )

LCase, fonction

Renvoie une chaîne qui a été convertie en minuscules.

Syntaxe

LCase(chaîne)

L'argument chaîne est toute expression de chaîne valide. Si l'argument chaîne contient la valeur Null, Null est renvoyé.

Notes :
Seules les lettres majuscules sont converties en minuscules ; toutes les lettres minuscules et les caractères qui ne sont pas des lettres restent inchangés.


ahhhh Lcase ok :whistle: 

Est ce qu'il faut donc que j'enlèves le Lcase et que que je mettes juste Select Case (.Cells(i)) :bounce: : Dans mon tableau rien n'est en minuscule comme tu disais....

J'ai testé et ça marche par contre les couleurs ne sont absolument pas pas celles que javais prevues et certaines cases ne sont pas colorées
Expert Programmation

Et oui, il faut faire attention à ce qu'on écrit.

débutantedina <> DebutanteDina

Il faut faire attention aux majuscules, minuscules, accents, etc.

Une façon élégante de faire est de tout mettre en minuscule/sans accent dans le programme. Ainsi, on laisse à l'utilisateur le confort de ne pas s'en occuper.

Voici une petite fonction pour supprimer les signes diacritiques les plus courants
  1. Function SupprimeDiacritique(ByVal s As String) As String
  2. Const lettres_d = "åäãâáàÅÄÃÂÁÀëêéèËÊÉÈïîíìÏÎÍÌöõôóòÖÕÔÓÒüûúùÜÛÚÙÿýŸÝñçÑÇ"
  3. Const lettres_0 = "aaaaaaAAAAAAeeeeEEEEiiiiIIIIoooooOOOOOuuuuUUUUyyYYncNC"
  4.  
  5. Dim i As Integer
  6.  
  7. For i = 1 To Len(lettres_d)
  8. s = Replace(s, Mid(lettres_d(i, 1)), Mid(lettres_0(i, 1)))
  9. Next
  10. SupprimeDiacritique = s
  11. End Function


Ton code devient, avec un peu d'arrangement ;)  :
  1. Private Sub MFC()
  2. Dim cellule As Range
  3.  
  4. For cellule In Range("E2:J200")
  5. Select Case LCase(SupprimeDiacritique(cellule.Value))
  6. Case "adequat": cell.Interior.ColorIndex = 4
  7. Case "adequat avec pa": cell.Interior.ColorIndex = 8
  8. Case "non adequat avec pa": cell.Interior.ColorIndex = 12
  9. Case "non applicable": cell.Interior.ColorIndex = 16
  10. Case "efficace": cell.Interior.ColorIndex = 20
  11. Case "efficace avec pa": cell.Interior.ColorIndex = 24
  12. Case "non efficace": cell.Interior.ColorIndex = 25
  13. Case "non teste": cell.Interior.ColorIndex = 31
  14. Case "non testable": cell.Interior.ColorIndex = 34
  15. Case "oui": cell.Interior.ColorIndex = 34
  16. Case "encours": cell.Interior.ColorIndex = 34
  17. Case "non commence": cell.Interior.ColorIndex = 34
  18. Case "solde": cell.Interior.ColorIndex = 34
  19. Case Else : cell.Interior.ColorIndex = xlNone
  20. End Select
  21. Next
  22. End Sub
Lassé par la pub ? Créez un compte