établissement de la couleur en sortant du focus

E

Exfan

Guest
:) mettre une couleur en fonction d'un texte spécifique, mais sans utiliser la mise en forme conditionnelle (limitée à trois conditions), et sans mettre dans la cellule un objet liste (déroulant) ?.

car sur un objet on a bien l'évènement 'Focus' que l'on peut donc gérer.
Mais si on ne veut pas dupliquer des centaines de fois (colonne), un objet :
- Comment, en ayant tapé dans une cellule le texte 'toto', peut on la mettre en couleur dédiée à 'toto'?.

j'ai essayé en VB, mais les évènements que j'ai trouvé agissent 'après coup, donc sur la cellule ayant le Focus après avoir tapé 'toto'.
et du coup la couleur mise est décalée, mise dans la nouvelle cellule.

donc, ma question: sans liste déroulante (Objet ayant une gestion de Focus), sans forme conditionnelle, peut-on mettre une couleur dans une cellule après avoir tapé son texte et avant le déplacement (dû à l'action 'Entrée') dans la nouvelle cellule ?

le code serait bon, mais c'est le 'moment' qui ne va pas...

Select Case UCase(Target) 'UCASE = convertion de la frappe en
' majuscule
Case 'TOTO'
With Selection.Interior
.ColorIndex = 33
.Pattern = xlSolid
End With
etc...pour chaque cas
End Select

si vous avez une idée...sans réaffecter toutes les cellules par une recherche exhaustive bien sûr ( each...), trop lourd à mon avis et plus lent en exécution.
 

excalibur

XLDnaute Impliqué
bonjour exfan le forum tu peus utiliser l evenement de la feuille .ex:.Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = '$A$1' And Range('a1').Value = 'toto' Then
Range('a1').Font.ColorIndex = 3
End If
If Target.Address = '$A$2' And Range('a2').Value = 'titi' Then
Range('a2').Font.ColorIndex = 8
End If
End Sub'ou sur une colonne Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range('A:A')) Is Nothing Then
ton code
End If
End Sub' salutations
 
E

Exfan

Guest
je vois ... parl'utilisation de l'évènement Select on change,
mais donc, le code se déclenchera quand j'aurais fini de taper mon texte dans la cellule et ferais 'Entrée'.

le problème est que je ne veux (peux ) pas repasser toute la plage (la colonne) en revue avec le code...je ne voudrais pas serait mieux de dire :O))

il me faudrait 'connaitre' la référence de la cellule 'Active' d'où je viens...

du genre
Case ancienneCellule = 'toto'
mettre couleur x
Case ancienneCellule = 'titi'
mettre couleur y
etc,...

je ne 'voudrais' pas repasser à chaque saisie toute la colonne pour réactualiser la couleur...si c'est possible.

l'idéal peut-être serait de maitriser la référence de la cellule d'où l'on vient (sur laquelle je dois mettre la couleur).

peut-être en créant une globale gardant l'ancienne référence entre deux On Change ?

Soit: sur un On change

je met la couleur sur Cellule_Anciennement_Active

puis je résoud la référence nouvelle (maintenant là où je suis)

Cellule_Anciennement_Active = Active cell

end sub

l'avantage serait d'exécuter une seule itération, une seule ligne de code, puisque le reste est bon...

ainssi, la fois d'après j'aurai 'la' bonne cellule, si tant est que je testerai être une cellule de ma colonne,

avec un if circonstancié, bref je n'éxécute ma couleur que si la colonne de ma Cellule_Anciennement_Active à la valeur de colonne 'tant'...

je vais essayer et vous rendre compte de cette possibilitée...
merci...
 

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 765
Membres
103 662
dernier inscrit
rterterert