Commentaire Excel

[Résolu]
Signaler
Messages postés
7
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
3 avril 2012
-
Messages postés
7
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
3 avril 2012
-
Bonjour

Je triture des macros sur excel et me heurte à des difficultés pour gérer les commentaires des cellules: je veux utiliser le double clic sur cellule pour faire saisir des infos à l'utilisateur que je rebalance apès mixage en commentaire de cellule
Pb1: impossible de trouver l'info booléenne de l'existance d'un commentaire dans une cellule donnée! J'ai rusé avec ce code mais avouez que c'est un peu lourd:
            ' recherche de présence d'un commentaire dans la cellule Target
            Set cmt = Worksheets(1).Comments
            commentaire = False
            For Each c In cmt                If c.Parent.Column Target.Column And c.Parent.Row Target.Row Then commentaire = True
            Next
C'est pourtant nécessaire car la fonction AddComment plante si il y a déjà un commentaire  et inversement, la fonction Comment.Text plante s'il n'y en a pas...
Pb2: impossible de récupérer le texte d'un commentaire déjà présent ce qui est un comble!
Pb3: impossible de changer la police ou la position d'un commentaire: j'ai essayé d'utiliser Shape sans succès
+
Question subsidiaire: j'utilise InputBox pour saisir les infos utilisateur mais il ne propose qu'une ligne (car son résultat est un String)
Y'a-t-il moyen de faire saisir plusieurs lignes via une seule Box?

Merci d'avance de votre aide et de votre indulgence à mon égard

Vikingo38

8 réponses

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour,

Exemple de Shape à adapter pour vb6:

Const msoFalse = 0
Const msoScaleFromTopLeft = 0

Dim objExcel
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Screenupdating = True
objExcel.Workbooks.Add

NL=2

With objExcel.Range("A" & NL)
.AddComment
.Comment.Visible = True
.Comment.Text "Ceci est un commentaire"
.Comment.Shape.Select True
objExcel.Selection.ShapeRange.ScaleWidth 2, msoFalse, msoScaleFromTopLeft
objExcel.Selection.ShapeRange.SetShapesDefaultProperties
.Comment.Visible = True
End With

jean-marc
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Re,

Sur le même principe:

If objExcel.Range("A2").Comment Is Nothing Then
   MsgBox "aucun commentaire"
Else
   MsgBox "cellule " & objExcel.Range("A2").Comment.Parent.Address & _
                       objExcel.Range("A2").Comment.Text
End If

jean-marc
Messages postés
7
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
3 avril 2012

Ah merci Jean Marc: je suis le roi de la mise en forme maintenant!

Reste à essayer d'extraire le texte d'un commentaire existant et ajouter plusieurs lignes à la fois: si qq'un a des idées...

Vikingo38
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Re,

Fonction qui énumère les commentaires, à adapter pour vb6.

Dim strFileExcel
strFileExcel = "D:\SCRIPTS\Fichiers\ShapeComment.xls"

MsgBox EnumCommentExcel(strFileExcel)

Function EnumCommentExcel(strFileExcel)
Dim objExcel
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Open strFileExcel  
objExcel.Visible = False
objExcel.DisplayAlerts = False

If objExcel.ActiveWorkbook.ActiveSheet.Comments.Count > 0 Then
   For Each Commentaire In objExcel.ActiveWorkbook.ActiveSheet.Comments
       strEnumComment = strEnumComment &vbLf& _
                        "cellule " & Commentaire.Parent.Address & _
                        vbTab& "contenu cellule " & Commentaire.Parent.Value & _
                        Commentaire.Text &vbLf

   Next
   EnumCommentExcel =  strEnumComment
Else
   EnumCommentExcel =  "aucun commentaire dans cette feuille"
End If

objExcel.DisplayAlerts = True
objExcel.Visible = True
objExcel.Quit
Set objExcel = Nothing
End Function

pour la deuxième question, pas compris.

jean-marc
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Re,

Pour écrire un commentaire:

Dim objExcel
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.ScreenUpdating = True
objExcel.Workbooks.Add

NL=2
Msg = Inputbox("saisie",,"Ceci est un commentaire saisi par inputbox")
Msg1 = vbLf& Msg &vbLf& Msg &vbLf&vbLf& Msg
MsgBox msg1,,"msg1"
With objExcel.Range("A" & NL)
.AddComment
.Comment.Visible = True
.Comment.Text Msg1
.Comment.Shape.Select True
.Comment.Shape.TextFrame.AutoSize = True
'objExcel.Selection.ShapeRange.SetShapesDefaultProperties
.Comment.Visible = False
End With

Evidemment, ajouter un test de validation d'inputbox.

jean-marc
Messages postés
7
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
3 avril 2012

Is Nothing!
Je ne connaissais pas Is Nothing!

Je me gausse aujourd'hui mais, il y a deux jours, mes rires étaient moins gras!
Concernant la question 2 que tu n'avais pas compris, c'est parcequ'elle était trop élémentaire: je n'avais pas compris que comment.text renvoyait qqchose (soit le text bien sûr)!

En tout cas merci pour tout, je ne pensais pas que ce type de forum serait aussi efficace. Je ne pensais pas non plus que le champs d'action de VB était si étendu: c'est le fameux principe qui veut que plus on apprend, plus on se rend compte qu'on ne sait rien... Je crois qu'aujourd'hui, je vais m'acheter un bouquin de VB plus épais que ceux que j'ai!

Encore merci

Vikingo38
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
 Bonjour à tous,

bonjour [auteur/VIKINGO38/1213534.aspx Vikingo38] ,

Bienvenue sur ce forum puisque tu t'es inscrit hier.

Important:
poser sa question dans le thème approprié !

Au fait, tu utilises quoi ?  vb6+vba ?

Quant à mes réponses, elles sont de type vbs.

jean-marc
Messages postés
7
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
3 avril 2012

Et ben j'utilise le VB livré avec tout pack office de base soit VB6. Du coup, je n'ai pas accès au aide de VB pure... Mais bon ça me suffit pour bricoler.

Quand au thème approprié, je n'ai trouver que celui-là: je n'ai pas (su) trouver qqchose de spécifique à excel ou tout au moins office.
Peut-être que la rubrique débutant eu été plus appropriée!

Vikingo38