Afficher liste validation sous condition...

Christian0258

XLDnaute Accro
Bonjour à tout le forum,

Le souhaiterais votre aide à l'écriture d'une macro, afin afficher ou non une liste de validation...

Voir fichier joint;

Je vous remercie, par avance, pour le temps que vous voudrez bien vouloir m'accoder.

Bien à vous,
Christian
 

Pièces jointes

  • Liste Validation Affichée Sous Condition V01.zip
    44.6 KB · Affichages: 35

JCGL

XLDnaute Barbatruc
Re : Afficher liste validation sous condition...

Bonjour à tous,
Salut Christian,
Salut Rachid,

VB:
Sub Test()
    On Error Resume Next
    Columns(8).SpecialCells(xlCellTypeAllValidation).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
             xlBetween, Formula1:="=if($E2>42000,Liste,"""")"
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With
    Range("H2").Select
End Sub

A+ à tous
 

MP59

XLDnaute Occasionnel
Re : Afficher liste validation sous condition...

Bonjour à tous,
voici un essai en PJ
MP59
 

Pièces jointes

  • Copie de Liste Validation Affichée Sous Condition V01.xlsm
    96.8 KB · Affichages: 37
  • Copie de Liste Validation Affichée Sous Condition V01.xlsm
    96.8 KB · Affichages: 44
  • Copie de Liste Validation Affichée Sous Condition V01.xlsm
    96.8 KB · Affichages: 45

Christian0258

XLDnaute Accro
Re : Afficher liste validation sous condition...

Re, le forum, JCGL, R@chid, MP59

Merci à vous pour votre aide.

Salut JCGL, ta macro je la place ou...lol
Merci, R@chid, ça fonctionne parfaitement mais je préfère par macro.
Merci MP59, mais ça plante dès l'appel d'une date...

à vous lire,
Bien à vous,
Christian
 

JCGL

XLDnaute Barbatruc
Re : Afficher liste validation sous condition...

Bonjour à tous,

VB:
Private Sub CommandButton1_Click()
    Const MCM_FIRST& = &H1000&, MCM_GETCURSEL& = (MCM_FIRST + 1&)
    Dim LeTime As SYSTEMTIME
    'Récuperer la date sélectionnée dans une cellule
    SendMessage mWnd, MCM_GETCURSEL, 0&, LeTime
    With LeTime
        'MsgBox "Vous avez choisi le : " & vbNewLine & vbTab & _
         Format(DateSerial(.wYear, .wMonth, .wDay), "dddd dd mmmm yyyy") & "."
        Date2 = DateSerial(.wYear, .wMonth, .wDay)
        'Récupérer la date sélectionnée dans une TextBox
        If Not ObjetSource Is Nothing Then
            If InStr(1, "Range,TextBox", TypeName(ObjetSource)) > 1 Then ObjetSource.Value = Date2
        End If
    End With
    Unload Me
    On Error Resume Next
    Range("H2:H500").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
             xlBetween, Formula1:="=IF($E2>42000,Liste,"""")"
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With
    Range("H2").Select
End Sub

A+ à tous
 

Pièces jointes

  • JC Liste Validation Affichée Sous Condition.xlsm
    45.7 KB · Affichages: 31

JCGL

XLDnaute Barbatruc
Re : Afficher liste validation sous condition...

Bonjour à tous,

Petite amélioration pour atteindre la cellule de validation après sélection d'une date (décalage de trois colonnes vers la droite) :

VB:
Private Sub CommandButton1_Click()Dim Cellule As Range
    Const MCM_FIRST& = &H1000&, MCM_GETCURSEL& = (MCM_FIRST + 1&)
    Dim LeTime As SYSTEMTIME
    SendMessage mWnd, MCM_GETCURSEL, 0&, LeTime
    With LeTime
        Date2 = DateSerial(.wYear, .wMonth, .wDay)
    End With
    Unload Me
    Set Cellule = ActiveCell
    On Error Resume Next
    Range("H2:H500").Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
             xlBetween, Formula1:="=IF($E2>42000,Liste,"""")"
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With
    Cellule.Offset(, 3).Select
End Sub

A+ à tous
 

job75

XLDnaute Barbatruc
Re : Afficher liste validation sous condition...

Bonjour le fil, le forum,

Voici 2 solutions.

Celle du fichier (1) n'est pas bien fameuse :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[H:H].Validation.Delete 'RAZ
If Not Intersect(ActiveCell, [H:H]) Is Nothing Then
  If IsDate(ActiveCell(, -2)) Then
    Me.Unprotect "toto"
    ActiveCell.Validation.Add xlValidateList, Formula1:="=Liste"
    Me.Protect "toto"
  End If
End If
End Sub
Celle du fichier (2) nécessite une ligne 2 masquée avec la liste de validation en H2 :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sel As Range, ac As Range
Range("H3:H" & Rows.Count).Validation.Delete 'RAZ
Set sel = Selection: Set ac = ActiveCell
If Not Intersect(ac, [H:H]) Is Nothing Then
  If IsDate(ac(, -2)) Then
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    [H2].Select: [H2] = ac: [H2].Copy ac
    sel.Select: ac.Activate
    Application.EnableEvents = True
  End If
End If
End Sub
Edit : le problème de la 1ère solution est que la déprotection/protection prend du temps.

On est obligé de la faire malgré UserInterfaceOnly = True.

Bonne journée.

A+
 

Pièces jointes

  • Liste Validation Affichée Sous Condition(1).xlsm
    95.9 KB · Affichages: 26
  • Liste Validation Affichée Sous Condition(2).xlsm
    96.3 KB · Affichages: 28
Dernière édition:

MP59

XLDnaute Occasionnel
Re : Afficher liste validation sous condition...

Bonjour Christian,
cela ne fonctionnait pas uniquement à cause de la protection.
Voici le fichier avec une tentative de résolution de ce problème.
MP59
 

Pièces jointes

  • Copie de Liste Validation Affichée Sous Condition V01.xlsm
    98 KB · Affichages: 24
  • Copie de Liste Validation Affichée Sous Condition V01.xlsm
    98 KB · Affichages: 50
  • Copie de Liste Validation Affichée Sous Condition V01.xlsm
    98 KB · Affichages: 43

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 111
dernier inscrit
Eric68350