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

Liste déroulante VBA

JoeGillian

XLDnaute Nouveau
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

  • ClasseurXLDownload.xlsm
    31.8 KB · Affichages: 63
  • ClasseurXLDownload.xlsm
    31.8 KB · Affichages: 70
  • ClasseurXLDownload.xlsm
    31.8 KB · Affichages: 59

youky(BJ)

XLDnaute Barbatruc
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
 

JoeGillian

XLDnaute Nouveau
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+
 

youky(BJ)

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
2
Affichages
720
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…