Mise en forme de Commentaires par VBA
Bonjour,
Dans le fichier ci-joint, j’ai une macro qui me permet de trier des membres - appartenant à des groupes - par leur nom.
Afin de pouvoir repérer facilement les membres d’un même groupe ne portant pas les mêmes noms, j’ajoute des commentaires aux personnes concernées dans la colonne G. Ainsi par exemple, Madame Favre Régine a un commentaire qui indique qu’un autre membre de son groupe s’appelle Voudoux Michael. Et idem pour Voudoux.
Mes problèmes sont les suivants :
1) J’aurais aimé que la première ligne du commentaire apparaisse en gras et
2) que le format du commentaire soit adapté au contenu.
Pour ce deuxième point, je voudrais par exemple que le format du commentaire soit diminué ou agrandi dans sa hauteur en fonction du nombre de lignes qu’il contient – actuellement toutes les lignes du groupe 1005 n’y sont pas visibles - et que sa largeur soit adaptée au plus long prénom, tel que celui de Jean-Pierre-François-Raoul Genolet qui y apparait pour l’instant sur deux lignes.
Voici l'extrait de mon code qui traite de ces Commentaires :
' On prépare le texte du commentaire
Texte_Commentaire = "Groupe " & Range("G" & Première_Ligne)
'Nom_1 & " " & Prénom_1 & Chr(10) & Nom_2 & " " & Prénom_2
For i = Première_Ligne To Dernière_Ligne
Texte_Commentaire = Texte_Commentaire & Chr(10) & Range("C" & i) & " " & Range("D" & i)
Next i
' On attribue le commentaire à qui de droit
For i = Première_Ligne To Dernière_Ligne
Range("G" & i).AddComment
Range("G" & i).Comment.Text Text:=Texte_Commentaire
Next i
Savez-vous m’aider ?
Cordialement
bonjour Yvouille et le forum
perso je sais mettre tout le commentaire en gras exemple :
Range("G4").Comment.Shape.TextFrame.Characters.Font.Bold = True ' ecriture gras
mais pas une seule ligne....
si jamais cela peut t'aider dans tes recherches...
fred
Re bonjour
après une petite recherche sur microsoft
voici ton code modifié :
If Drapeau_Groupe_à_traiter = True Then
' On prépare le texte du commentaire
Texte_Commentaire = "Groupe " & Range("G" & Première_Ligne)
nbcar = Len(Texte_Commentaire) + 1
'Nom_1 & " " & Prénom_1 & Chr(10) & Nom_2 & " " & Prénom_2
For i = Première_Ligne To Dernière_Ligne
Texte_Commentaire = Texte_Commentaire & Chr(10) & Range("C" & i) & " " & Range("D" & i)
Next i
' On attribue le commentaire à qui de droit
For i = Première_Ligne To Dernière_Ligne
Range("G" & i).AddComment
Range("G" & i).Comment.Text Text:=Texte_Commentaire
Range("G" & i).Comment.Shape.TextFrame.Characters(1, nbcar).Font.Bold = True
Next i
End If
et n'oublie pas declarer nbcar :
Dim i As Integer, j As Integer, Valeurs_7001 As Integer, Valeurs_8001 As Integer, Valeurs_9001 As Integer, DerLig As Integer, nbcar As Byte
fred
Bonjour,
et pour compléter :
ActiveCell.Comment.Shape.TextFrame.AutoSize = True
eric
Salut Fred, Salut Eric,
Merci beaucoup pour votre aide.
@ Fred
Comme en fait ma première ligne a toujours la même longueur, j’ai simplement rajouté la ligne ci-dessous, selon ton idée :
Range("G" & i).Comment.Shape.TextFrame.Characters(1, 11).Font.Bold = True
@ Eric
Génialissime
Amicalement.