Récupérer dans un commentaire la valeur d'une cellule d'une autre feuille
Bonjour à tous.
J'ai une feuille de planning dans laquelle 14 lignes comportent des infos sur des projets sur lesquels je travaille. La colonne F contient les initiales du chef de projet (PM) qui m'a confié un job à effectuer. Ces initiales sont lues dans une feuille référencée dans la colonne suivante, G.
Ce que je souhaiterais, c'est que lorsque j'active ma feuille de planning, dans la procédure Activate, VBA crée à la volée des commentaires dans chaque cellule F non vide (c'est-à-dire contenant des initiales de PM), qui m'indiquent le nom complet dudit PM. Par exemple, le commentaire de la cellule indiquant '"AT' afficherait en clair "Achille Talon".
J'ai donc créé le code suivant:
For k = 2 To 14
If Range("F" & k).Value <> "" Then
On Error Resume Next
strComment = Sheets("Projet" & Range("G" & k).Value & " en cours").Range("$F$1").Value
If Len(Trim(strComment)) = 0 Then
Range("F" & k).ClearComments
Else
With Range("F" & k)
.ClearComments
.AddComment
.Comment.Visible = False
.Comment.Text Text:=strComment
End With
strComment = ""
End If
ElseIf Len(Trim(strComment)) = 0 Then
Range("F" & k).ClearComments
End If
Next kMon problème est que strComment reste désespérément vide, alors que la cellule où le commentaire doit être créé contient bien des initiales de PM.
Et pourtant, la partie indiquant la feuille où rechercher le nom du PM ("Projet" & Range("G" & k).Value") renvoie correctement le nom de cette feuille.
Quelque chose m'échappe. Il doit y avoir une erreur dans mon code pour accéder à la valeur de la cellule F1 dans la feuille concernée. Mais où?
Merci par avance pour toute aide.
Cordialement.
Patrik
Bonjour,
Tu y étais presque, seul la ligne strComment posait problème.
Voir si ça convient ...
Private Sub Worksheet_Activate()
For k = 2 To 14
If Range("F" & k).Value <> "" Then
' On Error Resume Next
strComment = Sheets("Projet").Range("G" & k).Value & " en cours " & Sheets("Projet").Range("$F$1").Value
If Len(Trim(strComment)) = 0 Then
Range("F" & k).ClearComments
Else
With Range("F" & k)
.ClearComments
.AddComment
.Comment.Visible = False
.Comment.Text Text:=strComment
End With
strComment = ""
End If
ElseIf Len(Trim(strComment)) = 0 Then
Range("F" & k).ClearComments
End If
Next k
End Subric
Merci, mais j'ai réussi à résoudre le problème, en simplifiant le nom des feuilles référencées.
Le nouveau code est donc le suivant:
For k = 2 To 14
If Range("F" & k).Value <> "" Then
On Error Resume Next
strComment = Sheets(Range("G" & k).Value).Range("$F$1").Value
If Len(Trim(strComment)) = 0 Then
Range("F" & k).ClearComments
Else
With Range("F" & k)
.ClearComments
.AddComment
.Comment.Visible = False
.Comment.Text Text:=strComment
End With
strComment = ""
End If
ElseIf Len(Trim(strComment)) = 0 Then
Range("F" & k).ClearComments
End If
Next kUn commentaire contenant le nom complet du PM est généré pour chaque cellule de la plage F2:F14 qui n'est pas vide.
Cordialement.
Patrik