XL 2013 La fonction INDIRECT dans les listes ne fonctionne pas

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 !

Emeline20

XLDnaute Nouveau
Bonjour,

J'ai pour habitude d'utiliser la fonction INDIRECT pour qu'une liste déroulante dépende d'une autre liste déroulante.
Or sur ce fichier elle ne veut pas fonctionner. Est-ce que quelqu'un voit d'où peut venir le problème ?

Merci d'avance

P.S. Si quelqu'un est chaud, je souhaite également que les cases "Combustible 2 - PCI 2 - Humidité 2" soient barrées d'un trait diagonal si le PCI 1 = 100 %
 

Pièces jointes

Dernière édition:
Bonsoir Emeline20, JHA, djidji59430,

Pour mettre des bordures diagonales il faut du VBA.

Alors faisons tout en VBA, le code de la 1ère feuille :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim col As Variant
Cells.Validation.Delete 'RAZ des validations
col = ActiveCell.Column
If ActiveCell.Row = 1 Or Not (col = 2 Or col = 3 Or col = 6 Or col = 9) Then Exit Sub
With Feuil2 'CodeName
    If col <> 3 Then
        col = IIf(col = 2, 1, 10)
    Else
        col = Application.Match(ActiveCell(1, 0), .Rows(2), 0)
    End If
    If IsNumeric(col) Then ActiveCell.Validation.Add xlValidateList, Formula1:="=" & .Range(.Cells(3, col), .Cells(.Rows.Count, col).End(xlUp)).Address(External:=True)
End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, i As Byte
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
'---effacements des colonnes C et D---
Set r = Intersect(Target, Range("B2:B" & Rows.Count))
If Not r Is Nothing Then Intersect(r.EntireRow, [C:D]) = ""
'---calcul de la colonne D---
Set r = Intersect(Target, Range("C2:D" & Rows.Count), UsedRange)
If Not r Is Nothing Then
    Set r = Intersect(r.EntireRow, [D:D])
    For Each r In r.Areas
        r = "=IFERROR(VLOOKUP(RC[-1],'Listes déroulantes'!R2C7:R7C8,2,0),"""")"
        r = r.Value 'supprime les formules
    Next r
End If
Application.EnableEvents = True 'réactive les évènements
'---Bordures diagonales---
Set r = Intersect(Target, Range("G2:G" & Rows.Count), UsedRange)
If Not r Is Nothing Then
    For Each r In r
        For i = 5 To 6
            With Intersect(r.EntireRow, Range("I:K")).Borders(i)
                If r = 100 Then .Weight = xlThin Else .LineStyle = xlNone
            End With
    Next i, r
End If
End Sub
Notez que les valeurs de la colonne D ne peuvent plus être modifiées manuellement.

A+
 

Pièces jointes

- 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

Retour