Mise en forme+position commentaire dans macro

Baldur -  
 Baldur -
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 !

3 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  2. Baldur
     
    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
  3. Baldur
     
    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