XL 2019 Execution macro suite choix menu déroulant

pierrelcq

XLDnaute Junior
Bonjour,

Je dois créer des modops concernant des arrêts techniques d'usines et je cherche un moyen de consolider toutes ces informations proprement.

J'ai une connaissance assez minime du VBA c'est pour cela que je viens vers vous.

J'ai donc en Feuille 1 : 2 menus déroulants avec le nom du site impacté par l'arrêt et la nature de l'arrêt.

En feuille 2 : Le listing de tout les sites et les natures des arrêts

Toutes les autres feuilles sont cachées, et je souhaite qu'en fonction de mes choix sur le menu déroulant de la feuille 1 que cela me fasse apparaître les feuilles liées.

J'ai essayé d'exprimer mon besoin de façon littéral :

1 -> Macro qui doit lire la case C9 et F9 lorsqu’on clique sur ok de la page accueil

2 -> Elle va ouvrir toutes les feuilles (masqués par défaut) qui ont une relation avec la lecture faîte préalablement.

Pour faire la relation, la macro va allait lire sur toutes les feuilles du classeurs si B1 & D1 des feuilles masquées = C9 et F9 de la feuille accueil .

Je ne sais pas si c'est la solution optimale, et peut-être qu'il y a plus facile, mais c'est ce qui m'est venu directement à l'idée.

Je vous remercie pour votre aide

Pierre
 

Pièces jointes

  • Mode opératoire Arrêts Techniques.xlsm
    64.3 KB · Affichages: 17
Solution
Désolé pour l'incompréhension.
D'autant que c'est beaucoup plus simple avec simplement :
VB:
Sub Acceder()
    For Each F In Worksheets
        If Sheets("Accueil").[C13] = Sheets(F.Name).[B1] And Sheets("Accueil").[F13] = Sheets(F.Name).[D1] Then
            Sheets(F.Name).Visible = True
        End If
    Next
End Sub

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,


Plutôt que de disperser vos arrêts techniques sur plusieurs feuilles, ce qui plus tard sera plus compliqué à gérer pour faire des statistique, graphiques, tcd et autres manipulation de données, je vous conseille de mettre sur la même feuille dans un tableau structuré vos données de tous les sites et de toutes natures.

vous pourrez plus facilement retrouver vos informations par sites, natures, éventuellement date etc... soit par formule soit, puisque vous avez excel 2019 par powerquery ou extraction avancées etc. Cela permet une présentation des données plus souple.

Exemple en pièce jointe
 

Pièces jointes

  • Mode opératoire Arrêts Techniques.xlsm
    93.4 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Pierre,
Un essai en PJ avec ce que j'ai compris.
La sélection de la feuille Accueil masque toutes les feuilles inutiles avec :
VB:
Sub Worksheet_Activate()
    For Each F In Worksheets
        If F.Name <> "Accueil" And F.Name <> "Sites" Then
            Sheets(F.Name).Visible = False
        End If
    Next
End Sub
Un appui sur OK ^prend les valeurs C13 et F13 et accède à la feuille qui porte le nom C13&" "&F13 avec :
Code:
Sub Acceder()
    Dim Nom$
    Nom = [C13] & " " & [F13]
    If FeuilleExiste(Nom) = True Then       ' La feuille existe
        Sheets(Nom).Visible = True
        Sheets(Nom).Select
    Else                                    ' La feuille n'existe pas
        MsgBox "La feuille " & Nom & " n'existe pas." & Chr(10) & Chr(10) & "Désolé."
    End If
End Sub
Si la feuille n'existe pas un message d'erreur est émis.

NB :
Elle va ouvrir toutes les feuilles (masqués par défaut) qui ont une relation avec la lecture faîte préalablement.
Dans ma macro j'ai supposé qu'une seule feuille doit s'ouvrir, sinon c'est que je n'ai pas compris la demande.
 

Pièces jointes

  • Mode opératoire Arrêts Techniques.xlsm
    69.6 KB · Affichages: 9

pierrelcq

XLDnaute Junior
Bonjour,


Plutôt que de disperser vos arrêts techniques sur plusieurs feuilles, ce qui plus tard sera plus compliqué à gérer pour faire des statistique, graphiques, tcd et autres manipulation de données, je vous conseille de mettre sur la même feuille dans un tableau structuré vos données de tous les sites et de toutes natures.

