Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Faire apparaitre le nom utilisateur

  • Initiateur de la discussion Initiateur de la discussion Maximus
  • 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 !

M

Maximus

Guest
Bonjour ! Et super ce forum

Voici le code que j'ai placé dans une feuille

Private Sub Worksheet_Change(ByVal Target As Range)
If Range('F14') = 'Fait' Then Range('G14') = Application.UserName

End Sub

Cela marche nickel lorsque la cellule F14 contient le texte 'fait' la cellule d'a coté affiche automatiquement le nom de l'utilisateur qui a saisi la donnée.

Mais mon problème c'est que si j'ajoute cette ligne plus rien ne fonctionne:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range('F14') = 'Fait' Then Range('G14') = Application.UserName
If Range('F15') = 'Fait' Then Range('G15') = Application.UserName

End Sub

Quelqu'un peut -il m'aider (un pro).

Merci pour tous les tuyaux...
 
Bonsoir

Essaye ce code

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target = 'Fait' And Target.Column = 6 Then Target.Offset(0, 1) = Application.UserName
End Sub

@+Jean-Marie
 
Merci bcp pour votre aide

En fait je souhaite que sur un certain nombre de
cellules, lorsque l'utilisateur saisit service fait (Fait) la cellule a cote fasse apparaitre son user. Mon code marche sur une cellule mais des que je l'applique a plusieurs cela freeze tout.

Je vais voir pour ton code je te tiens au courant

encore merci
 
Bonsoir Maximus, pat1545, JeanMarie, le Forum,

Le problème que tu rencontres Maximus est dû à une réaction en cascade de cet évènement Change() dans ton code.
En effet, à chaque modification d'une cellule quelconque de ta feuille, l'évènement Change() va se déclencher. Ce qui implique qu'à chaque passage dans ce code, si F14 vaut 'Fait' alors G14 va être requalifier en 'Username' (même s'il l'est déjà !). Cette requalification par le code va donc entraîner à nouveau un nouvel évènement Change() à son tour, etc..., etc...et le code va tourner en rond jusqu'au plantage d'Excel !

Si tu veux conserver le code tel que tu l'as écrit, tu pourrais donc faire comme ça :
Cette instruction 'Application.EnableEvents = False' permet de désactiver la gestion des évènements dans VBA, avant traitement, afin d'éviter à ton code de tourner en boucle. Il est toutefois IMPERATIF de rétablir EnableEvents à TRUE avant de quitter la procédure sous peine de te retrouver avec une application ayant perdu toute réactivité par la suite...

Cela dit, si les cellules F14 ou F15 sont destinées à être modifiées (saisies) manuellement par l'utilisateur, il serait certainement préférable d'utiliser une formulation comme celle-ci :
Ce code à l'avantage de n'appliquer le traitement que si, et seulement si, les cellules F14 ou F15 sont en cours de modification. Cela évite ainsi l'utilisation de EnableEvents qui reste une propriété très sensible et donc à éviter au maximum...

Cordialement,
 
- 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

Réponses
9
Affichages
508
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…