XL 2016 Trouver la valeur correspondante d'une cellule en fonction de plusieurs conditions

Clotaireexcel

XLDnaute Nouveau
Bonjour à tous les membres de la communauté.
Le novice que je suis viens encore vers vous pour solliciter votre aide .

J'ai écris cette formule ci-dessous qui me permet d'obtenir mes résultats. Cependant, je voudrais l'écrire sous forme CODE VBA afin de la déclancher à l'aide d'un bouton. C'est beaucoup plus compréhensif dans le fichier que j'ai joint.

Merci d'avance.

Ma formule

VB:
=SI([@[RESULTAT ANNUEL]]= "Suspendu";" ";SI([@[RESULTAT ANNUEL]]="Admis en 5ème";"5ème";SI([@[RESULTAT ANNUEL]]="Admis en 5e A";"5e A";SI([@[RESULTAT ANNUEL]]="Admis en 5e B";"5e B";SI([@[RESULTAT ANNUEL]]="Admis en 5e C";"5e C";SI([@[RESULTAT ANNUEL]]="Admis en 4ème";"4ème";SI([@[RESULTAT ANNUEL]]="Admis en 4e A";"4e A";SI([@[RESULTAT ANNUEL]]="Admis en 4e B";"4e B";SI([@[RESULTAT ANNUEL]]="Admis en 4e C";"4e C";SI([@[RESULTAT ANNUEL]]="Admis en 3ème";"3ème";SI([@[RESULTAT ANNUEL]]="Admis en 3e A";"3e A";SI([@[RESULTAT ANNUEL]]="Admis en 3e B";"3e B";SI([@[RESULTAT ANNUEL]]="Admis en 3e C";"3e C";   SI(ET([@[RESULTAT ANNUEL]]= "RBT";[@ZONE]= "6e C");"6e C";      SI(ET([@[RESULTAT ANNUEL]]= "Rbl en cas d'échec";[@ZONE]= "3ème");"3ème"; SI(ET([@[RESULTAT ANNUEL]]= "Rbl en cas d'échec";[@ZONE]= "3e A ");"3e A"; SI(ET([@[RESULTAT ANNUEL]]= "Rbl en cas d'échec";[@ZONE]= "3e B");"3e B"; SI(ET([@[RESULTAT ANNUEL]]= "Rbl en cas d'échec";[@ZONE]= "3e C");"3e C"))))))))))))))))))
 

Pièces jointes

  • Classeur1.xlsm
    20.9 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Clotaire,
Un essai en PJ avec cette fonction perso :
VB:
Function Classe(C$)
    Classe = "": Car = Left(Right(C, 4), 1)
    If IsNumeric(Car) Then Classe = Right(C, 4)
End Function

Petit souci :
En cas de Rbl en cas d'échec, en H21 vous mettez FAUX, en H27 vous mettez 3ème, soit la classe actuelle. Que doit on choisir ?
 

Pièces jointes

  • Classeur1 (8).xlsm
    20.1 KB · Affichages: 2

Clotaireexcel

XLDnaute Nouveau
Bonjour Silvanu
- Pour la valeur de H21 le résultat doit être 3e A
- pour la valeur de H27, le résultat soit être 3ème.

En claire , les cellules ou les résultats sont RDBT, redouble en cas d'echec, le résultat doit être le même que celui inscrit dans la colonne G:G (ZONE).
 

Clotaireexcel

XLDnaute Nouveau
Re, Bonsoir Fanfan,
Voir PJ avec :
VB:
Function Classe(C$, Redouble$)
    Classe = "": Car = Left(Right(C, 4), 1)
    If IsNumeric(Car) Then Classe = Right(C, 4)
    If C = "Rbl en cas d'échec" Then Classe = Redouble$
End Function
Merci Sylvanu.
Le code ne prend pas en compt les cellules où la valeur est RDBT.

-Au niveau de la cellule "G4" où la valeur est RDBT, dans la cellule "H4", la valeur devrait être 6e C au lieu d'être vide

Idem pour la cellule "G5" et "G11"où la valeur est RDBT. On devait avoir dans la cellule H5 la valeur 6e C et dans la cellule H11 la valeur 6e A.
 

Clotaireexcel

XLDnaute Nouveau
... et si RDBT veut dire redoublement, voir Pj
Bonjour
Ci joint ma solution

A+ François
Fanfan. Votre réponse répond également à ma préoccupation. Elle est bien adapté à mon niveau. J'ai ai bien appris avec vous.✅✅

... et si RDBT veut dire redoublement, voir PJ.
Une dernière question SYLVANU si vous me le permettez.
Je veux placer le code dans un USERFORM.
1)Dois je déclarer des variables ?
2) le code se déclanche automatiquement ou bien j'aurai besoin d'un bouton pour le déclancher ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Je veux placer le code dans un USERFORM.
1- Je ne vois pas ce que vous voulez dire.
"Classe" est une fonction, rien de plus.
En VBA, comme sous Excel, vous pouvez l'utilisez en faisant par ex :
VB:
Sub Exemple()
    Résultat = Range("G2")
    Zone = Range("E2")
    AnnéeProchaine = Classe(Résultat, Zone)
End Sub
Ce serait l'équivalent sous Excel de mettre en K2 : =Classe(G2;F2)
Alors que cette fonction soit sous Excel, dans une macro, dans un Userform, c'est la même chose.
le code se déclanche automatiquement ou bien j'aurai besoin d'un bouton pour le déclancher
2- Il s'agit d'une fonction qui se recalcule automatiquement comme toute fonction Excel.
 

Clotaireexcel

XLDnaute Nouveau
1- Je ne vois pas ce que vous voulez dire.
"Classe" est une fonction, rien de plus.
En VBA, comme sous Excel, vous pouvez l'utilisez en faisant par ex :
VB:
Sub Exemple()
    Résultat = Range("G2")
    Zone = Range("E2")
    AnnéeProchaine = Classe(Résultat, Zone)
End Sub
Ce serait l'équivalent sous Excel de mettre en K2 : =Classe(G2;F2)
Alors que cette fonction soit sous Excel, dans une macro, dans un Userform, c'est la même chose.

2- Il s'agit d'une fonction qui se recalcule automatiquement comme toute fonction Excel.
Merci bien pour l'aide
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin