Commentaire Excel

Résolu
Vikingo38 Messages postés 7 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 3 avril 2012 - 21 nov. 2007 à 11:04
Vikingo38 Messages postés 7 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 3 avril 2012 - 22 nov. 2007 à 13:42
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

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
21 nov. 2007 à 12:39
 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
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
21 nov. 2007 à 19:46
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
3
Vikingo38 Messages postés 7 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 3 avril 2012
21 nov. 2007 à 14:09
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
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
21 nov. 2007 à 19:14
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
21 nov. 2007 à 19:24
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
0
Vikingo38 Messages postés 7 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 3 avril 2012
22 nov. 2007 à 09:25
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
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
22 nov. 2007 à 12:30
 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
0
Vikingo38 Messages postés 7 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 3 avril 2012
22 nov. 2007 à 13:42
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
0
Rejoignez-nous