Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Liste déroulante VBA

  • Initiateur de la discussion Initiateur de la discussion JoeGillian
  • Date de début Date de début

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 !

J

JoeGillian

Guest
Mes amis,

Une nouvelle énigme perturbe mes nuits pendant la journée: il s'agit de créer une liste de validation dans une colonne intitulée "Version cible SIG"; cependant cette colonne peut ne pas se trouver à la même place.
Cette liste , créée via Données/validation offre quatre choix présents dans le fichier joint.

Je suis en train de chercher de la façon suivante: détecter la case "Version cible SIG" pour insérer la liste en-dessous .
Est-il possible de l'appliquer jusqu'à la dernière ligne renseignée(sur une variante de ActiveCell.Currentregion)?
Enfin , il serait préférable que la matrice servant de base à la liste n'apparaisse pas sur la feuille: peut-on l'écrire directement en VBA, et si oui, comment?

Merci pour vos idées que vais allègrement reprendre à mon compte!Lol
 

Pièces jointes

Re : Liste déroulante VBA

Bonjour JoeGillian,
Voici une petite macro qui trouve la bonne colonne et mets la validation jusqu'a la dernière ligne de col A

Bruno

Code:
Sub maliste()
col = Application.Match("Version cible SIG", [Feuil1!A1:IV1], 0)
If IsError(col) Then MsgBox "pas trouvé!"
 'Cells.Validation.Delete
  lig = Range("A" & Rows.Count).End(3).Row
With Range(Cells(2, col), Cells(lig, col)).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="Version 4.3 Développement,Version 4.3 Production,Version 5.0 Développement,Version 5.0 Production"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
 
Re : Liste déroulante VBA

Merci Youky d'avoir pris un peu de ton temps et d'avoir été aussi rapide à répondre.
J'ai néanmoins encore quelques soucis :
- la colonne ciblée n'est pas trouvée - en revanche ta MSGBox s'affiche bien. Au débogage , voici la ligne qui pose problème:
With Range(Cells(2, col), Cells(lig, col)).Validation
-Je ne suis pas sûr d'avoir bien compris: la validation est-elle effectuée dans la colonne A?

Pendant ce temps je fais des recherches sur le code suivant pour trouver la colonne "Version cible SIG":
Dim cell As Range
Dim col As Integer
Dim v As Variant

For Each cell In Rows(1).Cells
v = cell.Value
Debug.Print v
If v = "" Then Exit For
Select Case v
Case "Version cible SIG"

Je planche sur la suite; en tout cas merci de m'avoir aidé.

A+
 
Re : Liste déroulante VBA

re,
un oubli de ma part sur la ligne . .
If IsError(col) Then MsgBox "pas trouvé!"
il faut comme ceci (rajout en gras)
If IsError(col) Then MsgBox "pas trouvé!":Exit Sub

Bruno
 
Re : Liste déroulante VBA

Sire Youky,

J'ai mis le temps mais vraiment:MMMMMeeeeeeeeeeeeeeeeeeeeeeeeeerci!!!
La macro fonctionne du tonnerre.
La classe.
Ah, je sais pas si je te l'ai dit , mais:Merci!
A+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…