XL 2021 Récupération n° du mois depuis liste déroulante texte pour macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Bonjour à tous,
Je cherche à récupérer le numéro du mois saisie dans une liste déroulante (format texte), pour intégrer ce numéro dans une macro, pour le moment j'ai une incompatibilité de type.
Merci à tous.
Nicolas

Capture d’écran 2024-06-01 080023.jpg


VB:
Sub Creation()
    Dim WsP As Worksheet
    Set WsP = ThisWorkbook.Worksheets("Paramètre")
    année = WsP.Range("B3").Value: mois = WsP.Range("C3").Value
    Agenda année, mois
    Set WsP = Nothing
End Sub
 
Bonjour,
A tester, si erreur dans les accents faut rectifier ou procéder avec un Array
Bruno
VB:
Sub Creation()
    Dim WsP As Worksheet
    Dim k%
    Set WsP = ThisWorkbook.Worksheets("Paramètre")
For k = 1 To 12
If LCase(WsP.[C3]) = Format(CDate("15/" & k & "/2000"), "mmmm") Then
année = WsP.Range("B3").Value:mois = k
Next
    Agenda année, mois
    Set WsP = Nothing
End Sub
 
Bonjour @Nicolas JACQUIN 🙂, @Dranreb 😉, @youky(BJ) 😉,

Via une fonction personnalisée plus générique avec pour paramètre xrg cette cellule :
Function IDX (xrg As Range) As Long

Cette fonction est utilisable sur une feuille de calcul ou en VBA.
  • IDX renvoie l'index de la valeur de la cellule xrg au sein de la liste de validation de la cellule xrg
  • si la cellule est vide alors IDX renvoie 0
  • si la cellule ne contient pas de liste de validation alors IDX renvoie -1
  • xrg contient plus d'une cellule alors IDX renvoie -1
Le code de la fonction est dans Module1. Voir dans le classeur joint quelques exemples d'utilisation pour différents cas. Dans votre cas, on écrira : mois = IDX(WsP.Range("C3"))

Le code de la fonction est dans Module1 :
VB:
Function IDX(xrg As Range) As Long
Dim xtype, rng As Range, liste
   If xrg.Count > 1 Then IDX = -1: Exit Function
   On Error Resume Next: xtype = xrg.Validation.Type
   If xtype <> xlValidateList Then IDX = -1: Exit Function
   Set rng = Range(xrg.Validation.Formula1)
   If Not rng Is Nothing Then
      IDX = Application.Match(xrg.Value, rng, 0)
   Else
      liste = Split(xrg.Validation.Formula1, Application.International(xlListSeparator))
      IDX = Application.Match(xrg.Value, liste, 0)
   End If
End Function
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
147
Réponses
16
Affichages
2 K
Retour