Microsoft 365 Sélection par défaut valeur dans liste déroulante

vby

XLDnaute Nouveau
Bonsoir cher Forum,

Je sollicite votre aide svp,
J'ai une liste déroulante presque dans chaqu'une des feuilles de mon classeur VBA une liste déroulante.
J'ai partagé ce classeur avec des collègues qui peuvent défiler la liste déroulante.
Je voudrais que lors de l'ouverture d'une feuille que RESULTAT GENERAL soit par défaut sélectionné avant de commencer à défiler.

La liste déroulante se trouve à cellule H5 dans la feuille KPI-1
La liste déroulante se trouve à cellule N4 dans la feuille KPI-2
La liste déroulante se trouve à cellule K11 dans la feuille KPI-3
La liste déroulante se trouve à cellule H11 dans la feuille KPI-4
La liste déroulante se trouve à cellule I13 dans la feuille KPI-7

Etant novice en Vba, je préfère vous partager le code intégral, c'est seulement cette préoccupation signalée ci dessus que je veux insérer :

Private Sub Workbook_Open()


Application.DisplayFullScreen = True

'Définir le zoom pour chaque feuille
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case "SOMMAIRE"
ws.Activate
ActiveWindow.Zoom = 33
Case "BASE DE DONNEES"
ws.Activate
ActiveWindow.Zoom = 55
Case "BASE2"
ws.Activate
ActiveWindow.Zoom = 100
Case "BASE1"
ws.Activate
ActiveWindow.Zoom = 100
Case "INDICATEURS CLES DE PERFORMANCE"
ws.Activate
ActiveWindow.Zoom = 66
Case "KPI-1"
ws.Activate
ActiveWindow.Zoom = 82
Case "KPI-2"
ws.Activate
ActiveWindow.Zoom = 73
Case "KPI-3"
ws.Activate
ActiveWindow.Zoom = 78
Case "KPI-4"
ws.Activate
ActiveWindow.Zoom = 77
Case "KPI-5"
ws.Activate
ActiveWindow.Zoom = 77
Case "KPI-6"
ws.Activate
ActiveWindow.Zoom = 66
Case "KPI-7"
ws.Activate
ActiveWindow.Zoom = 91
Case "KPI-8"
ws.Activate
ActiveWindow.Zoom = 66
Case "TOS"
ws.Activate
ActiveWindow.Zoom = 87

End Select
Next ws


'Modifier nom de la feuille à protéger et le mot de passe
Sheets("SOMMAIRE").Protect password:="adminn"
Sheets("BASE DE DONNEES").Protect password:="passer"
Sheets("BASE2").Protect password:="adminn"
Sheets("BASE1").Protect password:="adminn"
Sheets("INDICATEURS CLES DE PERFORMANCE").Protect password:="adminn"
Sheets("KPI-1").Protect password:="adminn"
Sheets("KPI-2").Protect password:="adminn"
Sheets("KPI-3").Protect password:="adminn"
Sheets("KPI-4").Protect password:="adminn"
Sheets("KPI-5").Protect password:="adminn"
Sheets("KPI-6").Protect password:="adminn"
Sheets("KPI-7").Protect password:="adminn"
Sheets("KPI-8").Protect password:="adminn"


'Activer la feuille SOMMAIRE
Sheets("SOMMAIRE").Activate


End Sub

