Critères choix appartement : liste déroulante et calcul des points

anthoYS

XLDnaute Barbatruc
Bonjour,


Dans mon fichier 2 feuilles. Le but étant de calculer le total de points en fonction du choix par menu liste déroulante (source : feuil2').

Je ne parviens plus à effectuer le menu liste déroulante sous Excel 2007, j'ai bien un livre Excel 2007, mais dans le déménagement, il a du rester chez ma sœur.​


Merci
 

Pièces jointes

  • choix_appart_anthoYs.xlsx
    10.1 KB · Affichages: 48

vgendron

XLDnaute Barbatruc
bonjour

déjà.. il faut mettre de l'ordre dans ton fichier et mettre les noms et listes de validations aux bons endroits..

1) feuille Listes
==> Créer les plages nommées : cf gestionnaire de nom pour les trois premières que j'ai faites
2) feuille 1:==> liste de validation dans la colonne B pour choisir,
et formule en Colonne C pour les points

voila. tu as ce qu'il faut pour faire le reste.. normalement..
 

Pièces jointes

  • choix_appart_anthoYs.xlsx
    10.5 KB · Affichages: 22

job75

XLDnaute Barbatruc
Bonsoir anthoYS, vgendron,
S'il y a d'autres méthodes qui permettent d'éviter de mentionner le nombre de points un à un mais d'afficher directement le total via un code VB je suis preneur.
Pas besoin de VBA, cette formule en C14 donne directement la somme sans utiliser la plage C2:C10 :
Code:
=SOMMEPROD(SOMME.SI(Tableau;"*"&B2:B10;DECALER(Tableau;;1)))
L'astérisque * est nécessaire à cause du signe >= en B4.

Fichier (3) joint.

A+
 

Pièces jointes

  • choix_appart_anthoYs (3).xlsx
    17 KB · Affichages: 17

job75

XLDnaute Barbatruc
Bonjour le forum,

Mais le VBA est bien utile pour définir les tableaux sources et les listes de validation en B2:B10.

Le code de la feuille "Listes" :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range, t, ub&, i%, col%, x$, j&
Set plage = Feuil1.[B2:B10] 'CodeName et adresse à adapter
UsedRange.Name = "Tableau1" '1er nom défini
UsedRange.Offset(, 1).Name = "Tableau2" '2ème nom défini
t = [Tableau1] 'matrice, plus rapide]
ub = UBound(t)
For i = 1 To plage.Count
    col = 2 * i - 1: x = ""
    For j = 1 To ub
        If t(j, col) <> "" Then x = x & "," & t(j, col)
    Next j
    With plage(i).Validation
        .Delete
        .Add xlValidateList, Formula1:=Mid(x, 2) 'liste en dur
    End With
Next i
End Sub
2 tableaux sources sont définis, cela évite la fonction volatile DECALER dans la formule.

Fichier .xlsm joint.

A+
 

Pièces jointes

  • choix_appart_anthoYs VBA (1).xlsm
    23.9 KB · Affichages: 19

Discussions similaires

Réponses
8
Affichages
411