XL pour MAC Liste déroulante à choix multiples Excel mac

excelraideo

XLDnaute Nouveau
Bonjour,

Je me permets d'ouvrir cette discussion car j'ai fait un calendrier 2022 pour un groupe spécifique de personnes ne timbrant pas au sein de l'entreprise mais devant quand même informer de leur présence (si présence demi-journée ou jour complet et où). Je l'ai fait sous forme de calendrier annuel comme cela ne requiert pas de timbrage.

Mon problème est que j'aimerais y intégrer une liste déroulante à choix multiple dans les colonnes "AM" et "PM" comprenant les informations des colonnes "JU", "JUBE" et "NE" de l'onglet "Données". Le problème est que je ne sais pas comment faire ce type de liste déroulante. Je ne sais pas si le fait que je sois sur mac et que je travaille sur Word 2016 pour Mac fait une différence.

Je vois mets le lien du fichier pour mieux vous rendre compte de ce que c'est :


Je vous remercie de votre aide et de vos retours !
Kevin
 
Solution
Dans une liste de validation un seul élément peut être sélectionné:

Mais dans la cellule active on peut concaténer les choix successifs, fichier (2) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If IsError(Target.Validation.Type) Or Target.Count > 1 Or IsEmpty(Target(1)) Then Exit Sub
Dim memo$, mess As Byte
Application.EnableEvents = False 'désactive les évènements
memo = CStr(Target) 'mémorise l'entrée
Application.Undo 'annule l'entrée
If Not IsEmpty(Target) Then Beep: mess = MsgBox("Voulez-vous concaténet '" & memo & "' ?", vbYesNo + vbQuestion, "Concaténation")
If mess = vbYes Then Target = CStr(Target) & "-" & memo Else Application.Undo
Application.EnableEvents = True 'réactive les...

job75

XLDnaute Barbatruc
Bonsoir excelraideo, bienvenue sur XLD,

Pourquoi déposer votre fichier sur Cjoint qui ne le gardera que quelques jours ?

Déposez-le ici en cliquant sur "Joindre un fichier".

Pour les listes de validation je ne crois pas que MAC pose problème.

Simplement il ne peut y avoir qu'une liste de validation dans une cellule.

Si cette liste doit changer il faut nous dire quels critères la font changer.

A+
 

excelraideo

XLDnaute Nouveau
Bonjour,

J'ai voulu poster ma demande avant l'inscription et il est vrai que l'action "joindre un fichier" n'était pas possible. Donc voici le fichier en pièce jointe.

Pour la liste de validation, je suis consciens qu'il y a qu'une seule liste de validation par cellule mais j'ai besoin de cette liste de validation contienne les éléments des colonnes citées dans mon premier message et que l'on puisse en choisir un ou plusieurs selon où l'on a travaillé (un ou plusieurs lieux de travail) par demi-journée (AM/PM).

A titre informatif, les lieux de travail indiqués dans l'onglet "Données" comprennent les sites de travail de l'institution ainsi que les sites de travail de nos partenaires où nous exerçons également.

Exemple ci-dessous :
AM : D-REP (D = Delémont ; REP = Mon Repos)
PM : M-RES (M = Moutier ; RES = La Résidence)

Si la liste change ce sera uniquement un ajout ou une suppression de lieu dans l'onglet "Données" donc dans une des colonnes "JU", "JUBE" ou "NE".

Merci pour votre retour.
 

Pièces jointes

  • calendrier-2022.xls
    62.5 KB · Affichages: 4

excelraideo

XLDnaute Nouveau
Bonjour,

J'ai voulu poster ma demande avant l'inscription et il est vrai que l'action "joindre un fichier" n'était pas possible. Donc voici le fichier en pièce jointe.

Pour la liste de validation, je suis consciens qu'il y a qu'une seule liste de validation par cellule mais j'ai besoin de cette liste de validation contienne les éléments des colonnes citées dans mon premier message et que l'on puisse en choisir un ou plusieurs selon où l'on a travaillé (un ou plusieurs lieux de travail) par demi-journée (AM/PM).

A titre informatif, les lieux de travail indiqués dans l'onglet "Données" comprennent les sites de travail de l'institution ainsi que les sites de travail de nos partenaires où nous exerçons également.

Exemple ci-dessous :
AM : D-REP (D = Delémont ; REP = Mon Repos)
PM : M-RES (M = Moutier ; RES = La Résidence)

Si la liste change ce sera uniquement un ajout ou une suppression de lieu dans l'onglet "Données" donc dans une des colonnes "JU", "JUBE" ou "NE".

Merci pour votre retour.

Re-bonjour,

Je me permets de préciser ma réponse ci-dessus...En effet, dans la liste de validation, les informations dans les colonnes "Autres" et "Absences" mentionnées dans l'onglet "Données" devraient être incluses.

Si cela est possible, je mettrai une mise en forme conditionnelle pour les données "Autres" et "Absences" selon la légende de couleur figurant sur le calendrier.

Merci de votre retour.
 

excelraideo

XLDnaute Nouveau
Bonjour,

Source de données :
> Onglet "Données", plage A1-E15

> Pas de message de saisie
> Pas d'alerte si erreur

Si modification de la liste, plage A1-E15 susceptible de changer (potentiellement A1-E16) mais à priori pas de changement avant plusieurs années.

J'espère avoir répondu.
A+
 

job75

XLDnaute Barbatruc
Donc si je comprends bien il n'y a pas de critères pour créer la liste de validation.

