Fonction VBA pour dessiner un drapeau écossais

  • Initiateur de la discussion Initiateur de la discussion Pino12
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

Pino12

Guest
Bonjour le forum,

Je dois dessiner un drapeau écossais à l'aide d'une fonction pour mon cours de VBA. Seulement cela implique de créer des diagonales et de colorier uniquement la moitié d'une cellule. Après avoir chercher sur internet je n'ai toujours pas trouver de solution 😕

Si quelqu'un à une idée sur le fonctionnement d'une telle fonction, je suis preneur !

Merci d'avance

Flag_of_Scotland.svg.png
 
Re : Fonction VBA pour dessiner un drapeau écossais

Merci beaucoup Pierre !

Tu pourrais m'expliquer cette phrase s'il te plait ? Je comprends bien le reste de la macro sinon
For Each sh In ActiveSheet.Shapes
sh.Delete
 
Re : Fonction VBA pour dessiner un drapeau écossais

Bonsoir,

Pour créer un drapeau Français/Italien dans une cellule ou un champ
Si un texte est déjà présent dans la cellule ou le champ, il apparaît par transparence.

=drapeauFR(Champ;Transparence)
=drapeauIT(Champ;Transparence)

http://boisgontierjacques.free.fr/fichiers/Images/ConstructeurDrapeau.xls

Drapeau.gif

Sans titre.png


JB
 

Pièces jointes

Dernière édition:
Re : Fonction VBA pour dessiner un drapeau écossais

Bonjour Pino12, tatiak, JB,

Voyez le fichier joint et cette macro :

Code:
Sub DrapeauEcossais(cel As Range)
Dim x, y, w, h, e

With cel
  x = .Left: y = .Top
  w = .Width: h = .Height
  e = Application.Min(w, h) / 8 'coefficient à adapter
End With

ActiveSheet.DrawingObjects.Delete

ActiveSheet.Shapes.AddShape msoShapeIsoscelesTriangle, x + e, y + h / 2 + e, w - 2 * e, h / 2 - e

With ActiveSheet.Shapes.AddShape(msoShapeIsoscelesTriangle, x + e, y, w - 2 * e, h / 2 - e)
  .Rotation = 180
End With

With ActiveSheet.Shapes.AddShape(msoShapeIsoscelesTriangle, 0, 0, 0, 0)
  .Rotation = 90
  .Left = x + w / 2 - e: .Top = y + e
  .Width = h - 2 * e: .Height = w / 2 - e
End With

With ActiveSheet.Shapes.AddShape(msoShapeIsoscelesTriangle, 0, 0, 0, 0)
  .Rotation = -90
  .Left = x + w / 2 + e: .Top = y + h - e
  .Width = h - 2 * e: .Height = w / 2 - e
End With

End Sub
A+
 

Pièces jointes

Dernière édition:
Re : Fonction VBA pour dessiner un drapeau écossais

Re,

Si l'on veut définir la couleur il suffit d'ajouter un argument à la macro :

Code:
Sub DrapeauEcossais(cel As Range, couleur As Range)
Dim x, y, w, h, e

With cel
  x = .Left: y = .Top
  w = .Width: h = .Height
  e = Application.Min(w, h) / 8 'coefficient à adapter
End With

ActiveSheet.DrawingObjects.Delete

ActiveSheet.Shapes.AddShape(msoShapeIsoscelesTriangle, x + e, y + h / 2 + e, w - 2 * e, h / 2 - e) _
  .Fill.ForeColor.RGB = couleur.Interior.Color

With ActiveSheet.Shapes.AddShape(msoShapeIsoscelesTriangle, x + e, y, w - 2 * e, h / 2 - e)
  .Rotation = 180
  .Fill.ForeColor.RGB = couleur.Interior.Color
End With

With ActiveSheet.Shapes.AddShape(msoShapeIsoscelesTriangle, 0, 0, 0, 0)
  .Rotation = 90
  .Left = x + w / 2 - e: .Top = y + e
  .Width = h - 2 * e: .Height = w / 2 - e
  .Fill.ForeColor.RGB = couleur.Interior.Color
End With

With ActiveSheet.Shapes.AddShape(msoShapeIsoscelesTriangle, 0, 0, 0, 0)
  .Rotation = -90
  .Left = x + w / 2 + e: .Top = y + h - e
  .Width = h - 2 * e: .Height = w / 2 - e
  .Fill.ForeColor.RGB = couleur.Interior.Color
End With

End Sub
Fichier (2).

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
12
Affichages
1 K
Réponses
1
Affichages
647
Retour