Sub ShowScrollBars()
Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
' Définir la zone de défilement pour inclure toutes les cellules
ws.ScrollArea = ""
' Activer la barre de défilement vertical et horizontal
ws.ScrollBars = xlBoth
Next ws
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Vby, Phil,
D'autant que dans votre code il n'y a aucune ligne concernant les listes déroulantes.
Pour le code, utilisez les balises </> c'est plus lisible ( à droite de l'icone GIF )
Et "just for the fun" , votre première macro doit pouvoir se simplifier ( mais sans être testée évidemment )
VB:
Private Sub Workbook_Open()
Application.DisplayFullScreen = True
'Définir le zoom pour chaque feuille
Dim ws As Worksheet, Z%
For Each ws In ThisWorkbook.Worksheets
    Select Case ws.Name
        Case "SOMMAIRE":                        Z = 33
        Case "BASE DE DONNEES":                 Z = 55
        Case "BASE2":                           Z = 100
        Case "BASE1":                           Z = 100
        Case "INDICATEURS CLES DE PERFORMANCE": Z = 66
        Case "KPI-1":                           Z = 82
        Case "KPI-2":                           Z = 73
        Case "KPI-3":                           Z = 78
        Case "KPI-4":                           Z = 77
        Case "KPI-5":                           Z = 77
        Case "KPI-6":                           Z = 66
        Case "KPI-7":                           Z = 91
        Case "KPI-8":                           Z = 66
        Case "TOS":                             Z = 87
    End Select
    ws.Activate
    ActiveWindow.Zoom = Z
Next ws
'Modifier nom de la feuille à protéger et le mot de passe
For Each ws In ThisWorkbook.Worksheets
    Sheets(ws.Name).Protect Password:="adminn"
Next ws
'Activer la feuille SOMMAIRE
Sheets("SOMMAIRE").Activate
End Sub
 

Phil69970

XLDnaute Barbatruc
Re
Bonjour Sylvain