vous pourrez plus facilement retrouver vos informations par sites, natures, éventuellement date etc... soit par formule soit, puisque vous avez excel 2019 par powerquery ou extraction avancées etc. Cela permet une présentation des données plus souple.

Exemple en pièce jointe
Bonjour Roblochon,

Tout d'abord merci pour ta réponse, cela me fait plaisir de voir que tu as passé du temps sur ma problématique et j'en suis infiniment reconnaissant.

En fait, dans ce cas précis, je n'ai aucun intérêt à mettre en commun les informations des arrêts techniques puisqu'ils sont tous bien différents.

Pour te faire ça brièvement, en fait je vais agencer mes MODOPS de cette manière pour chaque cas :

1- Première partie sur les flux ( flux collectes/ réceptions et expéditions ) lors d'une semaine normale (sans arrêt technique)
2- Seconde partie sur le descriptif précis de l'usine concernant son arrêt et les impacts du point de vue logistique et des volumes
3- Troisième partie sur le solutions que je vais apporter à l'usine pour que l'arrêt se passe dans les meilleurs conditions

C'est tout simplement puisque les arrêts sont quasiment identiques chaque années que je veux faire cette base de données

Merci à toi
 

pierrelcq

XLDnaute Junior
Bonjour Pierre,
Un essai en PJ avec ce que j'ai compris.
La sélection de la feuille Accueil masque toutes les feuilles inutiles avec :
VB:
Sub Worksheet_Activate()
    For Each F In Worksheets
        If F.Name <> "Accueil" And F.Name <> "Sites" Then
            Sheets(F.Name).Visible = False
        End If
    Next
End Sub
Un appui sur OK ^prend les valeurs C13 et F13 et accède à la feuille qui porte le nom C13&" "&F13 avec :
Code:
Sub Acceder()
    Dim Nom$
    Nom = [C13] & " " & [F13]
    If FeuilleExiste(Nom) = True Then       ' La feuille existe
        Sheets(Nom).Visible = True
        Sheets(Nom).Select
    Else                                    ' La feuille n'existe pas
        MsgBox "La feuille " & Nom & " n'existe pas." & Chr(10) & Chr(10) & "Désolé."
    End If
End Sub
Si la feuille n'existe pas un message d'erreur est émis.

NB :

Dans ma macro j'ai supposé qu'une seule feuille doit s'ouvrir, sinon c'est que je n'ai pas compris la demande.
Bonjour Sylvanu,

Merci pour ton aide.

En réalité, à l'exécution de la macro, plusieurs feuilles peuvent apparaître.

Dans certains cas, on a beaucoup de données sur un seul arrêt technique et il est plus facile de switch entre 2-3 feuilles plutôt que d'en avoir qu'une seule et de scroll ect..

Ta macro est superbe, mais ce qui me gène là dedans, c'est qu'elle va chercher le nom de la feuille, cela implique par l'utilisateur de renseigner correctement le nom de la feuille.

S'il n'y avait que moi qui allait utiliser le fichier, ça ne poserait absolument pas de problème mais ce n'est pas le cas.

C'est pour cela que je voulais mettre les menus déroulants sur chaque feuilles des arrêts techniques, tout en haut par exemple en (B1 et D1), comme ça quand l'utilisateur créé son MODOP d'arrêt, il renseigne avec la bonne orthographe vu qu'il y a pas beaucoup de choix...

Et c'est à ce moment là que la macro va comparer la cellule C13 et F13 de l'accueil avec les cellules B1&F1 de toutes les feuilles du classeur et si cela correspond alors elle ouvre la feuille.

Merci à toi
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Désolé pour l'incompréhension.
D'autant que c'est beaucoup plus simple avec simplement :
VB:
Sub Acceder()
    For Each F In Worksheets
        If Sheets("Accueil").[C13] = Sheets(F.Name).[B1] And Sheets("Accueil").[F13] = Sheets(F.Name).[D1] Then
            Sheets(F.Name).Visible = True
        End If
    Next
End Sub
 

Pièces jointes

  • Mode opératoire Arrêts Techniques (V2).xlsm
    67.5 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 009
dernier inscrit
dede972