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
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
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
Autres pages sur : macro mise forme conditionnelle help
Lassé par la pub ? Créez un compte
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
;
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
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
; 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
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
Ceci est un forum, pas un tchat. Tu viens quand tu veux quand tu peux.
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
)
Citation :
Je ne vois pas de mots en majuscule à la ligne
)
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.
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
Est ce qu'il faut donc que j'enlèves le Lcase et que que je mettes juste Select Case (.Cells(i))
: 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
Est ce qu'il faut donc que j'enlèves le Lcase et que que je mettes juste Select Case (.Cells(i))
: 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
Et oui, il faut faire attention à ce qu'on écrit.
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
Ton code devient, avec un peu d'arrangement
:
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
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
:
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
Lassé par la pub ? Créez un compte
- Contenus similaires :
- articlesMise en forme conditionnelle si et
- ForumMacro excel mise en forme conditionnelle
- ForumAjouter mise en forme conditionnelle
- ForumMacro mise en forme tableau
- ForumMacro mise en forme excel
- ForumVba mise en forme conditionnelle
- ForumExcel mise en forme conditionnelle
- ForumExcel mise en forme conditionnelle 3
- ForumExcel mise en forme conditionnelle 4
- ForumMise forme conditionnelle couleur
- Voir plus