une couleur par Utilisateur

  • Initiateur de la discussion Initiateur de la discussion secis
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

secis

Guest
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
 
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:
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:
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 ?
 
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+
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

S
Réponses
1
Affichages
1 K
S
C
Réponses
3
Affichages
2 K
claivier_58
C
C
Réponses
1
Affichages
2 K
claivier_58
C
B
Réponses
2
Affichages
1 K
Bantho
B
Retour