Liste déroulante en VBA, police et cellules

Bonjour VBA masters

je souhaite créer des listes déroulantes sans liste source, seulement en VBA. Je me suis inspiré de l'un des codes de ce forum, mais là je suis bloqué.

1. La liste bibliothèque apparaît dans toute la colonne B, alors que je voudrais qu'elle apparaisse uniquement dans la cellule B6;

2. J'inscrirai 3 autres listes, mais cette fois ce sera pour la colonne C (Fonction) compris entre C11 et C22, D (Correction à apporter) compris entre D11 et D22, et E (Catégorie de paie) compris entre E11 et E22;

3. La grosseur de la police des listes déroulantes devrait être plus grande que 8.

merci de votre aide


mon fichier ne s'est pas attaché!

Sub Liste_deroulante()

'--- Déclaration des variables
Dim Plage_Listes As Range
Dim Liste As String

'--- Initialisation des variables
Set Plage_Listes = ActiveSheet.Range("B6")
Liste = "Bibliothèque Hochelaga, Bibliothèque Langelier, Bibliothèque Maisonneuve, Bibliothèque Mercier"

'--- Génération de la liste déroulante
With Plage_Listes.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Liste
    .IgnoreBlank = False
    .InCellDropdown = True
    .ShowInput = True
    .ShowError = True
End With

End Sub

SVP, où est l'erreur dans ce code? merci

Bonjour les maîtres du VBA

Bon voilà, j'ai réussi à faire ça, mais cela ne marche pas complètement.

Il y a deux listes dont les choix sont enlignés l'un à côté de l'autre (liste Installation et Catégorie de paie), alors que les deux autres listes sont normales (l'un en dessus de l'autre)!

je ne sais pas où ça cloche! Quelqu'un peut jeter un coup d’œil, svp. merci

Sub Liste_deroulante()

'--- Déclaration des variables
Dim Plage_Listes As Range
Dim Liste As String

'--- Initialisation des variables
Set Plage_Listes = ActiveSheet.Range("C6")
Liste = "Bibliothèque Hochelaga, Bibliothèque Langelier, Bibliothèque Maisonneuve, Bibliothèque Mercier, Maison de la culture Maisonnneuve, Maison de la culture Mercier"

'--- Initialisation des variables
Set Plage_Listes = ActiveSheet.Range("C11:C22")
Liste = "Aide bibliothécaire, Animateur spécialisé, Assistant évé. culturels, Bibliotechnicien, Bibliothécaire, Bibliothécaire occasionnel, Responsable tech. de production, Surveillant d'installation, Technicien artistique"

'--- Initialisation des variables
Set Plage_Listes = ActiveSheet.Range("D11:D22")
Liste = "OMISSION, RETRAIT, REMPLACÉ PAR"

'--- Initialisation des variables
Set Plage_Listes = ActiveSheet.Range("E11:E22")
Liste = "Absence autorisé avec solde, Absence autorisé sans salaire, Absence non autorisé sans salaire, Activité.syndic.payée employeur, Activité.syndic.payée syndicat, Affaire judiciaire, Aide à la maison, Férié, Férié - un vingtième, Formation, Maladie, Maladie sans salaire, Suspension sans solde, Vacances, Vacances SS"

'--- Initialisation des variables
Set Plage_Listes = ActiveSheet.Range("C6")
Liste = "Bibliothèque Hochelaga, Bibliothèque Langelier, Bibliothèque Maisonneuve, Bibliothèque Mercier, Maison de la culture Maisonnneuve, Maison de la culture Mercier"

'--- Génération de la liste déroulante
With Plage_Listes.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Liste
    .IgnoreBlank = False
    .InCellDropdown = True
    .ShowInput = True
    .ShowError = True
End With

End Sub

Bonjour VDMICHEL,

Ton code ne marchait pas car tu définissait "Plage_Liste" Plusieurs fois de suite.

Donc, lorsque tu crées la liste déroulante à la fin de la procédure, elle n'était créée que pour la dernière définition de "Plage_Liste.

Voici le code corrigé :

Sub Liste_deroulante()

'--- Déclaration des variables
Dim Plage_Listes As Range
Dim Liste As String

'--- Initialisation des variables
Set Plage_Listes = ActiveSheet.Range("C6")
Liste = "Bibliothèque Hochelaga, Bibliothèque Langelier, Bibliothèque Maisonneuve, Bibliothèque Mercier, Maison de la culture Maisonnneuve, Maison de la culture Mercier"

'--- Génération de la liste déroulante
With Plage_Listes.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Liste
    .IgnoreBlank = False
    .InCellDropdown = True
    .ShowInput = True
    .ShowError = True
End With

'--- Initialisation des variables
Set Plage_Listes = ActiveSheet.Range("C11:C22")
Liste = "Aide bibliothécaire, Animateur spécialisé, Assistant évé. culturels, Bibliotechnicien, Bibliothécaire, Bibliothécaire occasionnel, Responsable tech. de production, Surveillant d'installation, Technicien artistique"

'--- Génération de la liste déroulante
With Plage_Listes.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Liste
    .IgnoreBlank = False
    .InCellDropdown = True
    .ShowInput = True
    .ShowError = True
End With

'--- Initialisation des variables
Set Plage_Listes = ActiveSheet.Range("D11:D22")
Liste = "OMISSION, RETRAIT, REMPLACÉ PAR"

'--- Génération de la liste déroulante
With Plage_Listes.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Liste
    .IgnoreBlank = False
    .InCellDropdown = True
    .ShowInput = True
    .ShowError = True
End With

'--- Initialisation des variables
Set Plage_Listes = ActiveSheet.Range("E11:E22")
Liste = "Absence autorisé avec solde, Absence autorisé sans salaire, Absence non autorisé sans salaire, Activité.syndic.payée employeur, Activité.syndic.payée syndicat, Affaire judiciaire, Aide à la maison, Férié, Férié - un vingtième, Formation, Maladie, Maladie sans salaire, Suspension sans solde, Vacances, Vacances SS"

'--- Génération de la liste déroulante
With Plage_Listes.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Liste
    .IgnoreBlank = False
    .InCellDropdown = True
    .ShowInput = True
    .ShowError = True
End With

End Sub

J'espère que tu as compris ton erreur, sinon redemande et je t'expliquerai.

A+

Bonjour Piratman

Oui, effectivement en ayant posté le code corrigé, je vois parfaitement mon erreur.

Merci pour la réponse rapide!

Deux dernières choses à ce sujet, svp:

1. Pourquoi la liste de la colonne E - Catégorie de paie est incomplète à l'affichage de la liste, alors que tous éléments sont dans la macro?

2. Est-il possible de grossir la police des listes (pas le format de la cellule)?

A+

1) La liste de la colonne E est complète, mais n'affiche que 8 éléments. En descendant la Scrollbar du menu déroulant, tu vois les choix suivants. Malheureusement, Excel ne permet pas de choisir le nombre d'éléments affichés, c'est 8 au maximum.

2) Non, malheureusement ce n'est pas possible. La taille et la police ne sont pas modifiables.

Pour diminuer cet effet de menu trop petit et quelquefois même illisible, il faut jouer sur le Zoom de la fenêtre : Règle le à 100%,

et diminue la taille de tes cellules/colonnes.

D'accord, merci pour les précisions et pour votre solution.

à bientôt

Rechercher des sujets similaires à "liste deroulante vba police"