XL 2016 Graphique dans Userform

leakim

XLDnaute Occasionnel
Bonjour,

J'ai un userform qui sert à enregistrer la gestion des machines à laver dans une blanchisserie d'un ESAT.

J'aimerai donner accès aux graphiques aux personnes en situation de handicap directement sur l'userform. Aujourd'hui, les graphiques sont accessibles sur le classeur.

Les graphiques ne s'affichent que si je vais sur l'onglet, que je les sélectionne et que je les agrandis ou réduit, enfin que je "joue" avec la taille du graphique. Lorsque je retourne sur l'userform là, ils s'affichent...

Bref, j'ai un bug de création de l'image je crois? mais je ne vois plus.
VB:
Sub Graphique()
Dim i As Long

On Error GoTo errgraph

    For i = 1 To 5
        Set g = Sheets("Graph").ChartObjects("Graph " & i).Chart
            fichier = ThisWorkbook.Path & "\ImageTemp" & i & ".gif"
            g.Export Filename:=fichier, FilterName:="GIF"
            UsFAct.Controls("graph" & i).AutoSize = True
            UsFAct.Controls("graph" & i).Picture = LoadPicture(fichier)
            Kill fichier
        Set g = Nothing
    Next i

Exit Sub
errgraph:

    MsgBox "Graphique " & i & " absent de ce PC.", vbExclamation, "ERREUR graphique"

End Sub

Pour ouvrir l'userform, il faut cliquer sur la machine à laver en haut à gauche de l'onglet "poids de linge".

Merci.

Leakim
 

Pièces jointes

  • poids-linge-xlp.xlsm
    242.4 KB · Affichages: 41
Solution
Salut,
Je ne l'explique pas trop, rien n'est moins sûr .... 🤔
C'est empirique:
j'ai remarqué à l'ouverture du classeur que selon la position dans la feuille "Graph",
les images incorrectes étaient celles qui n'avaient pas été affichées. 😲
C'est peut-être un mécanisme pour économiser de la mémoire ...

fanch55

XLDnaute Barbatruc
Bonjour,
VB:
Sub Graphique()
Dim I As Long
Dim Sh As Worksheet
Set Sh = ActiveSheet

' Application.ScreenUpdating = False ' Ne pas faire false sinon erreur image incorrecte

On Error GoTo errgraph

    With Sheets("Graph")
        .Activate ' indispensable pour la suite
        UsFAct.Label45.Caption = IIf(.Range("S44").Value > 0, Format(.Range("S44").Value, "+0%"), Format(.Range("S44").Value, "-0%"))
        For I = 1 To 5
            With .ChartObjects("Graph " & I)
                ' on déplace la fenêtre  jusqu'au graphique pour qu'Excel le "découvre" et le stocke en mémoire
                ActiveWindow.ScrollRow = .TopLeftCell.Row
                fichier = ThisWorkbook.Path & "\ImageTemp" & I & ".gif"
                    .Chart.Export Filename:=fichier, FilterName:="GIF"
                    UsFAct.Controls("graph" & I).Picture = LoadPicture(fichier)
                    UsFAct.Controls("graph" & I).AutoSize = True
                Kill fichier
            End With
        Next I
    End With

Sh.Activate

Exit Sub
errgraph:

    MsgBox "Graphique " & I & " absent de ce PC." & vbLf & Err.Description, vbExclamation, "ERREUR graphique"
    Resume Next
End Sub
 
Dernière édition:

fanch55

XLDnaute Barbatruc
Salut,
Je ne l'explique pas trop, rien n'est moins sûr .... 🤔
C'est empirique:
j'ai remarqué à l'ouverture du classeur que selon la position dans la feuille "Graph",
les images incorrectes étaient celles qui n'avaient pas été affichées. 😲
C'est peut-être un mécanisme pour économiser de la mémoire ...
 

leakim

XLDnaute Occasionnel
Cela voudrait dire que si je mets les graph dans la partis haute de ma feuille cela fonctionnerait ?

Je vais refaire ma mise en page tout de suite et je reviens vers toi.
Si tel est le cas, c'est un truc de fou...
Leakim
 

leakim

XLDnaute Occasionnel
Je reviens pour valider la théorie !
J'ai refait ma mise en page des graphiques quitte à la mettre en tas les uns par dessus les autres et bien, OUI !
Ils s'affichent tous sans bug 🥳
Mon code initiale fonctionne même si j'avais pas bien déclaré les variables.
Alors, sachez le, l'affichage des graphiques en userform est conditionné par leur visibilité sur la feuille du classeur.
Un GRAND MERCI Fanch55.👍
Leakim
 

Discussions similaires

Statistiques des forums

Discussions
312 106
Messages
2 085 352
Membres
102 871
dernier inscrit
Maïmanko