une couleur par Utilisateur

secis

XLDnaute Nouveau
Bonjour tout le monde,

voila j'ai un petit souci en ce qui concerne l'utilisation du vba , je vous explique:
je voudrais selon l'utilisateur du fichier excel que quand une cellule est modifiée la couleur se modifie automatiquement en fonction de l'utilisateur
EXEMPLE : la cellule A1 est vide et blanche , Gégé se sert du fichier et modifie A1 elle prend alors un fond bleu, maintenant un autre utilisateur se sert du fichier et modifie la cellule B1 la cellule prend un fond jaune. ( il faut definir une couleur par utilisateur).

2 ieme petite question: je voudrais quand je me sers du clavier et des fleche de direction , je voudrais qu'a chaque pression sur touche deplacer gauche le deplacement s'effectue de 5 colonne et non pas d'une seule

Merci d'avance
 

job75

XLDnaute Barbatruc
Re : une couleur par Utilisateur

Bonjour Secis,

Pour la touche, c'est possible dans une feuille pour déplacer la cellule active :

Code:
Sub touche()
Application.OnKey "{LEFT}", "Left5"
End Sub

Sub Left5()
Cells(ActiveCell.Row, Application.Max(ActiveCell.Column - 5, 1)).Select
End Sub

La touche reprendra sa fonction normale après fermeture d'Excel, sinon il faut exécuter une 3ème macro avec :

Code:
Application.OnKey "{LEFT}"

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : une couleur par Utilisateur

Re,

Après la 2ème question, la 1ère.

La macro suivante colore toute cellule modifiée, avec une couleur par utilisateur (à placer dans le code de la feuille) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count > 1 Then Application.Undo: GoTo 1 'annule si une plage est modifiée
Dim ref As Range, origine
Set ref = Selection
Application.Undo
origine = Selection
Application.Undo
ref.Select
If Target <> origine Then
Select Case Application.UserName
Case "toto": Target.Interior.ColorIndex = 3
Case "tata": Target.Interior.ColorIndex = 5
'------------------
End Select
End If
1 Application.EnableEvents = True
End Sub

Edit 1 : j'ai refait la macro pour toute cellule modifiée.

Edit 2 : UserName est le nom (modifiable...) entré au menu Outils-Options-Général

A+
 
Dernière édition:

secis

XLDnaute Nouveau
Re : une couleur par Utilisateur

MERCI BEAUCOUP ET QUELLE RAPIDITE job75 !!!!!
comme c'est trop beau pour etre vrai j'aurai une petite mais une toute petite et derniere question comme c'est des cellules qui sont liées entre elle quand toto modifie A1 de feuille 1 cela ne rapatrie pas la couleur sur la feuille 2 par exemple . Est ce possible ?
 

job75

XLDnaute Barbatruc
Re : une couleur par Utilisateur

Bonjour Secis,

Si la cellule liée a la même adresse (ex A1 ---> A1), modifiez le code ainsi :

Code:
'-----------
If Target <> origine Then
Select Case Application.UserName
Case "toto": Target.Interior.ColorIndex = 3
Case "tata": Target.Interior.ColorIndex = 5
'------------------
End Select
[COLOR="Red"]Sheets("Feuil2").Range(Target.Address).Interior.ColorIndex = Target.Interior.ColorIndex[/COLOR]
End If
'---------------

A+
 

job75

XLDnaute Barbatruc
Re : une couleur par Utilisateur

Salut tototiti, et merci pour l'info,

Secis, le code que je viens de proposer fonctionne pour toute cellule modifiée.

En fait toutes ne sont probablement pas liées...

Il faut donc faire un test pour le savoir :

Code:
'-----------
If Target <> origine Then
Select Case Application.UserName
Case "toto": Target.Interior.ColorIndex = 3
Case "tata": Target.Interior.ColorIndex = 5
'------------------
End Select
[COLOR="Red"]If Sheets("Feuil2").Range(Target.Address).Formula Like "=*" & ActiveSheet.Name & "*!" & Target.Address Then
Sheets("Feuil2").Range(Target.Address).Interior.ColorIndex = Target.Interior.ColorIndex
End If[/COLOR]
End If
'---------------

Edit : bon il y a aussi le problème du signe $... Si l'on est sûr du résultat, le mieux est d'écrire :

Code:
If Sheets("Feuil2").Range(Target.Address).Formula Like "=*" & ActiveSheet.Name & "*!*" Then

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 793
Messages
2 092 156
Membres
105 241
dernier inscrit
Mixlsm