Taille de forme (rectangle et cercle) liée à des cellules

Bonjour, je souhaite réaliser un dessin à partir de valeurs dans des cellules.

Je voudrais faire un cercle circonscrit autours d'un rectangle suivant la hauteur et la largeur du rectangle en mm dans 2 cellules du classeur.

Soit je calcule le diamètre à partir de ces 2 valeurs et les 2 figures doivent avoir le même centre soit il est possible d'avoir directement le cercle circonscrit. Quelqu'un a t-il une idée de code vba?

Merci à tous je joins un fichier.

César

Bonjour,

Pour amorcer :

'wR=largeur Rectangle en mm, hR=hauteur Rectangle en mm
'dC=diamètre cercle,tC=positionnement vertical Cercle,lC=positionnement horizontal cercle
Sub Cercle(wR, hR)
    Dim dC!, tC!, lC!
    dC = Sqr(wR ^ 2 + hR ^ 2)
    dC = Application.CentimetersToPoints(dC / 10)
    tC = 100 'à redéfinir
    lC = 100 'à redéfinir
    With ActiveSheet.Shapes.AddShape(msoShapeOval, lC, tC, dC, dC)
        With .Line
            .Style = xlContinuous
            .Weight = 1
            .ForeColor.RGB = vbBlack
        End With
        .Fill.Visible = False
    End With
End Sub

Sub Test()
    Cercle 163, 148
End Sub

Tu parles de l'inscrire dans des cellules, mais 22 cm de diamètre, c'est grand !

Voilà en gros la marche à suivre pour la construction. Les dimensions et positionnement à utiliser sont en points, tu les convertis avec Application.CentimetersToPoints.

Ce type de données est toujours de type Single (si tu mets autre chose, pas d'erreur, ça prend les dimensions que tu donnes...)

Si tu définis les positions Left et Top par rapport à des cellules, tu introduis le calcul.

Pour la mise en forme, tu complètes selon tes souhaits.

Cordialement.

Bonjour, merci de vous intéresser à mon problème, en fait je souhaite dessiner les deux formes, le cercle ainsi que le rectangle a l’intérieur.

Et en effet c'est grand cela correspond à des arbres je pense que je vais encore réduire l'échelle.

De plus je n'arrive pas à lier wR et hR à mes cellules C12 et C13.

Cordialement

César

Ah ! Pour dessiner les 2, il faut calculer à partir du centre.

Je m'y repenche dès que possible (je n'ai pas conservé les éléments...)

Pour lier aux valeurs mises dans les cellules :

Sub Test()
    Cercle Range("C13"), Range("C12")
End Sub

en restant sur la feuille (active).

Merci, j'attends ta réponse

Cordialement

César

Re,

Fais un essai avec ça.

Le positionnement est en "dur", mais si tu définis (dans des cellules comme pour les hauteur et largeur du rectangle) soit la position du centre par rapport aux bords haut et gauche, soit la distance du cercle avec les bords haut et gauche, je pourrais faire calculer le positionnement des figures à partir de ces données, ce qui te permettra de les faire varier.

Cordialement.

Je ne sais pas ce que signifie être en "dur" mais j'ai créé 2 cellules pour le positionnement j'ai mis des valeurs au hasard pour le moment pour que tu puisse essayer et j'ajusterai pour le mettre le dessin ou je veux après.

J'ai réduit l'échelle (divisé par 50 au lieu de 10) car lorsque je faisais un carré de 200 par 200 ça n'allait pas. La c'est mieux mais j'ai l'impression qu'il y a un petit décalage.

Je joins mes modifications.

César

ok ! décalage d'arrivée du fichier...

Ton positionnement, tu l'exprimes en quelle unité ?

Et c'est le positionnement de quel élément ?

Je ne comprend pas trop comment marche le positionnement et l'unité, j'aimerais que le dessin soit centrer vers la cellule I10 à quelque chose près.

Ce sera donc le positionnement du centre...

Fais varier tes dimensions dans les cellules, mais évites de toucher aux conversions, tu perdrais tout repère d'échelle...

Les macros sont un peu modifiées : les conversions sont faites avant de les lancer.

Cordialement.

Merci beaucoup seulement je voudrais travailler avec un carré de 200 par exemple et la le dessin est bien trop gros il n'est pas possible de modifier l’échelle et diviser par 50 au lieu de 10 le Centimeterstopoint?

Je ne comprend pas, je n'ai pas l'impression que cela marche avec le soucis des carrés de grosse section qui ne se centre pas et la valeur de diamètre qui est donnée est aberrante lorsque je rajoute une message box qui me donne le dC

Cordialement

César

Tu mets 200 et tu auras un carré de 20 cm de côté.

Tu mets 40 et tu auras un carré de 4 cm de côté.

Le résultat est le même. Sauf que tu sais que ton carré fait 4 cm de côté. Si tu mets 200 pour obtenir 4cm, tu ne le sais pas.

Si tu veux créer une échelle pour le dessin, tu mets tes dimensions réelles dans 2 cellules ailleurs, tu mets l'échelle dans une autre cellule, et dans C12 et C13, tu mets une formule =dimréelle*échelle.

Là tu auras toutes les infos à ta disposition.

Cordialement.

Ah oui je n'y avais pas pensé et en ce qui concerne la valeur du diamètre qui est n'est pas égale à la bonne valeur c'est dû à quoi?

César

Comment pas égal à la bonne valeur ?

S'il était mal calculé, le rectangle ne serait pas inscrit dans le cercle !

Le diamètre est égal à la diagonale du rectangle...

En rajoutant un msgbox dC comme tu l'avais fait dans la première version la valeur qui est donnée n'est pas bonne

Je te met en exemple en pièce jointe. J'ai pris ta dernière version, j'ai juste rajouté la msgbox et la ligne 15 avec le diamètre réel.

César

Et alors !

Si tu le multiplie par 0,35277 tu verra que cela correspond.

Et d'où vient ce 0,35277?

Valeur (arrondie à la 5e décimale) d'1 point en mm.

Ah d'accord, j'avais pas compris cette histoire de point en mm etc.

En tout cas merci de ta patience, j'aime bien comprendre les choses!

Merci beaucoup je vais pouvoir mettre tous cela en forme.

Cordialement

César

Rechercher des sujets similaires à "taille forme rectangle cercle liee"