Sylvain :
Juste une modification dans ton code pour ceci :
(Sauf si c'est une erreur de saisie de vby)
Sheets("BASE DE DONNEES").Protect password:="passer"

VB:
Private Sub Workbook_Open()
Application.DisplayFullScreen = True
'Définir le zoom pour chaque feuille
Dim ws As Worksheet, Z%
For Each ws In ThisWorkbook.Worksheets
    Select Case ws.Name
        Case "SOMMAIRE":                        Z = 33
        Case "BASE DE DONNEES":                 Z = 55
        Case "BASE2":                           Z = 100
        Case "BASE1":                           Z = 100
        Case "INDICATEURS CLES DE PERFORMANCE": Z = 66
        Case "KPI-1":                           Z = 82
        Case "KPI-2":                           Z = 73
        Case "KPI-3":                           Z = 78
        Case "KPI-4":                           Z = 77
        Case "KPI-5":                           Z = 77
        Case "KPI-6":                           Z = 66
        Case "KPI-7":                           Z = 91
        Case "KPI-8":                           Z = 66
        Case "TOS":                             Z = 87
    End Select
    ws.Activate
    ActiveWindow.Zoom = Z
Next ws
'Modifier nom de la feuille à protéger et le mot de passe
For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "BASE DE DONNEES" Then
        Sheets(ws.Name).Protect Password:="adminn"
    Else
        Sheets(ws.Name).Protect Password:="passer"
    End If
Next ws
'Activer la feuille SOMMAIRE
Sheets("SOMMAIRE").Activate
End Sub

Pour le reste j'attends son fichier ;)

@Phil69970
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Il n'y a aucune liste déroulante dans les cellules que vous avez évoquées au post #1.
Donc on ne sait pas ce qu'on doit mettre dedans. On peut faire par exemple dans la feuille KPI-1 :
Code:
Sub Worksheet_Activate()
    ActiveSheet.Unprotect password:="adminn"
' Remplir la liste avec les items
    Liste = "Résultat général,Item1,Item2,Item3,Item4,Item5"
' ListeDéroulante
    Range("H5").Select
    Selection.Value = Split(Liste, ",")(0)
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Liste
        .ShowInput = True: .ShowError = True
    End With
    ActiveSheet.Protect password:="adminn"
End Sub
Je n'ai mis à jour que la feuille KPI-1, il suffit de la dupliquer dans les autres feuilles en changeant :
1- La cellule concernée
2- La liste des items. Par défaut ce sera le premier item affiché.
La macro se lance automatiquement lorsque la feuille est sélectionnée.
 

Pièces jointes

  • Dashboard (1).xlsm
    359.5 KB · Affichages: 2

vby

XLDnaute Nouveau
Re

Avec ce que j'ai compris ...... mais j’ai pas compris le but recherché :oops:
Le MDP fournit pour KPI-7 est faux donc à modifier dans le code

@Phil69970
Oui pour le KPI-7 j'ai fait l'erreur d'écrire ADMINN en majuscule.
Le fichier est un classeur partagé avec les collègues sur Teams. Les utilisateurs peuvent le consulter et changer de partenaire au niveau de la liste déroulante pour visualiser les KPI du partenaire concerné.

L'objectif recherché est que : je souhaiterai que lorsque l'utilisateur a fini et fermé le classeur, que lorsqu'il rouvre à nouveau le classeur que RESULTAT GENERAL s'affiche par défaut au niveau de liste avant qu'il ne prenne autre option de partenaire

Par contre j'ai ressayé avec votre exemple mais ca ne marche pas !
 

vby

XLDnaute Nouveau
Bonjour,
Il n'y a aucune liste déroulante dans les cellules que vous avez évoquées au post #1.
Donc on ne sait pas ce qu'on doit mettre dedans. On peut faire par exemple dans la feuille KPI-1 :
Code:
Sub Worksheet_Activate()
    ActiveSheet.Unprotect password:="adminn"
' Remplir la liste avec les items
    Liste = "Résultat général,Item1,Item2,Item3,Item4,Item5"
' ListeDéroulante
    Range("H5").Select
    Selection.Value = Split(Liste, ",")(0)
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Liste
        .ShowInput = True: .ShowError = True
    End With
    ActiveSheet.Protect password:="adminn"
End Sub
Je n'ai mis à jour que la feuille KPI-1, il suffit de la dupliquer dans les autres feuilles en changeant :
1- La cellule concernée
2- La liste des items. Par défaut ce sera le premier item affiché.
La macro se lance automatiquement lorsque la feuille est sélectionnée.
Merci, j'ai essayé mais ca ne marche pas.

Après si je choisis Item4 et que je ferme et rouvre le classeur, c'est toujours Item4 qui s'affiche au lieu de Résultat général
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Après si je choisis Item4 et que je ferme et rouvre le classeur, c'est toujours Item4 qui s'affiche au lieu de Résultat général
Ce que vous affirmez m'échappe.
Cette macro met à jour la liste déroulante en KPI-1.
Après enregistrement puis ré ouverture alors c'est la feuille Sommaire qui est activée par défaut.
Donc si vous choisissez la feuille KPI-1 alors la macro s'exécutera et vous aurez la bonne valeur.

Quelle manip faites vous exactement ?
Quand vous ouvrez le fichier c'est bien la feuille Sommaire qui est active ?
 

vby

XLDnaute Nouveau
Bonjour,

Ce que vous affirmez m'échappe.
Cette macro met à jour la liste déroulante en KPI-1.
Après enregistrement puis ré ouverture alors c'est la feuille Sommaire qui est activée par défaut.
Donc si vous choisissez la feuille KPI-1 alors la macro s'exécutera et vous aurez la bonne valeur.

Quelle manip faites vous exactement ?
Quand vous ouvrez le fichier c'est bien la feuille Sommaire qui est active ?
Par défaut c'est la feuille SOMMAIRE qui est affiché à l'ouverture classeur qui sert de page d'accueil. Normalement je desactive l'affichage des feuilles et la navigation se fait uniquement à partir des liens pour accéder au KPI-1 à 8 ainsi Base de données , Tos et autres.

Maintenant une fois que l'on accéde aux KPI-1 et qu'on déroule la liste déroulante pour choisir par exemple Item4 pour visualiser les progressions d'un partenaire (Item4).
Si l'utilisateur ferme le classeur en le laissant à Item4, Je souhaiterai que lorsqu'il rouvre le classeur et arrivé au KPI-1 que par défaut c'est RESULTAT GENERAL qui s'affiche au lieu de Item4
 

Discussions similaires

Réponses
36
Affichages
2 K

Statistiques des forums

Discussions
315 098
Messages
2 116 193
Membres
112 679
dernier inscrit
Yupanki