Bouton pour revenir à une page

Bonjour à tous,

J'ai un léger beugue en faisant tourner ce programme, aller dans gestion des graphique, faite apparaître un des graphique, puis essayer de revenir sur le menu principal en cliquant sur la flèche rouge

Pour retourner à l'écran général, il y a un léger beugue..

voici le code que vous trouverez dans l'onglet "stocks" dans le développeur

CEtte partie du code est surlignée, mais je ne trouve pas l'erreur..

'Affecter la macro de Retour au Menu Général :

ActiveChart.Shapes.Range(Array("Right Arrow 1")).Select

Can you help me please ?

Voici la page de code entière :

Private Sub OptGeneral_Click()

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

'désactivation du bouton de fermeture système de la fenêtre
   If CloseMode = vbFormControlMenu Then Cancel = True

End Sub
Private Sub Cmd_Annuler_Click()
    Unload Stocks
End Sub

Sub Cmd_Valider_Click()

    ' Suppression de toute autre feuille que "base de données"
       '- Désactiver les alertes de suppression des feuilles
   Application.DisplayAlerts = False
        '- Suppression de toutes les feuilles autre que base de données
   Dim s As Integer
    For s = ThisWorkbook.Sheets.Count To 1 Step -1
        If Sheets(s).Name <> "basededonnées" Then
        Sheets(s).Delete
        End If
    Next s
        '- Réactiver les alertes de suppressions des feuilles
   Application.DisplayAlerts = True

    'Ajouter une feuille pour créer le tableau des stocks et la renommer
   Sheets.Add
    ActiveSheet.Name = "tableau_stocks"

    'Création du TCD : TCD + Graph + extraction graph word
   Sheets("basededonnées").Select
    Dim Ligne As Integer
    Ligne = Range("K65536").End(xlUp).Row   'pour prendre toutes les lignes de la base de données
   Range("A1:K" & Ligne).Select

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "basededonnées!R1C1:R" & Ligne & "C12", Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="tableau_stocks!R3C1", TableName:="Tableau croisé dynamique1", _
        DefaultVersion:=xlPivotTableVersion14

    Sheets("tableau_stocks").Select
    Cells(3, 1).Select

         'Selectionner le groupe des pièces :

                '-Général
        If OptGeneral Then
    'Sélectionner les ordonnées du tableau (groupe et nom article)
   With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Groupe")
        .Orientation = xlRowField   'en ordonnées
       .Position = 1               'en premier tri
   End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Nom_article")
        .Orientation = xlRowField   'en ordonnées
       .Position = 2           'à l'intérieur de chaque tri (général, méca, info, elec)
   End With
    'Selectionner les abscisses du tableau (sotck mini et réel)
   ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("Stock Réel"), _
        "Somme de Stock Réel", xlSum    'en abscisse, prendre la somme des valeurs et non le nombre de valeurs
   ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("Stock Mini"), _
        "Somme de Stock Mini", xlSum    'en abscisse, prendre la somme des valeurs et non le nombre de valeurs
   End If

                '-Mécanique
        If OptMeca Then

    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Groupe")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Nom_article")
        .Orientation = xlRowField
        .Position = 2
    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("Stock Réel"), _
        "Somme de Stock Réel", xlSum
       ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("Stock Mini"), _
        "Somme de Stock Mini", xlSum

      'Désélectionner les groupes Electrique et Informatique pour n'avoir que Mécanique
       ActiveWindow.SmallScroll Down:=0  'barre de défilement
   With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Groupe")
        .PivotItems("Electrique").Visible = False 'décocher le groupe Electrique
       .PivotItems("Informatique").Visible = False 'décocher le groupe Informatique
   End With
    End If
                '-Electrique
        If OptElec Then

    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Groupe")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Nom_article")
        .Orientation = xlRowField
        .Position = 2
    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("Stock Réel"), _
        "Somme de Stock Réel", xlSum
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("Stock Mini"), _
        "Somme de Stock Mini", xlSum

        ActiveWindow.SmallScroll Down:=0
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Groupe")
        .PivotItems("Mécanique").Visible = False
        .PivotItems("Informatique").Visible = False
    End With
      End If

                '-Informatique
        If OptInfo Then

    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Groupe")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Nom_article")
        .Orientation = xlRowField
        .Position = 2
    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("Stock Réel"), _
        "Somme de Stock Réel", xlSum
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("Stock Mini"), _
        "Somme de Stock Mini", xlSum

        ActiveWindow.SmallScroll Down:=0
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Groupe")
        .PivotItems("Mécanique").Visible = False
        .PivotItems("Electrique").Visible = False
    End With
      End If

    'Trier les données de manière décroissante :
   Range("B4").CurrentRegion.Select
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Nom_article") _
        .AutoSort xlDescending, "Somme de Stock Réel", ActiveSheet.PivotTables( _
        "Tableau croisé dynamique1").PivotColumnAxis.PivotLines(1), 1

    'Créer le Graphique :

    Dim ligne2 As Integer
    ligne2 = Range("B65536").End(xlUp).Row
    Charts.Add      'ajouter un graphique
   ActiveChart.ChartType = xlBarClustered  'Selectionner le type de graphique : histogramme en barres
   ActiveChart.SetSourceData Source:=Range("tableau_stocks!$A$3:$B$" & ligne2) 'chercher les données
   ActiveChart.Axes(xlCategory).TickLabelSpacing = 1
    ActiveSheet.Name = "Graph Stock"    'Renommer la feuille
   ActiveChart.SetElement (msoElementChartTitleAboveChart) 'ajouter un titre au dessus du graph
   ActiveChart.ChartTitle.Text = "Etat des stocks" 'définition du titre du graphique

    'Sortir du Userform :
   Unload Stocks

    'Proposer d'afficher le graphique dans un document Word :
   reponse = MsgBox("Voulez-vous placer le graphique dans un fichier Word ?", vbYesNo + vbQuestion)

    If reponse = vbYes Then
         'Extraction dans Word : enregistré dans MesDocuments
   Dim Graph As ChartObject
    Set wo = CreateObject("Word.Application")   'création d'un document word
   doc = wo.documents.Add
    ActiveChart.CopyPicture Appearance:=xlPrinter, Size:=xlPrinter, Format:= _
        xlPicture  'Pour avoir une image de bonne qualité sous Word
   wo.Selection.Paste  'coller l'image dans word
   wo.activedocument.SaveAs Filename:="Graph Stocks.doc"  'Enregistrer le fichier
   wo.activedocument.Close 'Fermer le document Word

    MsgBox ("Document enregistré sous Graph Stocks.doc dans Mes Documents")
    Else: Cancel = True 'sinon annuler
   End If

    'Worksheets("Graph Stock").Select
   Menu_General.Hide

    'Ajouter un "retour au menu général"
       '- Création d'une forme "Menu Général"
   'Worksheets(Graph_Stock).Select
   'Selection du graphique
   ActiveChart.ChartArea.Select
    'Insertion d'une forme
   ActiveChart.Shapes.AddShape(msoShapeRightArrow, 614.5064566929, 133.3376377953 _
        , 99.3507086614, 46.7533070866).Select
    'Ajouter un texte "Menu Général" à la forme
   Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "menu général"
    'Alignement du texte en hauteur et en largeur
   Selection.ShapeRange.TextFrame2.TextRange.ParagraphFormat.Alignment = _
        msoAlignCenter
    Selection.ShapeRange.TextFrame2.VerticalAnchor = msoAnchorMiddle
    'Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 12).ParagraphFormat. _
        FirstLineIndent = 0
   'Mise en forme de la forme :
   With Selection.ShapeRange.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(192, 0, 0)
        .Transparency = 0
        .Solid
    End With
    With Selection.ShapeRange.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(192, 0, 0)
        .Transparency = 0
    End With
    'Mise en forme du texte :
   Selection.ShapeRange.TextFrame2.TextRange.Font.Bold = msoTrue
        Size = 11

    'Affecter la macro de Retour au Menu Général :
   ActiveChart.Shapes.Range(Array("Right Arrow 1")).Select
    Selection.OnAction = "gestion_de_stock"

    ActiveChart.ChartArea.Select

End Sub

Private Sub UserForm_Click()

End Sub
 

Avez- vous essayé d'enregistrer une macro faisant revenir à la fenêtre des stocks et d'affecter à la flèche rouge la macro enregistrée?

Rechercher des sujets similaires à "bouton revenir page"