Tout ce que vous voulez c'est créer une seule liste alors voyez cette macro dans le code de la 1ère feuille :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i&, j%, nlig&, x, liste(), n&
Cells.Validation.Delete 'RAZ
i = ActiveCell.Row
j = ActiveCell.Column
If i < 4 Or i > 34 Or Cells(3, j) <> "AM" And Cells(3, j) <> "PM" Then Exit Sub
With Sheets("Données").[A1].CurrentRegion
    nlig = .Rows.Count
    For j = 1 To .Columns.Count
        For i = 2 To nlig
            x = .Cells(i, j)
            If Not IsEmpty(x) Then
                ReDim Preserve liste(n)
                liste(n) = x
                n = n + 1
            End If
    Next i, j
    With .Columns(.Columns.Count + 2).EntireColumn
        .ClearContents
        If n Then
            .Resize(n) = Application.Transpose(liste) 'Transpose est limitée à 65536 lignes
            .Resize(n).Sort .Cells(1), xlAscending, Header:=xlNo 'tri alphabétique (facultatif)
            .Resize(n).Name = "Liste" 'plage nommée
            With ActiveCell.Validation
                .Add xlValidateList, Formula1:="=Liste" 'création de la liste de validation
                .ShowError = False 'pas de message d'erreur
            End With
        End If
    End With
End With
End Sub
PS : il y a un doublon dans la liste, à vous de faire en sorte qu'il n'y en ait pas.
 

Pièces jointes

  • calendrier-2022(1).xls
    60.5 KB · Affichages: 5

excelraideo

XLDnaute Nouveau
Donc si je comprends bien il n'y a pas de critères pour créer la liste de validation.

Tout ce que vous voulez c'est créer une seule liste alors voyez cette macro dans le code de la 1ère feuille :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i&, j%, nlig&, x, liste(), n&
Cells.Validation.Delete 'RAZ
i = ActiveCell.Row
j = ActiveCell.Column
If i < 4 Or i > 34 Or Cells(3, j) <> "AM" And Cells(3, j) <> "PM" Then Exit Sub
With Sheets("Données").[A1].CurrentRegion
    nlig = .Rows.Count
    For j = 1 To .Columns.Count
        For i = 2 To nlig
            x = .Cells(i, j)
            If Not IsEmpty(x) Then
                ReDim Preserve liste(n)
                liste(n) = x
                n = n + 1
            End If
    Next i, j
    With .Columns(.Columns.Count + 2).EntireColumn
        .ClearContents
        If n Then
            .Resize(n) = Application.Transpose(liste) 'Transpose est limitée à 65536 lignes
            .Resize(n).Sort .Cells(1), xlAscending, Header:=xlNo 'tri alphabétique (facultatif)
            .Resize(n).Name = "Liste" 'plage nommée
            With ActiveCell.Validation
                .Add xlValidateList, Formula1:="=Liste" 'création de la liste de validation
                .ShowError = False 'pas de message d'erreur
            End With
        End If
    End With
End With
End Sub
PS : il y a un doublon dans la liste, à vous de faire en sorte qu'il n'y en ait pas.

Bonjour,

Je vous remercie pour la rapidité de votre retour.

La liste correspond partiellement à ce que je souhaite car j'aimerais dans cette liste pouvoir sélectionner un ou plusieurs éléments.

J'ai dû mal comprendre pour votre demande précédente si je comprends bien.

Merci pour le doublon.

A+
 

job75

XLDnaute Barbatruc
Dans une liste de validation un seul élément peut être sélectionné:

Mais dans la cellule active on peut concaténer les choix successifs, fichier (2) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If IsError(Target.Validation.Type) Or Target.Count > 1 Or IsEmpty(Target(1)) Then Exit Sub
Dim memo$, mess As Byte
Application.EnableEvents = False 'désactive les évènements
memo = CStr(Target) 'mémorise l'entrée
Application.Undo 'annule l'entrée
If Not IsEmpty(Target) Then Beep: mess = MsgBox("Voulez-vous concaténet '" & memo & "' ?", vbYesNo + vbQuestion, "Concaténation")
If mess = vbYes Then Target = CStr(Target) & "-" & memo Else Application.Undo
Application.EnableEvents = True 'réactive les évènements
End Sub
Edit : ajouté un Beep avant la MsgBox.
 

Pièces jointes

  • calendrier-2022(2).xls
    70.5 KB · Affichages: 3
Dernière édition:

excelraideo

XLDnaute Nouveau
Dans une liste de validation un seul élément peut être sélectionné:

Mais dans la cellule active on peut concaténer les choix successifs, fichier (2) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If IsError(Target.Validation.Type) Or Target.Count > 1 Or IsEmpty(Target(1)) Then Exit Sub
Dim memo$, mess As Byte
Application.EnableEvents = False 'désactive les évènements
memo = CStr(Target) 'mémorise l'entrée
Application.Undo 'annule l'entrée
If Not IsEmpty(Target) Then mess = MsgBox("Voulez-vous concaténet le texte choisi ?", 4)
If mess = vbYes Then Target = CStr(Target) & " " & memo Else Application.Undo
Application.EnableEvents = True 'réactive les évènements
End Sub

Bonsoir,

Je vous remercie pour le retour cela correspond à ce que je souhaite. Par contre, est-ce qu'il est possible de mettre un "-" au lieu d'un espace lorsqu'on concatène les choix ?

De plus, j'ai vu voulu enlever le doublon "UHPA" dans la liste mais lorsque je fais un test ensuite la liste remet le doublon. Pouvez-vous m'expliquer svp ?

Merci beaucoup pour votre aide !
Kevin
 

job75

XLDnaute Barbatruc
J'ai édité le post #9 pour ajouter un Beep et mis un tiret puisque vous avez un poil dans la main.

Pour supprimer le doublon effacez soit la cellule A13 soit la cellule B10 de la 2ème feuille.

Vous n'avez pas compris que la liste en colonne G se reconstruit à chaque fois ?
 

Discussions similaires