XL 2016 Calculs ou "If" imbriqués ?

halecs93

XLDnaute Impliqué
J'ai manqué à tous mes devoirs.....

Bien entendu, je dis bonjour ou bonsoir ;)

Je me mélange les pinceaux..il y a de quoi....

Grâce aux bons conseils du forum, le fichier s'est construit peu à peu....

Mais, dans la fonction de calcul je ne retrouve pas toutes mes possibilités

Function CalcPoints(P1$, P2$, P3$, P4$, P5$, P6$) 'CalcPoints(valeurB5=mode de transport, valeurC5=Nb de personnes, valeurD5=territoire, valeurE5=type de trajet, valeurF5=Nb de km, valeurG5=Nb de trajets)
Dim Points
Points = 0
Select Case P1
Case "Co-voiturage"
Select Case P4
Case "Trajet domicile - travail"
If CInt(P2) = 2 Then
Points = 0
ElseIf CInt(P2) = 3 Then
Points = 1
ElseIf CInt(P2) = 4 Then
Points = 2
Else
Points = 0
End If
If P5 = "- de 10" Then
Points = Points + 2
ElseIf P5 = "de 10 à 20" Then
Points = Points + 3
ElseIf P5 = "+ de 20" Then
Points = Points + 4
Else
GoTo Probleme
End If
Case "Temps de travail dont formation"
If CInt(P2) = 2 Then
Points = 0.5
ElseIf CInt(P2) = 3 Then
Points = 1
ElseIf CInt(P2) = 4 Then
Points = 2
Else
Points = 0
End If
If P5 = "- de 10" Then
Points = Points + 2
ElseIf P5 = "de 10 à 20" Then
Points = Points + 3
ElseIf P5 = "+ de 20" Then
Points = Points + 4
Else
GoTo Probleme
End If
End Select
Case "Vélo électrique"
Select Case P4
Case "Trajet domicile - travail"
If P5 = "- de 10" Then
Points = Points + 3
ElseIf P5 = "de 10 à 20" Then
Points = Points + 4
ElseIf P5 = "+ de 20" Then
Points = Points + 5
Else
GoTo Probleme
End If
Case "Temps de travail dont formation"
If P3 = "intra muros" Then
Points = Points + 2
ElseIf P3 = "extra muros" Then
Points = Points + 3
Else
GoTo Probleme
End If
End Select
Case "Vélo classique"
Select Case P4
Case "Trajet domicile - travail"
If P5 = "- de 10" Then
Points = Points + 4
ElseIf P5 = "de 10 à 20" Then
Points = Points + 5
ElseIf P5 = "+ de 20" Then
Points = Points + 6
Else
GoTo Probleme
End If
Case "Temps de travail dont formation"
If P3 = "intra muros" Then
Points = Points + 3
ElseIf P3 = "extra muros" Then
Points = Points + 4
Else
GoTo Probleme
End If
End Select
Case "Multi mobilité"
Select Case P4
Case "Trajet domicile - travail"
If P5 = "- de 10" Then
Points = Points + 2
ElseIf P5 = "de 10 à 20" Then
Points = Points + 3
ElseIf P5 = "+ de 20" Then
Points = Points + 4
Else
GoTo Probleme
End If
Case "Temps de travail dont formation"
If P5 = "- de 10" Then
Points = Points + 2
ElseIf P5 = "de 10 à 20" Then
Points = Points + 3
ElseIf P5 = "+ de 20" Then
Points = Points + 4
Else
GoTo Probleme
End If
End Select
Case "Marche"
Select Case P4
Case "Trajet domicile - travail"
If P5 = "Moins de 2 km" Then
Points = Points + 4
ElseIf P5 = "De 2 à 5 km" Then
Points = Points + 5
ElseIf P5 = "5 km et +" Then
Points = Points + 6
Else
GoTo Probleme
End If
Case "Temps de travail dont formation"
If P3 = "intra muros" Then
Points = Points + 3
ElseIf P3 = "extra muros" Then
Points = Points
Else
GoTo Probleme
End If
End Select
End Select
Points = Points * CInt(P6)
CalcPoints = Points
Exit Function
Probleme:
MsgBox "Calcul impossible, données manquantes", vbOKOnly
CalcPoints = 0
End Function


Et voici l'ensemble des conditions (54, je sais ;) )

