Mise en forme+position commentaire dans macro
Baldur
-
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 !
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:
- Mise en forme+position commentaire dans macro
- Mise en forme conditionnelle excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Position dans google - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise en forme tableau croisé dynamique - Guide
3 réponses
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...
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...
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 ?
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 ?
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]
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]