1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

Fonction SI avec ET ou OU et des intervalles

Discussion dans 'Forum Excel' démarrée par Josée, 26 Avril 2017.

  1. Josée

    Josée XLDnaute Nouveau

    Inscrit depuis le :
    25 Avril 2017
    Messages :
    14
    "J'aime" reçus :
    0
    Sexe :
    Féminin
    Travail/Loisirs :
    Analyste en procédés administratifs
    Habite à:
    Québec
    Bonjour à tous,

    Je suis un peu perdue ;0... et j'aurais besoin d'aide.
    En même temps je suis nouvelle sur le blog et je ne sais pas trop comment ça fonctionne...

    Je dois créer une formule qui me permettrait d'identifier des SECTEURS à partir de CENTRES DE RESPONSABILITÉ.
    Pour être plus claire, je m'explique :
    J'ai une colonne A avec les centres de responsabilité:
    ex. de 1121 à 8999
    Je veux dans ma colonne B indiquer que : Si b1>=1221<1370 ou <=4129<4200;"SM", etc.
    Voici mes intervalles (qui sont bien différentes l'une des autres) :
    Cabinet = 1121 et 1122
    SM = 1221 à 1369 et 4129 à 4199
    Admin= 1422 à 1589 et 3000 et 64000

    Merci de m'aider. :(
     
  2. piga25

    piga25 XLDnaute Accro

    Inscrit depuis le :
    16 Février 2009
    Messages :
    1731
    "J'aime" reçus :
    387
    Habite à:
    Proche de la suisse
    Utilise:
    Excel 2010 (PC)
    Bonjour,
    Il aurait été préférable de poster dans la rubrique QUESTION - Forum Excel
    D'autre part un petit fichier exemple est toujours mieux pour cerner la question.
    Voir si le fichier joint convient
     

    Pièces jointes:

    Josée aime votre message.
  3. Josée

    Josée XLDnaute Nouveau

    Inscrit depuis le :
    25 Avril 2017
    Messages :
    14
    "J'aime" reçus :
    0
    Sexe :
    Féminin
    Travail/Loisirs :
    Analyste en procédés administratifs
    Habite à:
    Québec
    Super!! C'est une bonne idée!. Je prends aussi note du commentaire, je ne comprends pas bien encore tous les aspects du site. Un gros merci @piga25
     
  4. Josée

    Josée XLDnaute Nouveau

    Inscrit depuis le :
    25 Avril 2017
    Messages :
    14
    "J'aime" reçus :
    0
    Sexe :
    Féminin
    Travail/Loisirs :
    Analyste en procédés administratifs
    Habite à:
    Québec
    @piga25... Ça ne fonctionne pas. J'ai 17 paramètres différents, Est-ce que ça peut être la raison? Je joins un fichier si vous voulez bien m'aider ;( Merci d'avance.
     

    Pièces jointes:

  5. JHA

    JHA XLDnaute Barbatruc

    Inscrit depuis le :
    15 Juillet 2006
    Messages :
    6629
    "J'aime" reçus :
    260
    Sexe :
    Masculin
    Habite à:
    Dunkerque
    Utilise:
    Excel 2013 (PC)
    Bonjour à tous,

    A essayer cette formule matricielle
    Code (Text):
    =INDEX($A$3:$A$19;PETITE.VALEUR(SI(($F2<=$C$3:$C$19)*($F2>=$B$3:$B$19);LIGNE($B$3:$B$19)-2);1))
    JHA
     

    Pièces jointes:

  6. Josée

    Josée XLDnaute Nouveau

    Inscrit depuis le :
    25 Avril 2017
    Messages :
    14
    "J'aime" reçus :
    0
    Sexe :
    Féminin
    Travail/Loisirs :
    Analyste en procédés administratifs
    Habite à:
    Québec
    wow! je ne comprends pas cette formule mais ça vraiment l'air de fonctionner... Merci!!
     
  7. Josée

    Josée XLDnaute Nouveau

    Inscrit depuis le :
    25 Avril 2017
    Messages :
    14
    "J'aime" reçus :
    0
    Sexe :
    Féminin
    Travail/Loisirs :
    Analyste en procédés administratifs
    Habite à:
    Québec
    Allo JHA,
    Ta formule marche super bien dans ton fichier... Quand je la reporte dans le mien, il y a un problème, ma matricielle se copie mais indique l'erreur #NOMBRE!. Il y a une chose que je ne comprends pas bien dans la formule et qui fait peut-être la différence. Que veulent dire le -2);1) de la fin. Merci à l'avance je sens que j'arrive vers un résultat probant. ;)
     
  8. JHA

    JHA XLDnaute Barbatruc

    Inscrit depuis le :
    15 Juillet 2006
    Messages :
    6629
    "J'aime" reçus :
    260
    Sexe :
    Masculin
    Habite à:
    Dunkerque
    Utilise:
    Excel 2013 (PC)
    Bonjour à tous,

    LIGNE($B$3:$B$19)-2);1
    La plage débute en b3, le moins 2 permet de revenir au numéro 1 pour comptabiliser le bon numéro de ligne de la petite valeur

    Le 1 en bout de formule indique à la fonction de rechercher la valeur la plus petite.

    JHA
     
  9. Josée

    Josée XLDnaute Nouveau

    Inscrit depuis le :
    25 Avril 2017
    Messages :
    14
    "J'aime" reçus :
    0
    Sexe :
    Féminin
    Travail/Loisirs :
    Analyste en procédés administratifs
    Habite à:
    Québec
    Merci de ton temps JHA... Je ne suis pas familière avec le langage peut-être mais je ne comprends pas ce que tu veux dire avec : "le moins 2 permet de revenir au numéro 1 pour comptabiliser le bon numéro de ligne de la petite valeur"... Voici le fichier avec 2 feuilles dans le classeur et comme tu peux voir ça m'amène toujours le même résultat?! Pourquoi le b2 dans ma formule reste b2 en se recopiant?

    Merci à l'avance ;)
     

    Pièces jointes:

  10. JHA

    JHA XLDnaute Barbatruc

    Inscrit depuis le :
    15 Juillet 2006
    Messages :
    6629
    "J'aime" reçus :
    260
    Sexe :
    Masculin
    Habite à:
    Dunkerque
    Utilise:
    Excel 2013 (PC)
    Bonjour à tous,

    la formule est correcte mais tu as validé en matricielle toute la plage "$c$2:$c$50".
    Il faut mettre la formule en "$c$2", la valider en matricielle puis recopier la cellule "$c$2" vers le bas.
    Ci joint l'exemple.

    JHA
     

    Pièces jointes:

  11. Josée

    Josée XLDnaute Nouveau

    Inscrit depuis le :
    25 Avril 2017
    Messages :
    14
    "J'aime" reçus :
    0
    Sexe :
    Féminin
    Travail/Loisirs :
    Analyste en procédés administratifs
    Habite à:
    Québec
    Bonjour JHA,

    Tu as raison, ça fonctionne... cependant quand je tente de le faire dans mon document officiel, ça ne marche plus. Je te transmets mon fichier allégé parce que les informations son nominatives. Merci de ta patience!! ;(
     

    Pièces jointes:

  12. Dugenou

    Dugenou XLDnaute Barbatruc

    Inscrit depuis le :
    21 Février 2005
    Messages :
    5845
    "J'aime" reçus :
    172
    Sexe :
    Masculin
    Habite à:
    Lille
    Utilise:
    Excel 2010 (PC)
    Bonjour,
    2 problemes dans ta formule :
    1) ta zone de recherche commence en ligne 5 donc dans la logique "le moins 2 permet de revenir au numéro 1 pour comptabiliser le bon numéro de ligne de la petite valeur" là il faut écrire -4 pour obtenir 1 quand le résultat est sur la première ligne.
    2) les données de la colonne B (titre CR) sont au format texte et non comprises comme des chiffres par excel : 2 solutions : tu changes le format + tu convertis la colonne, tu ecris -- devant chaque référence à la colonne B : donc en B2, à valider en matriciel et à recopier jusqu'en bas :
    Code (Text):
    =INDEX(PARAMÈTRES!$C$5:$C$21;PETITE.VALEUR(SI((--'Données dotation'!B2<=PARAMÈTRES!$E$5:$E$21)*(--'Données dotation'!B2>=PARAMÈTRES!$D$5:$D$21);LIGNE(PARAMÈTRES!$D$5:$D$21)-4);1))
    voir pj : il reste des résultats #nombre : pour 6434 par exemple, car cette valeur n'est dans aucun intervalle
     

    Pièces jointes:

    • josee.xlsm
      Taille du fichier:
      236.3 Ko
      Affichages:
      5
  13. Josée

    Josée XLDnaute Nouveau

    Inscrit depuis le :
    25 Avril 2017
    Messages :
    14
    "J'aime" reçus :
    0
    Sexe :
    Féminin
    Travail/Loisirs :
    Analyste en procédés administratifs
    Habite à:
    Québec
    Wow Merci @Dugenou,
    Je vais corriger le tout... Je ne comprends toutefois pas ce que représente les -4 ou 1 j'avoue que je n'en saisie pas la logique. Je suis plutôt novice en matricielle. Bonne journée!
     
  14. Josée

    Josée XLDnaute Nouveau

    Inscrit depuis le :
    25 Avril 2017
    Messages :
    14
    "J'aime" reçus :
    0
    Sexe :
    Féminin
    Travail/Loisirs :
    Analyste en procédés administratifs
    Habite à:
    Québec
    Rebonjour,

    Dans la continuité de ma requête, quelqu'un pourrait me dire ce qu'il y a de problématique dans ma macro (Visual basic)... Tout fonctionne sauf que ma formule matricielle me ramène "faux" sur toute la colonne.

    Range("c2:c" & [A100000].End(xlUp).Row).FormulaR1C1 = _
    Selection.FormulaArray = _
    "=INDEX(PARAMÈTRES!R5C3:R21C3,SMALL(IF((--'Données dotation'!RC[-1]<=PARAMÈTRES!R5C5:R21C5)*(--'Données dotation'!RC[-1]>=PARAMÈTRES!R5C4:R21C4),ROW(PARAMÈTRES!R5C4:R21C4)-4),1))"
    Columns("C:C").Select
     
  15. Dugenou

    Dugenou XLDnaute Barbatruc

    Inscrit depuis le :
    21 Février 2005
    Messages :
    5845
    "J'aime" reçus :
    172
    Sexe :
    Masculin
    Habite à:
    Lille
    Utilise:
    Excel 2010 (PC)
    Bonjour,
    Je tente une réponse pour le -4 ou le -2 : libre à tous de me compléter/corriger.

    Dans la formule
    Code (Text):
    PETITE.VALEUR(SI((....);LIGNE($B$3:$B$19)-2);1)
    on renvoie la plus petite valeur (donc la première ligne) qui correspond aux critères grâce au ;1) final
    Cette valeur retournée est un N° de ligne grâce à la fonction LIGNE($B$3:$B$19) mais on aura la valeur 3 pour la ligne 3. à partir de là deux solutions :
    • soit commence la zone d'index en ligne 1 pour que, quand on retourne la valeur 3, on affiche bien le contenu de la ligne 3 (mais ceci est parfois troublant car on va avoir une formule INDEX($A$1:$A$19.... et toutes les autres plages sur 3:19)
    • soit on enlève directement 2 (quand on est sur une zone 3:xx) pour que la valeur retournée soit 1 et donc la première ligne de la zone d'index (INDEX($A$3:$A$19..). Dans ce cas le point troublant c'est que si on fait la formule sur une autre plage (5:24 par exemple) il faut changer ce -2 en -4 pour avoir 1 quand on retourne le premier "bon" numéro de ligne.
    Cordialement
     
  16. Josée

    Josée XLDnaute Nouveau

    Inscrit depuis le :
    25 Avril 2017
    Messages :
    14
    "J'aime" reçus :
    0
    Sexe :
    Féminin
    Travail/Loisirs :
    Analyste en procédés administratifs
    Habite à:
    Québec
    o_Oo_Oo_Oo_Oo_O Ouf! je suis scotchée là!! Dugenou, je suis plus mêlée qu'avant hi!

    Quelqu'un pourrait répondre à mon autre requête dans le même ordre d'idée :

    Qu'Est-ce qui est problématique dans ma macro (Visual basic)... Ma formule matricielle me ramène "faux" sur toute la colonne. Je sais que ma formule est bonne parce que je l'ai testé et pas de problème mais dans la macro ça ne fonctionne pas...

    Range("c2:c" & [A100000].End(xlUp).Row).FormulaR1C1 = _
    Selection.FormulaArray = _
    "=INDEX(PARAMÈTRES!R5C3:R21C3,SMALL(IF((--'Données dotation'!RC[-1]<=PARAMÈTRES!R5C5:R21C5)*(--'Données dotation'!RC[-1]>=PARAMÈTRES!R5C4:R21C4),ROW(PARAMÈTRES!R5C4:R21C4)-4),1))"
    Columns("C:C").Select
     
  17. Josée

    Josée XLDnaute Nouveau

    Inscrit depuis le :
    25 Avril 2017
    Messages :
    14
    "J'aime" reçus :
    0
    Sexe :
    Féminin
    Travail/Loisirs :
    Analyste en procédés administratifs
    Habite à:
    Québec
    Bon, finalement je pense que le problème était : Range("c2:c" & [A100000].End(xlUp).Row).FormulaR1C1 =
    qui semble ne pas fonctionner avec une matricielle... Voici ce que j'ai fait:

    Range("C4").Select
    Selection.FormulaArray = _
    "=INDEX(PARAMÈTRES!R5C3:R21C3,SMALL(IF((--'Données dotation'!RC[-1]<=PARAMÈTRES!R5C5:R21C5)*(--'Données dotation'!RC[-1]>=PARAMÈTRES!R5C4:R21C4),ROW(PARAMÈTRES!R5C4:R21C4)-4),1))"
    Range("C4").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range(Selection, Selection.End(xlDown)).Select
    ActiveSheet.Paste
     

Partager cette page