Macro mise en forme conditionnelle help !

Debutantedina

Nouveau membre
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

[cpp]

Private Sub Worksheet_Change(ByVal target As Range)
Dim iSect As Range, i As Long
Set iSect = Intersect([E2:J200], target)

If iSect Is Nothing Then Exit Sub
With iSect


For i = 1 To .Cells.Count
Select Case LCase(.Cells(i))

Case "Adéquat"
.Cells(i).Interior.ColorIndex = 4
Case "Adéquat avec PA"
.Cells(i).Interior.ColorIndex = 8
Case "Non Adéquat Avec PA"
.Cells(i).Interior.ColorIndex = 12
Case "Non Applicable"
.Cells(i).Interior.ColorIndex = 16
Case "Efficace"
.Cells(i).Interior.ColorIndex = 20
Case "Efficace avec PA"
.Cells(i).Interior.ColorIndex = 24
Case "Non Efficace"
.Cells(i).Interior.ColorIndex = 25
Case "Non Testé"
.Cells(i).Interior.ColorIndex = 31
Case "Non Testable"
.Cells(i).Interior.ColorIndex = 34
Case "OUI"
.Cells(i).Interior.ColorIndex = 34
Case "ENCOURS"
.Cells(i).Interior.ColorIndex = 34
Case "NON COMMENCE"
.Cells(i).Interior.ColorIndex = 34
Case "SOLDE"
.Cells(i).Interior.ColorIndex = 34

Case Else

.Cells(i).Interior.ColorIndex = xlNone

End Select

Next

End With

End Sub

[/cpp]
 

zeb

Modérateur
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.
 

Debutantedina

Nouveau membre
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



[cpp]
Private Sub MFC()

Dim iSect As Range, i As Long
Set iSect = [E2:J200]
If iSect Is Nothing Then Exit Sub

With iSect
For i = 1 To .Cells.Count

Select Case LCase(.Cells(i))

Case "Adéquat"
.Cells(i).Interior.ColorIndex = 4
Case "Adéquat avec PA"
.Cells(i).Interior.ColorIndex = 8
Case "Non Adéquat Avec PA"
.Cells(i).Interior.ColorIndex = 12
Case "Non Applicable"
.Cells(i).Interior.ColorIndex = 16
Case "Efficace"
.Cells(i).Interior.ColorIndex = 20
Case "Efficace avec PA"
.Cells(i).Interior.ColorIndex = 24
Case "Non Efficace"
.Cells(i).Interior.ColorIndex = 25
Case "Non Testé"
.Cells(i).Interior.ColorIndex = 31
Case "Non Testable"
.Cells(i).Interior.ColorIndex = 34
Case "OUI"
.Cells(i).Interior.ColorIndex = 34
Case "ENCOURS"
.Cells(i).Interior.ColorIndex = 34
Case "NON COMMENCE"
.Cells(i).Interior.ColorIndex = 34
Case "SOLDE"
.Cells(i).Interior.ColorIndex = 34

Case Else
.Cells(i).Interior.ColorIndex = xlNone

End Select
Next
End With
End Sub




[/cpp]


 

zeb

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

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 ;) )
 

Debutantedina

Nouveau membre
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.


 

Debutantedina

Nouveau membre
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
 

zeb

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

[fixed]débutantedina <> DebutanteDina[/fixed]
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
Code:
Function SupprimeDiacritique(ByVal s As String) As String
    Const lettres_d = "åäãâáàÅÄÃÂÁÀëêéèËÊÉÈïîíìÏÎÍÌöõôóòÖÕÔÓÒüûúùÜÛÚÙÿýŸÝñçÑÇ"
    Const lettres_0 = "aaaaaaAAAAAAeeeeEEEEiiiiIIIIoooooOOOOOuuuuUUUUyyYYncNC"
    
    Dim i As Integer
    
    For i = 1 To Len(lettres_d)
        s = Replace(s, Mid(lettres_d(i, 1)), Mid(lettres_0(i, 1)))
    Next
    SupprimeDiacritique = s
End Function

Ton code devient, avec un peu d'arrangement ;) :
Code:
Private Sub MFC()
    Dim cellule As Range

	For cellule In Range("E2:J200")
	    Select Case LCase(SupprimeDiacritique(cellule.Value))
		    Case "adequat":             cell.Interior.ColorIndex =  4
		    Case "adequat avec pa":     cell.Interior.ColorIndex =  8
		    Case "non adequat avec pa": cell.Interior.ColorIndex = 12
		    Case "non applicable":      cell.Interior.ColorIndex = 16
		    Case "efficace":            cell.Interior.ColorIndex = 20
		    Case "efficace avec pa":    cell.Interior.ColorIndex = 24
		    Case "non efficace":        cell.Interior.ColorIndex = 25
		    Case "non teste":           cell.Interior.ColorIndex = 31
		    Case "non testable":        cell.Interior.ColorIndex = 34
		    Case "oui":                 cell.Interior.ColorIndex = 34
		    Case "encours":             cell.Interior.ColorIndex = 34
		    Case "non commence":        cell.Interior.ColorIndex = 34
		    Case "solde":               cell.Interior.ColorIndex = 34
		    Case Else :                 cell.Interior.ColorIndex = xlNone
	    End Select
	Next
End Sub
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 846
Membres
1 586 373
Dernier membre
https://forum.tomshardwar
Partager cette page
Haut