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

XL 2019 insérer un commentaire selon la valeur de la cellule

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

oukthr

XLDnaute Nouveau
Bonjour, comme exprimé dans le titre, j'aimerai bien une aide pour inserer un commentaire automatiquement selon la valeur de la cellule,
par exemple, j'ai un tableau avec des références correspondants à des désignation, j'aimerai que quand je met la référence dans une cellule, un commentaire contenant la désignation correspondante s'insère dans cette cellule, comme dans la feuille cal, cellules B2 et C2 dans le fichier joint.
Merci d'avance.
 

Pièces jointes

Solution
Bonjour @oukthr🙂, @TooFatBoy 😉,

Voici la v3 sans tableau structuré :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TS As ListObject, plage As Range, xrgRef As Range, x, n
 
   With Sheets("liste")
      If .FilterMode Then .ShowAllData
      Set xrgRef = .Range("a1").CurrentRegion.Columns("a:b"): End With
   With Sheets("Cal")
      n = .Range("a1").End(xlToRight).Column
      Set plage = .Range("a1").CurrentRegion.Offset(, 1).Resize(, n - 1)
      On Error Resume Next
      For Each x In Intersect(plage, Target)
         x.Comment.Delete
         If x <> "" Then
            n = Application.Match(x, xrgRef.Columns(1), 0)
            If Not IsError(n) Then
               x.AddComment...
Bonsoir @oukthr 🙂,

Une solution par VBA.
Le commentaire se met à jour ou s'efface quand on modifie ou efface un user.
Le code est dans le module de la feuille"Cal".
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TS As ListObject, plage As Range, xrgRef As Range, x As Range, n

   Set xrgRef = Sheets("liste").Range("a1").ListObject.DataBodyRange
   With Range("a1").ListObject
      Set plage = .DataBodyRange.Offset(, 1).Resize(, .ListColumns.Count - 1)
      On Error Resume Next
      For Each x In Intersect(plage, Target)
         x.Comment.Delete
         If x <> "" Then
            n = Application.Match(x, xrgRef.Columns(1), 0)
            If Not IsError(n) Then
               x.AddComment
               x.Comment.Text Text:=xrgRef(n, 2)
            End If
         End If
      Next x
   End With
End Sub
 

Pièces jointes

Dernière édition:
Bonjour, désolé pour le dérangement, je pense avoir un problème, quand j'ai activer les partage du classeur, j'étais obligé de convertir les tableaux en plages normales, ce qui a pour effet que votre code ne marche plus.
 
Bonjour @oukthr🙂, @TooFatBoy 😉,

Voici la v3 sans tableau structuré :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TS As ListObject, plage As Range, xrgRef As Range, x, n
 
   With Sheets("liste")
      If .FilterMode Then .ShowAllData
      Set xrgRef = .Range("a1").CurrentRegion.Columns("a:b"): End With
   With Sheets("Cal")
      n = .Range("a1").End(xlToRight).Column
      Set plage = .Range("a1").CurrentRegion.Offset(, 1).Resize(, n - 1)
      On Error Resume Next
      For Each x In Intersect(plage, Target)
         x.Comment.Delete
         If x <> "" Then
            n = Application.Match(x, xrgRef.Columns(1), 0)
            If Not IsError(n) Then
               x.AddComment
               x.Comment.Text Text:=xrgRef.Cells(n, 2).Value
            End If
         End If
      Next x
   End With
End Sub
 

Pièces jointes

Bonjour,

Une proposition en pièce jointe, en attendant le retour du camarade à la magnifique pomme bleue.

Bonjour, merci a tout les deux, les 2 codes me donnent le résultat que je cherchais, encore merci et bonne journée.
 
- 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

Discussions similaires

  • Résolu(e)
Microsoft 365 DATEDIF
Réponses
11
Affichages
184
Réponses
5
Affichages
143
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…