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+
 

Discussions similaires

Réponses
2
Affichages
706

Statistiques des forums

Discussions
312 490
Messages
2 088 879
Membres
103 981
dernier inscrit
vinsalcatraz