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:

Staple1600

XLDnaute Barbatruc
Re

@halecs93
En fait, c'est le code que t'as fourni @Gégé-45550 qui est dans ta dernière PJ.
(Dans le fil que je cite dans le message#9)
Du coup ceci est pas tip top
Du coup, j'ai tenté une approche totalement différente. Et pour éviter tout cynisme, j'ai bricolé comme j'ai pu...avec mon niveau débutant.
Citer l'auteur du code initial est indolore et ne fait pas perdre ses cheveux
;)
 

halecs93

XLDnaute Impliqué
Re

@halecs93
En fait, c'est le code que t'as fourni @Gégé-45550 qui est dans ta dernière PJ.
(Dans le fil que je cite dans le message#9)
Du coup ceci est pas tip top

Citer l'auteur du code initial est indolore et ne fait pas perdre ses cheveux
;)
Heu... je ne crois pas... je suis passé par un tableau est formule concatener... c'était aussi sa proposition ? Si c'est le cas.... navré
 

Staple1600

XLDnaute Barbatruc
Re

@halecs93
Je parlais du code de l'useform1 qui est celui fourni par @Gégé-45550

PS: Nulle part dans cette discussion, tu parles de la précédente
(C'est moi qui la cite dans le message#9)
C'eut été un plus que tu le fasses pour suivre l'historique du projet

Oui, j'ai vu les deux colonnes masquées avec les formules
=CONCATENER(C4&D4&E4&F4&G4)
et
=SIERREUR(RECHERCHEV(L4;Feuil2!$J$2:$K$77;2;FAUX);"")

Je sais toujours pas comment fonctionne ton fichier (si on ne fait pas les modifs que j'ai faite pour tester)
Car comme je le disais, quand je saisis une date puis un nom sur l'userform
il ne passe rien et le bouton VALIDER reste "inhibé"

D'où ma question du message#15
(là où je parle de mode d'emploi)
 

halecs93

XLDnaute Impliqué
Re

@halecs93
Je parlais du code de l'useform1 qui est celui fourni par @Gégé-45550

PS: Nulle part dans cette discussion, tu parles de la précédente
(C'est moi qui la cite dans le message#9)
C'eut été un plus que tu le fasses pour suivre l'historique du projet

Oui, j'ai vu les deux colonnes masquées avec les formules
=CONCATENER(C4&D4&E4&F4&G4)
et
=SIERREUR(RECHERCHEV(L4;Feuil2!$J$2:$K$77;2;FAUX);"")

Je sais toujours pas comment fonctionne ton fichier (si on ne fait pas les modifs que j'ai faite pour tester)
Car comme je le disais, quand je saisis une date puis un nom sur l'userform
il ne passe rien et le bouton VALIDER reste "inhibé"

D'où ma question du message#15
(là où je parle de mode d'emploi)
Ha ok ok... en fait, j'ai rajouté en toute urgence la possibilité de rajouter le nom de l'équipier.... mais sans aucune cohérence avec le reste de l'userform. D'ailleurs, ce champ renseigné ou pas, l'userform fonctionne. Pour le reste, j'ai voulu "inhiber" le bouton tant que tous les autres champs n'étaient pas saisis... de façon à m'assurer du bon fonctionnement des formules
 

Staple1600

XLDnaute Barbatruc
Re

Je me répète
Comment ca marche ?
(test en condition réelle - sans mes modifications)
Le bouton VALIDER est grisé
Je ne peux pas aller plus loin
Comment.png
 

RyuAutodidacte

XLDnaute Impliqué
Bonsoir @halecs93 et le fil,

@halecs93
Il faudra que tu vérifies si tu as bien vraiment 54 conditions
ET
si il n y a pas d'erreurs
(cf tableau dans fichier joint selon ton texte en post# 1
Le tableau dans le fichier joint faudra surement le corriger !!!!!!


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"

Pour vérifier toutes tes conditions (logiquement uniques) ce code te suffira (cf. test fichier joint) :
PS : j'ai appelé le tableau "CONDITIONS"

VB:
    Sub Launch() 'Pour test
 
        'CalcPoints "P1", "P2", "P3", "P4", "P5", "P6" <= appel de la function avec ses paramètres
        MsgBox "Le résultat est : " & CalcPoints("Co-voiturage", "4", "", "Trajet domicile - travail", "- de 10", "12")   ' => cf. ligne 14
     
    End Sub
 
    Function CalcPoints(P1$, P2$, P3$, P4$, P5$, P6$) As Integer
    Dim VA, i As Byte, Condi As New Collection, Points As Byte
 
        VA = Range("CONDITIONS").Value
        For i = LBound(VA) To UBound(VA)
            Condi.Add CInt(VA(i, 6)), VA(i, 1) & VA(i, 2) & VA(i, 3) & VA(i, 4) & VA(i, 5)
        Next

       On Error Resume Next
        Points = Condi(P1 & P2 & P3 & P4 & P5)
        If Err Then Err.Clear:   MsgBox "Calcul impossible, données manquantes", vbOKOnly

        CalcPoints = Points * CInt(P6)
    End Function

PS 2 : j'ai utilisé Visual Studio Code pour récupérer plus facilement les textes et les copier dans le tableaux

Edit : ajout de la gestion d'erreur si le cas n'existe pas … dans le code ci-dessus
(pas mis dans le fichier => copier / coller ce code
)
 

Pièces jointes

  • 54 Conditions.xlsm
    20.4 KB · Affichages: 6
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
Ne pourriez vous porter dans une feuille supplémentaire les valeurs possibles des ComboBoxB5 à ComboBoxG5 dans dans un tableau à 7 colonnes, la 7ème étant le nombre de points à appliquer pour chaque combinaison valide ?
Si vous faites ça je vous retrouverai en un rien de temps cette valeur de point en fonction des 6 ComboBox !
Remarque: Il faut le savoir, leurs listes seront puisées dans ce tableau, sans doublon et par ordre alphabétique. Pas possible autrement, à moins de commencer chaque texte par un numéro d'ordre de cas.
 
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
Bonsoir.
Ne pourriez vous porter dans une feuille supplémentaire les valeurs possibles des ComboBoxB5 à ComboBoxG5 dans dans un tableau à 7 colonnes, la 7ème étant le nombre de points à appliquer pour chaque combinaison valide ?
Si vous faites ça je vous retrouverai en un rien de temps cette valeur de point en fonction des 6 ComboBox !
Remarque: Il faut le savoir, leurs listes seront puisées dans ce tableau, sans doublon et par ordre alphabétique. Pas possible autrement, à moins de commencer chaque texte par un numéro d'ordre de cas.
Bonsoir @Dranreb ,

J'ai un doute, mais ce que j'ai proposé en post#25, c'est pas quasi la même chose ??
j'ai fais 6 colonnes … la fonction renvoyant la valeur calculé …

1695168119360.png
 

Dranreb

XLDnaute Barbatruc
Bonsoir @RyuAutodidacte,
Je n'avais pas ouvert le classeur du poste #25 parce que j'y avais aussi vu des bout de code qui ne me paraissaient pas changer grand chose et surtout la Function CalcPoints qui était toujours là.
Mon idée est complètement différente: elle consisterait à faire purement et simplement prendre en charge les ComboBox concernées par un exemplaire de mon type d'objet ComboBoxLiées convenablement piloté pour qu'il se base sur ce tableau.
Si ça intéresse le demandeur je le reprendrai probablement, en remplaçant peut être les titres P1 à P6 par les intitulés en Label surmontant les ComboBox.
 

RyuAutodidacte

XLDnaute Impliqué
Bonsoir @RyuAutodidacte,
Je n'avais pas ouvert le classeur du poste #25 parce que j'y avais aussi vu des bout de code qui ne me paraissaient pas changer grand chose et surtout la Function CalcPoints qui était toujours là.
Mon idée est complètement différente: elle consisterait à faire purement et simplement prendre en charge les ComboBox concernées par un exemplaire de mon type d'objet ComboBoxLiées convenablement piloté pour qu'il se base sur ce tableau.
Si ça intéresse le demandeur je le reprendrai probablement, en remplaçant peut être les titres P1 à P6 par les intitulés en Label surmontant les ComboBox.
Re
OK si je comprends bien; via les ComboBox tu vas te servir des Headers (labels ComboBox) du tableau pour entrecroiser le résultat et avoir le bon numéro de ligne qui te renverra le point concerné te permettant de faire le calcul …?

C'est quoi :
type d'objet ComboBoxLiées"
?? qui sont concaténés ? qui sont associés ? entre eux
 

Dranreb

XLDnaute Barbatruc
C'est un module de classe.
Il en utilise aussi un autre, ComboBoxMembre, qui sert de support à chaque ComboBox dont on lui confie la charge, et un module de service standard MSujetCBx pour constituer leurs listes classées et sans doublon à partir des colonnes d'un tableau. Mais le plus souvent on n'a pas à s'y interesser dans la programmation applicative de l'UserForm.
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 183
Membres
112 677
dernier inscrit
Justine11