Si P1 = "Co-voiturage" et P2 = 2 et et P3 = "Trajet domicile - travail" et P4 = "- de 10", alors le nombre de points est 2 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 2 et et P3 = "Trajet domicile - travail" et P4 = "de 10 à 20", alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 2 et et P3 = "Trajet domicile - travail" et P4 = "+ de 20", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 2 et et P3 = "Temps de travail dont formation" et P4 = "- de 10", alors le nombre de points est 2,5 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 2 et et P3 = "Temps de travail dont formation" et P4 = "de 10 à 20", alors le nombre de points est 3,5 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 2 et et P3 = "Temps de travail dont formation" et P4 = "+ de 20", alors le nombre de points est 4,5 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 3 et et P3 = "Trajet domicile - travail" et P4 = "- de 10", alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 3 et et P3 = "Trajet domicile - travail" et P4 = "de 10 à 20", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 3 et et P3 = "Trajet domicile - travail" et P4 = "+ de 20", alors le nombre de points est 5 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 3 et et P3 = "Temps de travail dont formation" et P4 = "- de 10", alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 3 et et P3 = "Temps de travail dont formation" et P4 = "de 10 à 20", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 3 et et P3 = "Temps de travail dont formation" et P4 = "+ de 20", alors le nombre de points est 5 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 4 et et P3 = "Trajet domicile - travail" et P4 = "- de 10", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 4 et et P3 = "Trajet domicile - travail" et P4 = "de 10 à 20", alors le nombre de points est 5 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 4 et et P3 = "Trajet domicile - travail" et P4 = "+ de 20", alors le nombre de points est 6 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 4 et et P3 = "Temps de travail dont formation" et P4 = "- de 10", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 4 et et P3 = "Temps de travail dont formation" et P4 = "de 10 à 20", alors le nombre de points est 5 multiplié par le nombre de kilometres"
Si P1 = "Co-voiturage" et P2 = 4 et et P3 = "Temps de travail dont formation" et P4 = "+ de 20", alors le nombre de points est 6 multiplié par le nombre de kilometres"
Si P1 = "Vélo électrique" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "- de 10", alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Vélo électrique" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "de 10 à 20", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Vélo électrique" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "+ de 20", alors le nombre de points est 5 multiplié par le nombre de kilometres"
Si P1 = "Vélo électrique" et et Intra Muros et P3 = "Temps de travail dont formation" et , alors le nombre de points est 2 multiplié par le nombre de kilometres"
Si P1 = "Vélo électrique" et et Extra Muros et P3 = "Temps de travail dont formation" et , alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Vélo classique" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "- de 10", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Vélo classique" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "de 10 à 20", alors le nombre de points est 5 multiplié par le nombre de kilometres"
Si P1 = "Vélo classique" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "+ de 20", alors le nombre de points est 6 multiplié par le nombre de kilometres"
Si P1 = "Vélo classique" et et Intra Muros et P3 = "Temps de travail dont formation" et , alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Vélo classique" et et Extra muros et P3 = "Temps de travail dont formation" et , alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "- de 10", alors le nombre de points est 2 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "de 10 à 20", alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "+ de 20", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Intra Muros et P3 = "Temps de travail dont formation" et P4 = "- de 10", alors le nombre de points est 2 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Intra Muros et P3 = "Temps de travail dont formation" et P4 = "de 10 à 20", alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Intra Muros et P3 = "Temps de travail dont formation" et P4 = "+ de 20", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Marche" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "Moins de 2 km", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Marche" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "De 2 à 5 km", alors le nombre de points est 5 multiplié par le nombre de kilometres"
Si P1 = "Marche" et et Intra Muros et P3 = "Trajet domicile - travail" et P4 = "5 km et +", alors le nombre de points est 6 multiplié par le nombre de kilometres"
Si P1 = "Marche" et et Intra Muros et P3 = "Temps de travail dont formation" et P4 = "intra muros", alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Vélo électrique" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "- de 10", alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Vélo électrique" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "de 10 à 20", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Vélo électrique" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "+ de 20", alors le nombre de points est 5 multiplié par le nombre de kilometres"
Si P1 = "Vélo classique" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "- de 10", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Vélo classique" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "de 10 à 20", alors le nombre de points est 5 multiplié par le nombre de kilometres"
Si P1 = "Vélo classique" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "+ de 20", alors le nombre de points est 6 multiplié par le nombre de kilometres"
Si P1 = "Marche" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "Moins de 2 km", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Marche" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "De 2 à 5 km", alors le nombre de points est 5 multiplié par le nombre de kilometres"
Si P1 = "Marche" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "5 km et +", alors le nombre de points est 6 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "- de 10", alors le nombre de points est 2 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "de 10 à 20", alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Extra Muros et P3 = "Trajet domicile - travail" et P4 = "+ de 20", alors le nombre de points est 4 multiplié par le nombre de kilometres"
Si P1 = "Marche" et et Extra Muros et P3 = "Temps de travail dont formation" et P4 = "intra muros", alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Extra Muros et P3 = "Temps de travail dont formation" et P4 = "- de 10", alors le nombre de points est 2 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Extra Muros et P3 = "Temps de travail dont formation" et P4 = "de 10 à 20", alors le nombre de points est 3 multiplié par le nombre de kilometres"
Si P1 = "Multi mobilité" et et Extra Muros et P3 = "Temps de travail dont formation" et P4 = "+ de 20", alors le nombre de points est 4 multiplié par le nombre de kilometres"



