Changer la couleur de police suivant l'utilisateur

Bonjour à tous,

Ont me demande de changer la couleur de police suivant l'utilisateur du fichier. Problème, je n'ai absolument aucune idée de comment faire ! 😐😐😐

D'abord j'ai pensé utiliser la mise en forme conditionnelle, mais sans succès.

Exemple concret avec des prénoms choisi au hasard :

(Si nécessaire à l'ouverture du fichier un UserForm s'ouvre et l'utilisateur renseigne son nom)

Si Martine ouvre le fichier, tout ce qu'elle écrira dans la colonne A sera en rouge.

Si François ouvre le fichier, tout ce qu'il écrira dans la colonne A sera en vert.

Attention, ce qui est écrit par Martine doit resté en rouge quand c'est François qui ouvre le fichier et inversement.

Merci d'avances pour vos pistes ;)

Hello,

Une piste :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then If Environ("USERNAME") = "sotin" Then Target.Font.ColorIndex = 3
End Sub

Bonjour,

Merci pour votre aide, mais je ne suis pas très doué en matière de VBA et du coup je n'ai aucune idée de comment mettre en place votre code.

Entre temps, si cela peut servir, J'ai trouvé sur internet cette fonction qui permet d'identifier l'utilisateur du fichier

Application.UserName

Est-ce qu'il est techniquement faisable de dire un truc du style :

Si Application.UserName = "Martine" alors

la couleur de police dans la colonne A est rouge (Attention ça ne doit pas changer la couleur des valeurs déjà présente dans cette colonne)

Sinon

la couleur de police dans la colonne A est vert

Merci :)

Eventuellement pour vous évitez de réécrire :

Sub test()

Nom = Application.UserName

If Nom = "Martine" Then

'Couleur de police en vert dans la colonne A, sans changer la couleur des valeurs déjà écrites

Else

'Couleur de la police en rouge dans la colonne A, sans changer la couleur des valeurs déjà écrites

End If
End Sub

Hello,

Oui c'est ce que j'ai écris :

If Environ("USERNAME") = "sotin" Then Target.Font.ColorIndex = 3

moi j'ai mis le code dans la feuille directement, a chaque changement dans la cellule A1, identifier l'utilisateur puis mettre la couleur voulue

Re,

Oui d'accord je comprends mieux !

J'ai donc bien mis le code dans la feuille, mais il n'y a que la première cellule qui prend la bonne couleur. Jai essayé de remplacer

"$A$1"

Par

"A:A"

Sans succès ... Encore un petit coup de main ? 😇😇😇

Petite question,

Dans votre code Il faut que le nom de l'utilisateur soit "sotin" pour que la condition soit valide ?...

J'ai remplacer "sotin" par un autre nom, la police continu à être rouge dans la cellule A1, ... 🫢

comme ceci ?

"$A:$A"

sinon remplacer

If Target.Address = "$A$1" Then

par :

If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then

end if

ce qui donnerai

If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
If Environ("USERNAME") = "sotin" Then Target.Font.ColorIndex = 3
end if

Ok, ça fonctionne pour toute la colonne Top merci beaucoup !!!

ultime petite question pour être sur d'avoir bien compris votre code :

Dans votre code Il faut que le nom de l'utilisateur soit "sotin" pour que la condition soit valide et que la couleur de la police soit rouge ?...

J'ai remplacer "sotin" par un autre nom, la police continu à être rouge dans la cellule A1, ... 🫢

Bonjour SOTIN, Rag02700 , le forum,

Une proposition:

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim coul, nom, i
  coul = Array(3, 4, 6, 7, 8) 'tes couleurs
   nom = Array("maison", "carole", "régis", "anne", "sotin") 'tes noms
    If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
     For i = 0 To UBound(nom)
      If Environ("USERNAME") = nom(i) Then Target.Font.ColorIndex = coul(i)
     Next i
    End If
End Sub

A tester...

Cordialement,

Bonsoir !

Merci pour votre aide ! j'ai testé votre code en changeant l'ordre des variables coul et nom.

Si j'ai bien compris, tel que votre code est inscrit si l'utilisateur est "maison" la couleur est la numéro 3, si l'utilisateur est "carole" la couleur est la numéro 4 et ainsi de suite ? Si tel est le cas, il me semble que ce soit bien fonctionnel ! Merci à vous.

Par pure information, est-ce que l'on peut m'indiquer pourquoi même si l'utilisateur change la couleur reste la même dans ce code ?

If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
If Environ("USERNAME") = "sotin" Then Target.Font.ColorIndex = 3
end if

Re,

Merci pour le retour,

Vous avez bien compris,

Bonne continuation,

Egalement ;)

Rechercher des sujets similaires à "changer couleur police suivant utilisateur"