Indiquer les dimensions d'une forme dans des cellules

Bonjour,

Grâce à la macro ci-dessous, je peux indiquer des informations liées à une forme dans une cellule :

Sub test()

With Feuil1.Shapes("Straight Connector 1")

Cells(1, 2) = .Name

Cells(2, 2) = .Height

Cells(3, 2) = .Width

Cells(4, 2) = .BottomRightCell.Address

Cells(5, 2) = .Type

Cells(6, 2) = .Left

Cells(7, 2) = .Top

Cells(8, 2) = .TopLeftCell.Address

End With

End Sub

Jusque là, c'est super ! Néanmoins, j'aimerais que ces informations s'inscrivent dans les cellules de la feuille 2, et non de la feuille 1.. Est-ce possible ?

Merci d'avance !

Bonjour Mytoria, bonjour le forum,

Spécifie l'onglet devant la cellule pour chaque ligne !... Si l'onglet se nomme Feuil2 ça donne :

Cells(1, 2) = .Name
Worksheets("Feuil2" ).Cells(2, 2) = .Height
Worksheets("Feuil2" ).Cells(3, 2) = .Width
Worksheets("Feuil2" ).Cells(4, 2) = .BottomRightCell.Address
Worksheets("Feuil2" ).Cells(5, 2) = .Type
Worksheets("Feuil2" ).Cells(6, 2) = .Left
Worksheets("Feuil2" ).Cells(7, 2) = .Top
Worksheets("Feuil2" ).Cells(8, 2) = .TopLeftCell.Address

Bonjour,

En utilisant le même principe que pour définir la feuille où trouver la forme : rajouter le nom de la feuille:

Feuil2.Cells(1, 2) = .Name ' en utilisant le codename de la feuille
'ou
Worksheets("Feuil2").Cells(1, 2) = .Name ' en utilisant le nom de la feuille; celui qui apparait dans les onglets de feuilles

A+

Edit : Bonjour ThauTheme

Super, merci beaucoup !!

J'ai une petite amélioration à vous demander si c'est possible ?!

J'aimerais que en fonction du nom dans la colonne 1, avoir une relation avec des figures en feuille 2 qui ont le même nom et avoir en colonne 2 et 3 les informations liées à sa hauteur et largeur.

Une sorte de RechercheV, mais entre une colonne et des figures...

aa a
7ligne.xlsx (17.09 Ko)

Je suis disponible si vous avez des questions, vraiment un grand merci, vous m'aidez énormement dans mon travail !

Bonjour,

une solution par fonctions personnalisées :

en B2 : =Hauteur(A2)

en C2 : =Largeur(A2)

et tirer les formules vers le bas

Dans un module standard:

Function Hauteur(Cellule)
With Feuil2.Shapes(Cellule)
    Hauteur = .Height   '* 0,035114
End With
End Function

Function Largeur(Cellule)
With Feuil2.Shapes(Cellule)
    Largeur = .Width   '* 0,035114
End With
End Function

Le résultat est en points. Si on veut le résultat en mm, multiplier par 0,035114 et éventuellement utiliser la fonction Round()

Un bémol : la modification des forms(figures) ne modifie pas le résultat en colonnes B et C ; Il faut revalider chaque formule pour prendre en compte les nouvelles dimensions des forms ...

A+

Salut tout le monde,

une solution automatique

Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, Range("A:C")) Is Nothing And _
    Cells(Target.Row, 2).Value = "" Or Cells(Target.Row, 3).Value = "" Then Exit Sub

    With Worksheets("Sheet2").Shapes(Cells(Target.Row, 1).Value)
       .Height = Cells(Target.Row, 2).Value
       .Width = Cells(Target.Row, 3).Value
    End With
End Sub
26ligne.xlsm (22.47 Ko)

Bonjour, déjà merci pour vos réponses !

Néanmoins j'ai essayer mais je n'y arrive toujours pas.. Est-ce possible de m'envoyer le fichier avec directement le code et un bouton pour lancer la macro ?

Vraiment désolé, j'avoue avoir quelque difficultés...

Merci d'avance !!

Oui petite faute désole ^^

Bonjour, déjà merci pour vos réponses !

