2 Listes déroulantes en conflits ?

thespeedy20

XLDnaute Occasionnel
Bonjour,

j'ai deux listes déroulantes distinctes, une pour la plage B18:B63 et une pour la plage P18:63....dans la feuille Rec

Dans la plage B18:B63 j'obtiens la liste de colonne P18:63 !!!!

Les valeurs de la liste de la B18:B63 se trouve dans la feuille Profs et celle P18:63 dans la feuille Evenements.
les deux listes se retrouvent dans la feuille Rec

VB:
Dim Lst As Range
Dim Lst2 As Range
Dim Liste As String

With Worksheets("Profs")
        Set Lst = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp))
    End With
    ThisWorkbook.Names.Add "Liste", "=Profs!" & Lst.Address
   
With Worksheets("Rec").Range("B18:B63").Validation
        .Delete
        .Add xlValidateList, , , "=Liste"
        .InputTitle = "Sélection"
        .InputMessage = "Recherche rapide"
    End With
   
   
With Worksheets("Evenements")
        Set Lst2 = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp))
    End With
    ThisWorkbook.Names.Add "Liste", "=Evenements!" & Lst2.Address
   
With Worksheets("Rec").Range("P18:P63").Validation
        .Delete
        .Add xlValidateList, , , "=Liste"
        .InputTitle = "Sélection"
        .InputMessage = "Recherche rapide"
    End With
 

Pièces jointes

  • Annexe 11.xlsm
    63.2 KB · Affichages: 11

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Vous parlez de la liste Profs ?
Si c'est ça c'est bizarre chez moi ça marche. J'ai fait un essai avec cette liste :

I1.jpg

Je reviens sur Rec puis sur Profs, et j'obtiens :
I2.jpg

Tout à suivi de N° à Situation administrative.
A vous lire.
Bonsoir.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bien le bonjour,
Le bug vient de votre fonction Trier_Numeroter "Rec", "A18:B63" au lieu de Trier_Numeroter "Rec", "A18:W63" . A rectifier dans votre module.
Le problème maintenant c'est que la renumérotation ne marche plus car des cellules sont fusionnées. Sur appel de la renumérotation il dit :
3.jpg

Je suppose que vous avez fusionné des cellules à cause du Matricule établissement.
d'où deux solutions :
1- Vous modifier le module de renumérotation, mais sans passer par la fonction Sort, ce qui va ne pas être facile.
2- Vous supprimez le matricule établissement dans sa forme actuelle pour qu'il ne prenne qu'une cellule, et comme vous tenez à séparer les chiffres, en clicquant sur la cellule vous ouvrez une ComBox.
3- Idem 2 mais on entre à la main le matricule de l'établissement dans la cellule, et vous faites une macro de sécurité pour vérifier le nombre de caractères par exemple.
A vous lire.
NB : Ci joint la modif à faire pour étendre le tri:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lst As Range
Dim Lst2 As Range
Dim Liste As String
Dim Plg As Range
   If Not Intersect(Target, Range("A18:B63")) Is Nothing Then
      ' Si l'intersection entre la plage modifiée : Target
      '  et la plage utile : c15:d60
      '  n'est pas vide. On appelle donc la procédure : Trier_Numeroter
      '  avec ces deux arguments (nom de la feuiller et adresse' de la plage utile)
      Trier_Numeroter "Rec", "A18:B63"   ' A REMPLACER PAR "A18:W63" DANS LE MODULE SYLVANU/RENUMEROTATION
   End If
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Content de savoir que cela vous sied.
Dans le module de renumérotation, vous pouvez faire une vérification de cohérence du N° établissement avec le nombre de caractères, ou mieux si vous avez la lsite des établissements faire une liste déroulante ( une de plus ) ce qui simplifierais la tache.
Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 247
Messages
2 086 591
Membres
103 248
dernier inscrit
Happycat