Aide avec fonction Si

Résolu
ben -  
bthenault Messages postés 58 Statut Membre -
Hello,

Je n'arrive pas a faire la fonction suivante:
Si colonne G est supérieure à 1 et inférieur à 7 alors indiquer < 7 Days
sinon
Si colonne G est supérieur ou égal à 7 et inférieur ou égal à 12 alors indiquer 7 to 12 Days
sinon
Si colonne G est supérieur ou égale à 13 et inférieur ou égal à 19 alors indiquer 12 to 19 Days
sinon
Si colonne G est supérieur ou égale à 20 et inférieur ou égal à 29 alors indiquer 12 to 19 Days
sinon
Si colonne G est supérieur à 29 alors indiquer > 29 Days

merci beaucoup

14 réponses

Résumé de la discussion

Un problème Excel porte sur la création d'une formule qui classe une valeur de la colonne G en plages de jours et affiche le libellé correspondant.
Plusieurs participants discutent d'un SI imbriqué ou d'une fonctionnalité équivalente en Excel 2007, en envisageant des formulations comme SI(G>1,G<7), ou l'équivalent VBA selon le contexte.
Les solutions évoquées incluent l'usage de SI avec tests en plage (7 à 12, 13 à 19, etc.), l'emploi de références absolues et l'adaptation à plusieurs lignes, avec des avertissements sur les erreurs possibles.
En outre, la discussion met en évidence que le problème se généralise par rapport à la colonne L et aux besoins d'affichage sur la même ligne, sans conclure sur une solution unique.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. kevin76110 Messages postés 5350 Statut Membre 875
     
    'lut,

    En quel langage ?
    1
  2. ben
     
    salut, c'est pour mettre dans excel 2007 donc je pensais typiquement =si...

    Merci beaucoup !
    1
  3. kevin76110 Messages postés 5350 Statut Membre 875
     
    =si("clique sur la case de la colonne g"<1 AND "clique sur la case de la colonne g"<7; "< 7 Days ")

    Le reste, tu fais pareil ;)
    °º¤ø,¸¸,ø¤º°'°º¤ø, Contributeur CCM °º¤ø,¸¸,ø¤º°'°º¤ø,
    c'est pas parce que la solution ne vous plait pas qu'il faut mettre -1, c'est juste quand elle est inutile qu'il faut en mettre.
    0
  4. ben
     
    J'ai test avec ça:
    =SI(L2>1 AND L2<7; "< 7 Days ");

    Et ça marche pas :/ ça me dit erreur de formule, j'ai essayé de mettre des guillemets, sans plus de succès
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kevin76110 Messages postés 5350 Statut Membre 875
     
    Et si tu mets un $ juste avant le 1 et 7

    =SI(L2>$1 AND L2<$7; "< 7 Days ");   
    
    ?
    °º¤ø,¸¸,ø¤º°'°º¤ø, Contributeur CCM °º¤ø,¸¸,ø¤º°'°º¤ø,
    c'est pas parce que la solution ne vous plait pas qu'il faut mettre -1, c'est juste quand elle est inutile qu'il faut en mettre.
    0
  7. Ctesias Messages postés 786 Statut Membre 36
     
    Excel ou VBA?

    Parce que sinon, VBA, ca sera :

    If column(7).value > 1 and column(7).value < 7 Then
    selection.autofilter Filed = 7, criteria="< 7 Days"
    End if
    If column(7).value =< 7 and column(7).value < 12 Then
    selection.autofilter Filed = 7, criteria="7 to 12 Days "
    end if 
    If column(7).value =< 13 and column(7).value < 19 Then
    selection.autofilter Filed = 7, criteria="13 to 19 Days "
    end if 
    If column(7).value =< 20 and column(7).value < 29 Then
    selection.autofilter Filed = 7, criteria="20 to 29 Days "
    end if
    If column(7).value > 29  Then
    selection.autofilter Filed = 7, criteria="> 29 Days "
    end if
    0
  8. ben
     
    Hello,

    Je cherchais en code excel, Kevin, ça ne fonctionne pas non plus :(

    Et j'ai testé pour le VBA mais j'ai besoin que le résultat s'affiche colonne L
    La, avec ta formule Ctesias, ça ne fonctionne pas, il me dit qu'il y a un problème avec "If column(7)" ...

    Merci !
    0
    1. Ctesias Messages postés 786 Statut Membre 36
       
      Peut-tu me dire ton erreur?
      0
    2. loulou
       
      Erreur dans la formule, sans plus de précisions... :*/
      0
    3. Ctesias Messages postés 786 Statut Membre 36
       
      c'est quelle erreur?
      0
    4. loulou
       
      Erreur de compilation: instruction incorrecte à l'extérieur d'une procédure :)
      0
  9. loulou
     
    Hello again :)

    J'ai essayé le vba indiqué par Ctesias ci dessus:

    If Column(12).Value > 1 And Column(7).Value < 7 Then
    Selection.AutoFilter Filed = 14, criteria = "< 7 Days"
    End If
    If Column(12).Value <= 7 And Column(7).Value < 12 Then
    Selection.AutoFilter Filed = 14, criteria = "7 to 12 Days "
    End If
    If Column(12).Value <= 13 And Column(7).Value < 19 Then
    Selection.AutoFilter Filed = 14, criteria = "13 to 19 Days "
    End If
    If Column(12).Value <= 20 And Column(7).Value < 29 Then
    Selection.AutoFilter Filed = 14, criteria = "20 to 29 Days "
    End If
    If Column(12).Value > 29 Then
    Selection.AutoFilter Filed = 14, criteria = "> 29 Days "
    End If

    EN gros, je veux classifier colonne 0, la valeur de la colonne L .

    J'ai remplacé le If Column(7).Value par If Column(12).Value pour qu'il vérifie colonne L... Mais du coup, excel me dit que le 12 est une erreur dans la formule...

    Merci de vos lumières !§
    0
    1. Ctesias Messages postés 786 Statut Membre 36
       
      Je sais ou est le probleme... tu dis: "Si la colonne 7 est superieur a 1..." Mais as-tu une somme? ou est-ce pas plutot des valeur de cellule?
      0
    2. loulou
       
      Je veux dire:

      la valeur numérique indiquéedans la cellule colonne L est supérieure à 1 et inférieur à 7 alors indiquer "< 7 Days" dans la meme ligne colonne O
      sinon
      si la valeur numérique indiquéedans la cellule colonne L est supérieur ou égal à 7 et inférieur ou égal à 12 alors indiquer "7 to 12 Days " dans la meme ligne colonne O
      sinon
      si la valeur numérique indiquéedans la cellule colonne L est supérieur ou égale à 13 et inférieur ou égal à 19 alors indiquer "12 to 19 Days " dans la meme ligne colonne O
      sinon
      si la valeur numérique indiquéedans la cellule colonne L est supérieur ou égale à 20 et inférieur ou égal à 29 alors indiquer "12 to 19 Days" dans la meme ligne colonne O
      sinon
      si la valeur numérique indiquéedans la cellule colonne L est supérieur à 29, alors indiquer > "29 Days" dans la meme ligne colonne O

      Est ce plus clair ?

      MErci beaucoup !
      0
    3. loulou
       
      et appliquer ça à toutes les lignes où la colonne L est remplie (excepté ligne 1: titres).

      Merciii !!
      0
    4. Ctesias Messages postés 786 Statut Membre 36
       
      Essaie plutot ca :

      dim maximum as integer  
      
      maximum = ActiveSheet.Range("a65536").End(xlUp).Row  
      
      For i = 1 to maximum  
      If Cells(i,12).Value > 1 And Cells(i,7).Value < 7 Then   
      Cells(i,13).Value="< 7 Days"  
      End If  
      next   
      For i = 1 to maximum  
      If Cells(i,12).Value <= 7 And Cells(i,7).Value < 12 Then   
      Cells(i,13).Value=" 7 to 12 Days"  
      End If  
      next   
      For i = 1 to maximum  
      If Cells(i,12).Value <= 13 And Cells(i,7).Value < 19 Then   
      Cells(i,13).Value="12 to 19 Days"     
      End If  
      next   
      For i = 1 to maximum  
      If Cells(i,12).Value <= 20 And Cells(i,7).Value < 29 Then   
      Cells(i,13).Value="20 to 29 Days"  
      End If  
      next   
      For i = 1 to maximum  
      If Cells(i,12).Value > 29 Then   
      Cells(i,13).Value="> 29 Days"  
      End If   
      next
      0
    5. loulou
       
      ça me met à nouveau Erreur de compilation : instructions incorrectes à l'extérieur d'une procédure
      Et ça surligne la partie xlUp

      Merci d'avance Ctesias !
      0
  10. loulou
     
    Hello Ctesias et merci pour ta patience !

    Voici mon fichier:
    http://www.cijoint.fr/cjlink.php?file=cj201106/cijGF0XjGH.xls

    J'ai besoin que colonne N vienne indiquer la catégorie de jours indiqués par le VBA.

    Donc la j'ai mis ça: et rien ne se passe (peut etre est que les colonnes ne sont pas bien indiquées ?

    l'info permettant de calculer le résultat est indiquée colonne L.

    Merci encore..

    Public Sub catégorisertat()

    maximum = WorksheetFunction.Max([Q65536].End(xlUp).Row, [R65536].End(xlUp).Row, [V65536].End(xlUp).Row, [W65536].End(xlUp).Row)
    For i = 1 To maximum
    If Cells(i, 12).Value > 1 And Cells(i, 7).Value < 7 Then
    Cells(i, 13).Value = "< 7 Days"
    End If
    Next
    For i = 1 To maximum
    If Cells(i, 12).Value <= 7 And Cells(i, 7).Value < 12 Then
    Cells(i, 13).Value = " 7 to 12 Days"
    End If
    Next
    For i = 1 To maximum
    If Cells(i, 12).Value <= 13 And Cells(i, 7).Value < 19 Then
    Cells(i, 13).Value = "12 to 19 Days"
    End If
    Next
    For i = 1 To maximum
    If Cells(i, 12).Value <= 20 And Cells(i, 7).Value < 29 Then
    Cells(i, 13).Value = "20 to 29 Days"
    End If
    Next
    For i = 1 To maximum
    If Cells(i, 12).Value > 29 Then
    Cells(i, 13).Value = "> 29 Days"
    End If
    Next

    End Sub
    0
  11. Ctesias Messages postés 786 Statut Membre 36
     
    Est-ce normal que dans ta colonne L, je n'ai que des #NOMS?
    0
    1. loulou
       
      Non, il devrait y avoir une valeur en chiffres colonne L
      Je reupload le fichier...
      http://www.cijoint.fr/cjlink.php?file=cj201106/cijKaH7KVN.xls

      Dis moi si ça marche mieux..
      0
    2. Ctesias Messages postés 786 Statut Membre 36
       
      Jen'ai toujours pas de valeurs, mais je pense que la fonction jour ouvre n'est pas dans excel 2000. Tampis, je vais mettre des valeurs au pifs ;)
      0
    3. loulou
       
      ok :)

      Pour info, il ya aussi des valeurs négatives colonne L (exemple: -140)

      Merci !
      0
    4. Ctesias Messages postés 786 Statut Membre 36
       
      Et tes valeurs sont seulements des chiffres comme 12 13 14 ?
      0
    5. loulou
       
      oui, voici les quelques premières lignes de la colonne L :
      9
      109
      73
      66
      26
      -24
      17
      16
      17
      13
      14
      0
  12. bthenault Messages postés 58 Statut Membre 1
     
    Dans ta cellule

    =Si(Somme(G1:G600)>29;">29 Days";Si(Somme(G1:G600)>=20;"20 to 28 Days";Si(Somme(G1:G600)>=19;"13 to 19 Days";Si(Somme(G2:G600)>=7;"7 to 12 Days";"<7 Days"))))

    J'espère que c'était ça, ça marche d'après ce que j'ai compris :)
    0
    1. bthenault Messages postés 58 Statut Membre 1
       
      En fait pour ce genre de chose il faut penser en inversant. On part du plus grand pour réduire. Si c'est pas supérieur à 29, c'est inférieur ou égal à 28, donc pas besoin de la préciser. On doit changer de logique. En gros là on dit, si la somme de G (1à600ici, tu peux mettre plus) est inférieur à 29 alors j'écris "> 29 Days", sinon, Si la somme est >=20, alors "20 to 28 Days".. etc
      0
    2. loulou
       
      ça ne fonctionne pas.. la case ou je met la formule donne toujours le meme resultat (>29days) mais du peux que je comprenne ta formule tu cumules les cellules G1 à G600.

      Hors moi, pour chaque chiffre comme indiqué dans le post au dessus (et colonne L dans mon fichier), j'ai besoin de savoir s'il est :
      < 7 jours
      entre 7 et 12 jours
      entre 13 et 19 jours
      entre 20 et 29 jours
      <29 jours

      genre:

      colonne L, le chiffre est 17, le résultat de la formule sur la meme ligne doit être "entre 13 et 19"
      colonne L, le chiffre est -5, le résultat de la formule sur la meme ligne doit être "< 7 "
      colonne L, le chiffre est 36, le résultat de la formule sur la meme ligne doit être "<29 "

      Est ce plus clair ?
      0
    3. loulou
       
      J'ajoute que typiquement, avec une formule SI, je l'applique sur chaque ligne (en colonne N) et j'obtiens la tranche dans laquelle est le chiffre colonne L

      Et merci de tes efforts !!
      0
  13. Ctesias Messages postés 786 Statut Membre 36
     
    BOn voila, j'ai trouvé!

    Grace à bthenault! Merci :p

    TU met dans ta cellule:
    =SI(L2>29;">29 Days";SI(L2>=20;"20 to 28 Days";SI(L2>=19;"13 to 19 Days";SI(L2>=7;"7 to 12 Days";"<7 Days"))))

    ;)
    0
    1. loulou
       
      Géniiiiall !! ça fonctionneparfaitement !

      Merci à vous tous !!!!
      0
    2. bthenault Messages postés 58 Statut Membre 1
       
      Super, c'est vrai que j'ia répondu vite fait et pas tout lu :) Je n'avais pas tout compris ce que tu demandais, le principal est qu'on a trouvé!
      0
    3. bthenault Messages postés 58 Statut Membre 1
       
      En effet je coryais que c'était pour la colonne que tu voulais la tranche, mais oui si c'est pas cellule c'est ça!!
      0
  14. loulou
     
    Super merciiii beaucoup a vous tous !!!!

    J'ai une question subsidiaire qui n'a rien a voir !!

    comme Ctesias a excel 2000 si j'ai bien compris j'ai une question:

    Si tu protèges une feuille excel contre tout changement, est ceque tu peux, sous cette version, permettre l'utilisation du filtre automatique.

    (ça marche sous 2007 mais mes utilissateurs sont sous 2000 et ça bloque..)

    Merci !!!!
    0
  15. bthenault Messages postés 58 Statut Membre 1
     
    :) Super
    Pense à cliquer "résolu" en haut de ton premier message
    0