Redimensionnement graphiques

  • Initiateur de la discussion Initiateur de la discussion eside
  • 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 !

eside

XLDnaute Nouveau
Bonjour,

Je vous expose un peu mon problème. Je possede des graphiques sur une page que j'aimerais bien pouvoir repositionner, redimensionner pour qu'ils se trouvent par 6 sur une page A4 en format portrait. J'ai déjà créé une subroutine qui va les grouper par 6 (ou moins s'il y en a moins de 6) et les placer sur une page A4. Pour celà je récupère la taille de la page grâce aux saut de page (voir code ci-dessous).
Tout marche bien lorsque je le fait pas à pas grâce au debugger mais lorsque tout s'effectue d'une traite, les graphiques ne sont pas du tout à la bonne taille (en fait ils sont beaucoup plus grand). Tout à l'air de bien se dérouler jusqu'à la dernière boucle for.
J'ai même essayé de mettre un sleep avant le redimensionnement mais rien n'y a fait, j'en fait donc appel à vous et vos idées quelles qu'elles soient 🙂

Code:
Sub tri_graphe()
    Dim ch As ChartObject
    Dim Grap As String
    Dim Hauteur As Long
    Dim Largeur As Long
    Dim X As Long
    Dim Y As Long
    Dim graphe_count As Integer
    
    X = 0
    Y = 0
    graph_count = 0
    largeur_page = 0
    hauteur_page = 0
    
    'La variable count nous permet de replacer différement un graphique sur deux
    Count = 0
    
    For Each ch In ActiveSheet.ChartObjects
        Grap = ch.Name
        
        Hauteur = ActiveSheet.Shapes(Grap).Height
        Largeur = ActiveSheet.Shapes(Grap).Width
        
        'On test si on est en fin de groupe de 2
        If Count = 1 Then
            ActiveSheet.Shapes(Grap).Left = Y 'redéfinir position dans feuille
            ActiveSheet.Shapes(Grap).Top = X 'redéfinir position dans feuille

            X = X + Hauteur + 0
            Y = 0
        Else
            ActiveSheet.Shapes(Grap).Left = Y 'redéfinir position dans feuille
            ActiveSheet.Shapes(Grap).Top = X 'redéfinir position dans feuille
            
            Y = Y + Largeur
        End If
        
        'On incrémente le compteur
        If Count = 1 Then
            Count = 0
        Else
            Count = Count + 1
        End If
        graph_count = graph_count + 1
         
    Next ch
    
    Sheets(2).Select
    arrondi_nbre_graphique = Application.WorksheetFunction.RoundDown(graph_count / 6, 0)
    j = 0
    Do While j < arrondi_nbre_graphique
        ActiveSheet.Shapes.Range(Evaluate("transpose(ROW(" & (j * 6) + 1 & ":" & (j * 6) + 6 & "))")).Select
        Selection.ShapeRange.Group.Select
        graph_count = graph_count - 6
        j = j + 1
    Loop
    If graph_count <> 0 Then
        ActiveSheet.Shapes.Range(Evaluate("transpose(ROW(" & j + 1 & ":" & j + graph_count & "))")).Select
        Selection.ShapeRange.Group.Select
        j = j + 1
    End If
    
    Dim nbre_groupe As Integer
    nbre_groupe = j
    
    ActiveSheet.PageSetup.Orientation = xlPortrait
    ActiveSheet.PageSetup.PaperSize = xlPaperA4
    ActiveSheet.PageSetup.CenterHorizontally = True
    
    CibleV = ActiveSheet.VPageBreaks(1).Location.Column - 1 ' nombre de colonnes dans la 1ere page
    CibleH = ActiveSheet.HPageBreaks(1).Location.Row - 1 ' nombre de ligne dans la 1ere page
    
    For i = 1 To CibleV
        largeur_page = largeur_page + Cells(1, i).Width ' calcul largeur premiere page imprimable
    Next i
    For i = 1 To CibleH
        hauteur_page = hauteur_page + Cells(i, 1).Height ' calcul largeur premiere page imprimable
    Next i
    
    Do While hauteur_page = 0
    Loop
    
    Do While largeur_page = 0
    Loop
    
    For i = 1 To (nbre_groupe)
        With ActiveSheet.Shapes(i)
            .Width = largeur_page
            .Height = hauteur_page
            .Top = 0
        End With
    Next i
    
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

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
503
Réponses
7
Affichages
106
Réponses
3
Affichages
599
Retour