Mise en forme+position commentaire dans macro

Fermé
Baldur - 3 juin 2010 à 22:49
 Baldur - 4 juin 2010 à 11:40
Bonjour,

Voici d'abord ma macro :

Sub ace()
w = WorksheetFunction.CountBlank(Range("c11:c86"))
If w = 0 Then Exit Sub
ligne = ActiveCell.Row
soluce = Worksheets("solutions").Cells(ligne, 1).Value
ActiveCell.FormulaR1C1 = "ACE"
ActiveCell.AddComment
ActiveCell.Comment.Shape.TextFrame.AutoSize = True
ActiveCell.Comment.Visible = True
ActiveCell.Comment.Text Text:=soluce
topmaj = False
Application.Wait (Now + TimeValue("0:00:03"))
MsgBox "Ok ?"
Do Until i = 10000 Or topmaj = True
Randomize
Z = Int((Rnd * Now) / 465)
If Z = 0 Then Z = 1
If Cells(Z, 3).Value = "" And Z < 87 Then
Cells(Z, 3).Select
topmaj = True
Else
i = i + 1
End If
Loop

End Sub

La fin (Do Until ...) permet une sélection aléatoire dans une plage donnée, je n'en parle pas. C'est au-dessus que ça se gâte. Il s'agit d'une feuille de questionnaire. Quand on clique sur un bouton, un mot ("ACE") apparaît dans la cellule ainsi qu'un commentaire contenant la bonne réponse. J'arrive à le rendre visible (ActiveCell.Comment.Visible = True) et à le dimensionner au texte (ActiveCell.Comment.Shape.TextFrame.AutoSize = True) mais je n'arrive pas à modifier sa mise en forme (fond, police, ...) et encore moins à lui dire où apparaître. Il apparaît à 1 cm en haut à droite de la cellule, ce qui est 'standard' et je voudrais qu'il soit, disons, à 5 cm + à droite par exemple.

Mes questions :

- Pour la mise en forme, j'ai essayé "Dim", "With", "OLEformat", etc. rien n'y a fait : une idée, svp ?
- Pour l'emplacement : aucune piste, désolé ...

Je vous remercie déjà de toute l'aide que vous pourrez m'apporter et vous souhaite un excellent week-end !
A voir également:

3 réponses

eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 4/06/2010 à 00:43
Bonsoir,

Essaie avec ça :
....
ActiveCell.Comment.Text Text:=soluce
ActiveCell.Comment.Shape.Select True
Selection.ShapeRange.Left = ActiveCell.Left + 200
Selection.ShapeRange.Top = ActiveCell.Top - 20
...

Tu as aussi .height et .width pour hauteur et largeur

eric

PS:
tu peux en profiter pour changer la forme du commentaire aussi :
- étiquette :
Selection.ShapeRange.AutoShapeType = msoShapePlaque
- nuage :
Selection.ShapeRange.AutoShapeType = msoShapeCloudCallout
Selection.ShapeRange.Adjustments.Item(1) = -1.2639
Selection.ShapeRange.Adjustments.Item(2) = 0.4304
ou autre forme...
1
OK, merci Eric,

Pour la position, c'est parfait.

Pour la mise enn forme, je voudrais simplement un fond transparent (pas de couleur). J'arriverai surement à trouver le numéro (0 peut-être ?) mais c'est la commande qui m'échappe. Je pensais à un truc finissant par " ... OLEFormat.Object.Interior.ColorIndex = xx " mais ça semble ne pas convenir (ni avec Dim ni avec With). Bref, statu quo la-dessus.

Une autre inspiration, svp ?
0
CA Y EST.

Débilos a compris : J'ai trouvé (ailleurs, j'avoue) :

With Activecell.Comment.Shape
.Width = 130 'Largeur commentaire
.Height = 90 'Hauteur
.OLEFormat.Object.Font.Size = 14 'Taille du texte
.OLEFormat.Object.Interior.ColorIndex = 34 'Couleur de fond
.TextFrame.Characters.Font.ColorIndex = 11 'Couleur de la police
.TextFrame.Characters.Font.Bold = True 'Ecriture gras
.OLEFormat.Object.Font.Name = "Bangle" 'Type de police
End With

Je me plantais à la première ligne, maislà, comme ça, ça marche.

Merci à tous, A + [sujet clos]
0