Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres Possibilité de faire une macro?

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 !

un internaute

XLDnaute Impliqué
Bonjour le forum
J'ai des fichiers avec plusieurs onglets qui ont des Rectangles ou Zone de texte avec des N°
Pour centrer il faut modifier soit le N° du Rectangle ou de la Zone de texte.
Soit je retape tous les N° de Rectangle ou Zone de texte par exemple Rectangle 1 ou remplace Zone de texte par Rectangle
Je ne vois pas comment on pourrait y échapper
Merci pour vos éventuels retours

Code:
Option Explicit
Sub CentrerRectangle()
  Dim Shp1 As Shape, Shp2 As Shape, Shp3 As Shape
  Set Shp1 = ActiveSheet.Shapes("Rectangle 19")
  Shp1.Left = ([G1].Left - Shp1.Width) / 2               'G1 = Nom cellule juxtaposant le domaine à centrer
End Sub
 
Bonjour.
Si les Shape sont déjà à peu près bien placés vous pouvez les centrer dans les plages qu'ils couvrent :
VB:
Sub CentrerShapes()
   Dim Shp As Shape, Rng As Range
   For Each Shp In ActiveSheet.Shapes
      If Shp.Name Like "Rect*" Then CentrerShape Shp, _
         Application.Range(Shp.TopLeftCell, Shp.BottomRightCell)
      Next Shp
   End Sub
Sub CentrerShape(ByVal Shp As Shape, ByVal Rng As Range)
   Shp.Left = Rng.Left + (Rng.Width - Shp.Width) / 2
   Shp.Top = Rng.Top + (Rng.Height - Shp.Height) / 2
   End Sub
Sinon, renommez les de telle sorte que leurs noms contiennent les adresses des plages dans lesquelles il doivent être centrés et récupérez les pour les y centrer :
VB:
Sub CentrerShapesPour()
   Dim Shp As Shape, Rng As Range
   For Each Shp In ActiveSheet.Shapes
      If Shp.Name Like "Pour:*" Then CentrerShape Shp, ActiveSheet.Range(Mid$(Shp.Name, 6))
      Next Shp
   End Sub
 
Dernière édition:
J'ai fait ça en "bricolant" à droite à gauche mais le seul truc qui me gène c'est qu'il faut absolument déplacer le rectangle dans la dernière colonne (la 1ère il y est souvent)
Peut-être y a t-il mieux à faire
Cordialement
VB:
Sub CentrageDesFormes()     'Placer le rectangle dans la 1ère & dernière colonne avant le centrage
Dim Sh As Shape
Dim Ws As Worksheet
  For Each Ws In Sheets
    For Each Sh In Ws.Shapes
      Select Case Sh.Type
        Case 1, 17
          If Sh.TopLeftCell.Address(0, 0) = "A1" Then
            Sh.Left = (Sh.BottomRightCell.Left + Sh.BottomRightCell.Width) / 2 - Sh.Width / 2
          End If
      End Select
    Next Sh
  Next Ws
End Sub
 
- 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

Discussions similaires

Réponses
2
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…