Oui c'est bien ça!
Je veux colorer dans les colonnes C à F seulement si dans les cellules de C à F ne sont pas vide.
Merci!
Oui c'est bien ça!
Je veux colorer dans les colonnes C à F seulement si dans les cellules de C à F ne sont pas vide.
Merci!
Bonjour,
De cette façon alors :
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 Private Sub Worksheet_Change(ByVal Target As Range) Dim Cel As Range 'si sélection de plus d'une cellule, fin ! If Target.Count > 1 Then Exit Sub 'si la modif est faite en colonne B... If Target.Column = 2 Then 'les quatres colonne de droite (C, D, E et F) 'vont prendre la couleur qui est fonction de la lettre entrée en cellule B With Target.Offset(0, 1).Resize(, 4) On Error Resume Next Set Cel = .SpecialCells(xlCellTypeBlanks) If Err.Number = 0 Then .Interior.ColorIndex = xlNone 'rien Exit Sub End If Select Case Target.Value 'UCase(Target.Value)<-- si on veut I et i concidéré comme identique Case "I": .Interior.ColorIndex = 3 'Rouge Case "P": .Interior.ColorIndex = 33 'Bleu Case "E": .Interior.ColorIndex = 43 'Vert Case "F": .Interior.ColorIndex = 44 'Orange Case Else: .Interior.ColorIndex = xlNone 'rien End Select End With End If End Sub
SALUT THEZE
ca ne serait pas plutôt après non?
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 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim Cel As Range 'si sélection de plus d'une cellule, fin ! If Target.Count > 1 Then Exit Sub 'si la modif est faite en colonne B... If Target.Column = 2 Then 'les quatres colonne de droite (C, D, E et F) 'vont prendre la couleur qui est fonction de la lettre entrée en cellule B With Target.Offset(0, 1).Resize(, 4) Select Case Target.Value 'UCase(Target.Value)<-- si on veut I et i concidéré comme identique Case "I": .Interior.ColorIndex = 3 'Rouge Case "P": .Interior.ColorIndex = 33 'Bleu Case "E": .Interior.ColorIndex = 43 'Vert Case "F": .Interior.ColorIndex = 44 'Orange Case Else: .Interior.ColorIndex = xlNone 'rien End Select On Error Resume Next Set Cel = .SpecialCells(xlCellTypeBlanks) If Err.Number = 0 Then .Interior.ColorIndex = xlNone 'rien Exit Sub End If End With End If End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Bonjour,
Dans vos deux cas, ce que j'observe c'est que la ligne entière ne se colore pas.
Ce que je cherche à faire c'est de colorer uniquement les cellules de la place C1 à F pour lesquelles il y a une valeur.
Si la cellule est vide alors elle doit être blanche.
Merci encore
autant pour moi
j'ai copier betement le code de theze
met cel devant .Interior.ColorIndex = xlNone 'rien
Code : Sélectionner tout - Visualiser dans une fenêtre à part cel.Interior.ColorIndex = xlNone 'rien
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Super, ça fonctionne...
Et si je veux que la couleur s'applique également lors d'un changement dans une cellule C à F, est-ce que je peux ajouter une condition comme ce qui suit?
Ça ne semble pas fonctionner...
Actuel:
Souhaité:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'si la modif est faite en colonne B... If Target.Column = 2 Then
Après ceci ce sera parfait!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'si la modif est faite en colonne B... ou C ou D ou E ou F If Target.Column = 2 or Target.Column = 3 or Target.Column = 4.... Then
Merci
bonsoir
oui tu peux exactement comme ca
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Rebonjour,
J'ai fait les ajustements et mon code fonctionne à merveille! Un gros merci!
Je me questionne sur la façon de pouvoir répéter mon code sur N cellule sans avoir a l'écrire pour toutes les colonnes.
SVP voir mon commentaire dans le milieu du code... il doit y avoir une façon de répéter pour les colonnes.
Le hic c'est que j'ai une section dans mes colonnes que je ne veux pas mettre de MFC.
Mon vrai fichier de travail contient près de 150 colonnes.
Encore merci!
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim Cel As Range If Target.Count > 1 Then Exit Sub If Target.Column = 1 Then With Target.Offset(0, 0).Resize(, 6) Select Case Target.Value Case "Vide": .Interior.ColorIndex = 44 Case Else: .Interior.ColorIndex = xlNone End Select On Error Resume Next Set Cel = .SpecialCells(xlCellTypeConstants, 23) If Err.Number = 0 Then Cel.Interior.ColorIndex = xlNone Exit Sub End If End With End If If Target.Count > 1 Then Exit Sub 'Ici, je voudrais que ma condition s'applique sur les colonnes 2 à 4 et 12 à 15. Sans avoir à codifier pour toutes les colonnes une à la fois. 'Est-ce possible d'intégrer une constante? If Target.Column = 2 Then With Target.Offset(0, 0).Resize(, 6) Select Case Target.Offset(0, -1).Value Case "Vide": .Interior.ColorIndex = 44 Case Else: .Interior.ColorIndex = xlNone End Select On Error Resume Next Set Cel = .SpecialCells(xlCellTypeConstants, 23) If Err.Number = 0 Then Cel.Interior.ColorIndex = xlNone Exit Sub End If End With End If End Sub
bonjour
puré pose tes questions une bonne fois pour toutes entiererement sinon tu va jamais y arriver
bon je récapitule
MFC pour bcdef ca ok si colonne b contient "blablabla")
pour la 12 a 15 cela doit etre declenché par quoi par la colonne b aussi ?????
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Bonjour,
OK je n'étais pas très clair...
J'ai fait évoluer le code pour que si dans la colonne A la valeur est "vide" alors les cellules vides doivent être orange. Et lorsqu'elle n'est plus vide elle redevient blanche.
Je veux que ceci soit applicable à toutes mes colonnes sauf pour les colonnes 7 à 11.
Je ne veux pas avoir à coder pour mes 150 colonnes... et le nombre peut varier. Donc je me questionne à savoir si nous pouvons mettre une ligne de code pour l'appliquer à toutes.
Merci
Bon j'ai trouvé une solution avec For Next mais il me manque une info...
Est-ce que l'on peut ajouter une formule dans un target.offset pour déterminer la colonne a utiliser... (activecell.column - 1 -i)???
voir code ici..
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 For i = 2 To 12 If Target.Count > 1 Then Exit Sub If Target.Column = i Then With Target.Offset(0, 0) '.Resize(, 0) 'ici je dois mettre la colonne référence. 'est-ce que l'on peut ajouter une formule dans un target.offset pour déterminer la colonne a utiliser... (activecell.column - 1 -i)??? Select Case Target.Offset(0, (ActiveCell.Column - 1 - i)).Value Case "Vide": .Interior.ColorIndex = 44 Case Else: .Interior.ColorIndex = xlNone End Select On Error Resume Next Set Cel = .SpecialCells(xlCellTypeConstants, 23) If Err.Number = 0 Then Cel.Interior.ColorIndex = xlNone Exit Sub End If End With End If Next End Sub
Bonjour
c'est un peu cahotique comme code ca manque de precision
donc si j'aibien compris maintenant on a plus plusieures couleur mais une seule et ca n'est plaus la colonne B mais A et la MFC doit se faire sur 150 colonnes avec des colonnes exceptées c'est bien ca
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Oui c'est ça! Seulement si la valeur de la colonne 1 est "vide".
Et lorsque je saisie une information dans une cellule alors celle-ci redevient blanche.
bon la je crois que ca depasse toute absurdité je te comprends plus et je suis pas sur que tu comprenne toi meme
tu me dis oui c'est ca !! et tu me dis quand je change une cellule celle ci doit redevenir blanche c'est completement incohérent
alors
fait une pose
refléchi bien
et dis nous une derniere fois ce que tu veux le plus clairement possible
la en l'etat on aurait plus envie de passer le sujet
on en est quand meme a 2 pages pour ce post et on sait toujours pas ce que tu veux !!!!
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
M. Patrick, vous commencez à être insolent.
C'était très clair dans mon post. Il faut les lire....
Une simple réponse par oui ou non aurait pu suffire!Bon j'ai trouvé une solution avec For Next mais il me manque une info...
Est-ce que l'on peut ajouter une formule dans un target.offset pour déterminer la colonne a utiliser... (activecell.column - 1 -i)???
voir code ici..
Peut-être me suggères-tu d'ouvrir un autre post pour cette question?
RE
INSOLENT !!! ca c'est la meilleure je dois avoir au minimum 30 ans de plus que toi
relis toi avant de valider ton message
bon soit ...........
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager