XL 2013 Utilisation de la validation de données avec plusieurs critères

Grafite

XLDnaute Nouveau
Bonjour à tous
Je sollicite votre aide pour l’utilisation de la validation de données avec plusieurs conditions.
Je souhaiterais par l’intermédiaire d’une formule entrée la validation de donnée dans des cellules en utilisant l’option personnalisé.
Par exemple sur les cellules B4, C4 et D4 (Pomme / Espagne):
Un utilisateur doit remplir peut remplir les cellules B4, C4 et D4 mais avec les conditions :
  • Autoriser uniquement dans chacune de ces cellules que des nombres décimaux,
  • L’utilisateur ne mettre une valeur dans une cellule que si SOMME($B4:$D4)<=$B$3 est VRAI
  • Et idéalement, la valeur rentrée doit être multiple de 0,5 par exemple : 0,5 1,5 2 2,5 3 3,5 4 jusqu’à la valeur max de $B$3 dans l’exemple.
J’ai testé individuellement la formule dans « personnalisée =SOMME($B4:$D4)<=$B$3 et =ESTNUM(B4:D4) ça fonctionne mais je n’arrive pas à utiliser les 2 conditions avec OU ET SI.
Merci par avance pour votre aide.

Cordialement,
 

Pièces jointes

  • Validation de données avec plusieurs crières.xlsx
    9.8 KB · Affichages: 4
Solution
Le problème est parfaitement résolu avec votre formule magique.
En tout cas, j’ai appris des choses … et bon je l’avoue ça fait un très long moment que je me prenais la tête et sans vous je n’y serais pas parvenu.

Merci encore pour votre aide.

fanch55

XLDnaute Barbatruc
Bonjour,
Je suppose que c'est $B$2 et non $B$3 .

La bonne formule de validation est propre à une cellule :
en B4 : =ET(SOMME($B4:$D4)<=$B$2;OU(B4="";ESTNUM(B4));MOD(B4;0.5)=0)
en C4: =ET(SOMME($B4:$D4)<=$B$2;OU(C4="";ESTNUM(C4));MOD(C4;0.5)=0)
en D4: =ET(SOMME($B4:$D4)<=$B$2;OU(D4="";ESTNUM(D4));MOD(D4;0.5)=0)
 
Dernière édition:

Grafite

XLDnaute Nouveau
Bonjour,
Oups! Je vous confirme qu'il s'agit de $B$2
En ajoutant les multiples, le but serait d'avoir ensuite pour les autres cellules et suivant votre formule :
en B4 : =ET(SOMME($B4:$D4)<=$B$2;OU(B4="";ESTNUM(B4)))
en C4: =ET(SOMME($B4:$D4)<=$B$2;OU(C4="";ESTNUM(C4)))
en D4: =ET(SOMME($B4:$D4)<=$B$2;OU(D4="";ESTNUM(D4)))

en B5 : =ET(SOMME($B5:$D5)<=$B$2;OU(B4="";ESTNUM(B5)))
en C5: =ET(SOMME($B5:$D5)<=$B$2;OU(C4="";ESTNUM(C5)))
en D5: =ET(SOMME($B5:$D5)<=$B$2;OU(D4="";ESTNUM(D5)))

en E4 : =ET(SOMME($E4:$G4)<=$E$2;OU(E4="";ESTNUM(E4)))
en F4: =ET(SOMME($E4:$G4)<=$E$2;OU(F4="";ESTNUM(F4)))
en G4: =ET(SOMME($E4:$G4)<=$E$2;OU(G4="";ESTNUM(G4)))

en E5 : =ET(SOMME($E5:$G5)<=$E$2;OU(E5="";ESTNUM(E5)))
en F5: =ET(SOMME($E5:$G5)<=$E$2;OU(F5="";ESTNUM(F5)))
en G5: =ET(SOMME($E5:$G5)<=$E$2;OU(G5="";ESTNUM(G5)))

Merci pour votre aide
 

Grafite

XLDnaute Nouveau
Bonjour,
Oups! Je vous confirme qu'il s'agit de $B$2
En ajoutant les multiples, le but serait d'avoir ensuite pour les autres cellules et suivant votre formule :
en B4 : =ET(SOMME($B4:$D4)<=$B$2;OU(B4="";ESTNUM(B4)))
en C4: =ET(SOMME($B4:$D4)<=$B$2;OU(C4="";ESTNUM(C4)))
en D4: =ET(SOMME($B4:$D4)<=$B$2;OU(D4="";ESTNUM(D4)))

en B5 : =ET(SOMME($B5:$D5)<=$B$2;OU(B4="";ESTNUM(B5)))
en C5: =ET(SOMME($B5:$D5)<=$B$2;OU(C4="";ESTNUM(C5)))
en D5: =ET(SOMME($B5:$D5)<=$B$2;OU(D4="";ESTNUM(D5)))

en E4 : =ET(SOMME($E4:$G4)<=$E$2;OU(E4="";ESTNUM(E4)))
en F4: =ET(SOMME($E4:$G4)<=$E$2;OU(F4="";ESTNUM(F4)))
en G4: =ET(SOMME($E4:$G4)<=$E$2;OU(G4="";ESTNUM(G4)))

en E5 : =ET(SOMME($E5:$G5)<=$E$2;OU(E5="";ESTNUM(E5)))
en F5: =ET(SOMME($E5:$G5)<=$E$2;OU(F5="";ESTNUM(F5)))
en G5: =ET(SOMME($E5:$G5)<=$E$2;OU(G5="";ESTNUM(G5)))

Merci pour votre aide
Avez-vous une idée pour n’autoriser que les multiples de 0,5 ?
 

Grafite

XLDnaute Nouveau
Le problème est parfaitement résolu avec votre formule magique.
En tout cas, j’ai appris des choses … et bon je l’avoue ça fait un très long moment que je me prenais la tête et sans vous je n’y serais pas parvenu.

Merci encore pour votre aide.
 

fanch55

XLDnaute Barbatruc
Si cela vous intéresse, le code suivant implémente les formules de validation, code adapté au classeur fourni .
VB:
Sub Set_Validation()

    L = Application.Max(4, Cells(Rows.Count, "A").End(xlUp).Row)
   
    Range("B4:D" & L).ClearContents
    Range("B4:D" & L).Validation.Delete
    With Range("B4").Validation
        .Add xlValidateCustom, xlValidAlertStop, xlBetween, _
            "=AND(SUM($B4:$D4)<=$B$2,OR(B4="""",ISNUMBER(B4)),MOD(B4,0.5)=0)"
        .IgnoreBlank = True: .InCellDropdown = True
        .InputTitle = "": .InputMessage = "": .ShowInput = True
        .ErrorTitle = "": .ErrorMessage = "": .ShowError = True
    End With
    Range("B4").AutoFill Range("B4:B" & L), xlFillValues
    Range("B4:B" & L).AutoFill Range("B4:D" & L), xlFillValues
   
    Range("E4:G" & L).ClearContents
    Range("E4:G" & L).Validation.Delete
    With Range("E4").Validation
        .Add xlValidateCustom, xlValidAlertStop, xlBetween, _
            "=AND(SUM($E4:$G4)<=$E$2,OR(E4="""",ISNUMBER(E4)),MOD(E4,0.5)=0)"
        .IgnoreBlank = True: .InCellDropdown = True
        .InputTitle = "": .InputMessage = "": .ShowInput = True
        .ErrorTitle = "": .ErrorMessage = "": .ShowError = True
    End With
    Range("E4").AutoFill Range("E4:E" & L), xlFillValues
    Range("E4:E" & L).AutoFill Range("E4:G" & L), xlFillValues
   
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 099
Messages
2 085 273
Membres
102 846
dernier inscrit
gilles45