Néanmoins j'ai essayer mais je n'y arrive toujours pas.. Est-ce possible de m'envoyer le fichier avec directement le code et un bouton pour lancer la macro ?

Vraiment désolé, j'avoue avoir quelque difficultés...

Merci d'avance !!

mais je t'avais mis ton fichier non?

Bonjour,

une solution par fonctions personnalisées :

en B2 : =Hauteur(A2)

en C2 : =Largeur(A2)

et tirer les formules vers le bas

Dans un module standard:

Function Hauteur(Cellule)
With Feuil2.Shapes(Cellule)
    Hauteur = .Height   '* 0,035114
End With
End Function

Function Largeur(Cellule)
With Feuil2.Shapes(Cellule)
    Largeur = .Width   '* 0,035114
End With
End Function

Le résultat est en points. Si on veut le résultat en mm, multiplier par 0,035114 et éventuellement utiliser la fonction Round()

Un bémol : la modification des forms(figures) ne modifie pas le résultat en colonnes B et C ; Il faut revalider chaque formule pour prendre en compte les nouvelles dimensions des forms ...

A+

Ca me semble pas mal, mais du coup je n'arriver pas à lancer la macro.. Tu sais le mettre dans un excel stp?

Bonjour, déjà merci pour vos réponses !

Néanmoins j'ai essayer mais je n'y arrive toujours pas.. Est-ce possible de m'envoyer le fichier avec directement le code et un bouton pour lancer la macro ?

Vraiment désolé, j'avoue avoir quelque difficultés...

Merci d'avance !!

mais je t'avais mis ton fichier non?

Oui mais ça ne fonctionne pas, je n'arrive pas à la lancer..

Bonjour, déjà merci pour vos réponses !

Néanmoins j'ai essayer mais je n'y arrive toujours pas.. Est-ce possible de m'envoyer le fichier avec directement le code et un bouton pour lancer la macro ?

Vraiment désolé, j'avoue avoir quelque difficultés...

Merci d'avance !!

mais je t'avais mis ton fichier non?

Oui mais ça ne fonctionne pas, je n'arrive pas à la lancer..

Non mais tu n'as rien à lancer, une fois tu changes les dimensions les changements seront instantanés

Bonjour,

une solution par fonctions personnalisées :

en B2 : =Hauteur(A2)

en C2 : =Largeur(A2)

et tirer les formules vers le bas

Dans un module standard:

Function Hauteur(Cellule)
With Feuil2.Shapes(Cellule)
    Hauteur = .Height   '* 0,035114
End With
End Function

Function Largeur(Cellule)
With Feuil2.Shapes(Cellule)
    Largeur = .Width   '* 0,035114
End With
End Function

Le résultat est en points. Si on veut le résultat en mm, multiplier par 0,035114 et éventuellement utiliser la fonction Round()

Un bémol : la modification des forms(figures) ne modifie pas le résultat en colonnes B et C ; Il faut revalider chaque formule pour prendre en compte les nouvelles dimensions des forms ...

A+

Ca me semble pas mal, mais du coup je n'arriver pas à lancer la macro.. Tu sais le mettre dans un excel stp?

Je n'ai rien dit, ca fonctionne, c'est super ! Par contre tu n'as pas une solution pour éviter de mettre à jour les cellules à chaque utilisation ? Une touche, un bouton ? Merci !

oui pas de soucis

29ligne-1.xlsm (27.37 Ko)

Ahhh mais c'est pas tout à fait ça en fait.. Car la tu sais modifier une forme avec la valeur que tu mets dans une cellule.

Moi ce que je voudrais, c'est afficher le dimension de la forme dans une cellule, lorsque je manipule directement la forme.

Tu vois ce que je veux dire ?

Avec ma proposition, après modification des formes, il faut utiliser la touche F9 pour mettre à jour les colonnes B et C.

A+

Ahhh mais c'est pas tout à fait ça en fait.. Car la tu sais modifier une forme avec la valeur que tu mets dans une cellule.

Moi ce que je voudrais, c'est afficher le dimension de la forme dans une cellule, lorsque je manipule directement la forme.

Tu vois ce que je veux dire ?

ok sorry j'ai mal compris alors. voir le nouveau fichier

21ligne-3.xlsm (27.77 Ko)
Rechercher des sujets similaires à "indiquer dimensions forme"