J'ai tenté une autre approche, uniquement basée sur des "If"... mais je bloque totalement...

.
Merci... beacoup !!!
 

Pièces jointes

  • CALCUL.xlsm
    437.4 KB · Affichages: 9
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
Supporter XLD
Re
@Dranreb Merci pour les précisions ;)

@halecs93
En testant ton userform en prenant par exemple vélo électrique puis validant l’ensemble des combobox qui apparaissent, il me semble qu’il ne prends pas en compte ces cas … ce qui ferait plus de 54 conditions,
donc je me demande si tu n'as pas oublié des conditions ou si dans le déroulement de userform tu as pas généralisé le choix dans les combobox qui ajoutent des conditions qui ne devraient pas être.
 

Dranreb

XLDnaute Barbatruc
Ça me fait penser que, bien entendu, mon ComboBoxLiée ne propose dans les listes des ComboBox prises en charge restant à renseigner que les éléments compatibles avec celles qui le sont déjà. Dès que les choix n'aboutissent plus qu'a une seule ligne les non renseignées sont assumés automatiquement. Tous changement est signalé à l'UserForm via évènements fournissant notamment le ou les numéros de lignes du tableau où les valeurs y existent.
 

RyuAutodidacte

XLDnaute Impliqué
Supporter XLD
@halecs93
Voilà un moyen simple de créer toutes tes conditions cf fichier joint
je te laisse le soin de gérer les points de ton coté et les listes si il y a une correction
mais dans les principe c'est ok donc si cela convient tu as juste à créer directements toutes tes conditions avec les listes et le boutons
 

Pièces jointes

  • MAKE CONDITIONS.xlsm
    20.3 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
@halecs93, bonjour.
Ne manquez pas de joindre une version de votre classeur munie de votre version du tableau des points si vous voulez que je l'équipe des modules de service permettant l'utilisation d'un objet ComboBoxLiées et, dans l'UserForm, des instructions qui le mettent en œuvre en utilisant ce tableau.
 

RyuAutodidacte

XLDnaute Impliqué
Supporter XLD
Re @halecs93

j'ai modifié le fichier Make conditions pour coller au texte que tu avais écris, par contre je suis pas sur pour la dernière colonne

le pbm est que tu fais :
Si P1 = "Co-voiturage" et P2 = 2 et et P3 = "Temps de travail dont formation" …

puis pour TERRITOIRE tu fais :
Si P1 = "Vélo électrique" et et Extra Muros et P3 = "Trajet domicile - travail"

et dans le code du post#1;
VB:
' … code
    If P3 = "intra muros" Then
    Points = Points + 3
    ElseIf P3 = "extra muros" Then
' … code

??????

VB:
    Select Case P4
    Case "Trajet domicile - travail"
        ' code …
    Case "Temps de travail dont formation"
        ' code …
    End Select

????
y a des incohérences … non … ?
 

Pièces jointes

  • MAKE CONDITIONS.xlsm
    19.8 KB · Affichages: 0
Dernière édition:

halecs93

XLDnaute Impliqué
Re @halecs93

j'ai modifié le fichier Make conditions pour coller au texte que tu avais écris, par contre je suis pas sur pour la dernière colonne

le pbm est que tu fais :


puis pour TERRITOIRE tu fais :


et dans le code du post#1;
VB:
' … code
    If P3 = "intra muros" Then
    Points = Points + 3
    ElseIf P3 = "extra muros" Then
' … code

??????

VB:
    Select Case P4
    Case "Trajet domicile - travail"
        ' code …
    Case "Temps de travail dont formation"
        ' code …
    End Select

????
y a des incohérences … non … ?
Je ne sais pas.... mais les points m'ont été communiqués comme ça
 

halecs93

XLDnaute Impliqué
Re @halecs93

j'ai modifié le fichier Make conditions pour coller au texte que tu avais écris, par contre je suis pas sur pour la dernière colonne

le pbm est que tu fais :


puis pour TERRITOIRE tu fais :


et dans le code du post#1;
VB:
' … code
    If P3 = "intra muros" Then
    Points = Points + 3
    ElseIf P3 = "extra muros" Then
' … code

??????

VB:
    Select Case P4
    Case "Trajet domicile - travail"
        ' code …
    Case "Temps de travail dont formation"
        ' code …
    End Select

????
y a des incohérences … non … ?
Ouais en effet... la logique et moi...on doit être fâché
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 227
Membres
103 159
dernier inscrit
FBallea