Formule sous conditions sous Excel

Résolu/Fermé
skaybi Messages postés 5 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 11 août 2009 - 11 août 2009 à 15:51
bouket Messages postés 143 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 16 octobre 2011 - 11 août 2009 à 18:32
Bonjour,

Je me prend la tête depuis quelques jours sur une formule à priori bidon, mais qui ne fonctionne pas.
Je vous explique voici les conditions que je veux mettre sous formule.
"X" représente un nombre de jour, qui sera dans la colonne B
"Ancienneté" represente l'intervalle où su situera X, qui sera dans la colonne C

Si X<7 alors dans la colonne C, il sera noté: "1: >7 jours"
Si 7<X<15 alors dans la colonne C, il sera noté: "2: 7 jours < X < 15 jours"
Si 15<X<30 alors dans la colonne C, il sera noté: "3: 15 jours < X < 1 mois"
Si 30<X<90 alors dans la colonne C, il sera noté: "4: 1 mois < X < 3 mois"
Si 90<X<180 alors dans la colonne C, il sera noté: "5: 3 mois < X < 6 mois"
Si 180<X alors dans la colonne C, il sera noté: "6: >6 mois "

Voici 2 formules qui auraient du marcher, mais malheureusement il me met pour la premiere formule, soit un ensemble vide ou "6: >6 mois"

=IF(C2<7;"1 : < 7 jours";IF(7<C2<15;"2 : 7 jours < X < 15 jours"; IF(15<C2<30;"3 : 15 jours < X < 1mois";IF(30<C2<90;"4 : 1mois < X < 3mois";IF(90<C2<180;"5 : 3 mois < X < 6 mois";IF(180<C2;"6 : > 6 mois";""))))))

Pour la 2ème formule, il ne me met que "6: >6 mois"

=IF(C2<7;"1 : < 7 jours";IF(7<C2<15;"2 : 7 jours < X < 15 jours"; IF(15<C2<30;"3 : 15 jours < X < 1mois";IF(30<C2<90;"4 : 1mois < X < 3mois";IF(90<C2<180;"5 : 3 mois < X < 6 mois";"6 : > 6 mois";"")))))

En espérant d'avoir été clair.
Merci d'avance pour vos aides.
PS:Mon Pc est configuré en anglais c'est pour ça que j'utilise "If" au lieu de "Si".
A voir également:

8 réponses

ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7
11 août 2009 à 17:15
Première remarque tes intervalles n'englobe jamais les bornes...
Tu met if...<7 donc 7 n'est pas compris puis tu met if 7<...<15, 7 n'est toujours pas compris idem pour toutes tes bornes
Donc je te conseil de mettre par exemple if...<=7 pour inclure le 7 puis if 7<...<=15
0
skaybi Messages postés 5 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 11 août 2009
11 août 2009 à 17:21
Merci pour ta remarque, j'ai rectifié la formule, mais le problème persiste.
On dirait qu'il prend en compte que la derniere condition et que les autres conditions, ont été écrasé.
0
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7
11 août 2009 à 17:38
Je crois que j'ai saisi le problème...
Il me semble qu'il n'est pas possible d'imbriquer plus de 5 if l'un dans l'autre
en tout cas ma version ne l'accèpte pas
Excel 2003 Fr

Non en fait après vérif c 7 if
0
bouket Messages postés 143 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 16 octobre 2011 22
11 août 2009 à 17:44
Bonjour,

J 'ai une question bête. Pourquoi dans ta formule tu utilises comme comparaison C2 alors que tu regardes dans la colonne B ? Ne devrait ce pas être B2 que tu compares ?

Sinon, tu peux le faire avec une macro et c'est pas trop long ...

Je suis dessus, prêt dans 10 minutes ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7
11 août 2009 à 17:46
essaye ça en traduisant les formules
=SI(C2<7;"1 : < 7 jours";SI(ET(7<C2;C2<15);"2 : 7 jours < X < 15 jours"; SI(ET(15<C2;C2<30);"3 : 15 jours < X < 1mois";SI(ET(30<C2;C2<90);"4 : 1mois < X < 3mois";SI(ET(90<C2;C2<180);"5 : 3 mois < X < 6 mois";"6 : > 6 mois")))))
0
bouket Messages postés 143 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 16 octobre 2011 22
11 août 2009 à 17:53
Voilà :

Sub Macro1()
'
' Macro1 Macro
'
'
Dim X As Integer
Dim fin_table As Integer
fin_table = 2
Do
If fin_table > 2000 Then Exit Do
fin_table = fin_table + 1
Loop While Cells(fin_table, 2) <> ""
fin_table = fin_table - 1

For i = 2 To fin_table

Cells(i, 2).Select
X = Cells(i, 2).Value

If X < 8 Then
Cells(i, 3).Value = "1: >7 jours"
End If
If (7 < X And X < 16) Then
Cells(i, 3).Value = "2: 7 jours < X < 15 jours"
End If
If (15 < X And X < 31) Then
Cells(i, 3).Value = "3: 15 jours < X < 1 mois"
End If
If (30 < X And X < 91) Then
Cells(i, 3).Value = "4: 1 mois < X < 3 mois"
End If
If (90 < X And X < 181) Then
Cells(i, 3).Value = "5: 3 mois < X < 6 mois"
End If
If (180 < X) Then
Cells(i, 3).Value = "6: >6 mois"
End If

Next i

End Sub

Si tu as des questions, hésite pas !
Au passage : le problème est surement du au fait que tu utilisais mal le If. Je pense que la rectification dans le message précédent le mien reprend la condition 90 < X And X < 181, c'est à dire la séparation des deux conditions.
Sinon, il a conflit : ex: pour 75... 75 est plus petit que 180 ... donc il prend la dernière chose qu'il voit...
0
skaybi Messages postés 5 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 11 août 2009
11 août 2009 à 18:09
Merci Ben ta formule fonctionne!!!!
Mais c'est bizrre que la mienne ne fonctionne pas, encore un mystère de l'informatique.
Bouket, je vais tester ta macro, je te dis si ça marche.
Merci encore à vous deux pour votre aide.
0
bouket Messages postés 143 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 16 octobre 2011 22
11 août 2009 à 18:32
Très bien! Normalement la macro marche, je l'ai moi même testé... si elle peut servir à quelqu'un ... ;) !

++
0