Imbriqué des Conditions Excel code

boubritrezak Messages postés 10 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

je cherche comment imbriquer les d eux condition ci-dessous:

=SI(A2="COL";"NO MEMO";SI(A2="EXT";B2+1;SI(A2="MIG";B2+10;SI(A2="CRE";B2+10;"ERROR"))))

=SI(ET(A2="SUP";C2="Planifié");D2+10)

Bloqué depuis 2 jours, merci pour ceux qui pourraient m'aider su le sujet.

cdt

4 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Tu es sur le forum "programmation" ==> tu veux donc une solution en VBA ?
    1
  2. boubritrezak Messages postés 10 Statut Membre
     
    bonjour, Oui, je suis preneur, merci
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    si l'ai compris ta demande:
    attention: sensible à la casse
    Dim valeur As Variant
    
    Select Case Range("A2")
         Case "SUP"
              If Range("C2") = "Planifié" Then
                   valeur = Range("D2") + 10
              Else
                   valeur = "ERROR"
              End If
         Case "MIG", "CRE"
              valeur = Range("B2") + 1
         Case "COL"
              valeur = "NO MEMO"
         'case....
              '....
         Case Else
              valeur = "ERROR"
    End Select
    
    MsgBox valeur
    
    0
  4. boubritrezak Messages postés 10 Statut Membre
     
    Merci pour ton retour, mais enfaite le but est comme ci-dessous

    dans une Feuille Xls

    A B C D

    1 SUP 11/02/2011 Planifié Résultat des conditions posées*
    2 MIG 12/02/2011 Planifié
    3 COL 13/02/2011 Planifié
    4 CRE 14/02/2011 Planifié
    5 EXT 15/02/2011 Planifié
    6 SUP 11/02/2011 Réalisé
    7
    8
    10
    11

    * =SI(A1="COL";"NO MEMO";SI(A1="EXT";B1+1;SI(A1="MIG";B1+10;SI (A1="CRE";B1+10;"ERROR"))))

    =SI(ET(A1="SUP";C1="Planifié");D2+10)

    Le pb c'est que je n'arrive pas à combiner les deux conditions ci-dessus dans la colone D.

    d'avance, merci
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Tu m'as demandé du VBA, la réponse est du VBa...

      tu peux inclure le code dans une fonction personnalisée par exemple

      en lisant ton message, tu sembles me dire que je n'ai pas compris ce que tu veux de plus tu ajoutes ligne 6 "réalisé" quèsaco ?
      0
    2. boubritrezak Messages postés 10 Statut Membre
       
      dsl, j'ai rajouté un autre truc (réalisé) sans que je me rend compte, mais je m'aperçoit que c'est un peu plus compliquer de plus que je ne suis pas un pro de VBA (je sais faire des trucs basiques),

      sinon, l'action serait:

      un check de chaque ligne de la colone A et appliquer la condition* dans la colone D de la meme ligne.

      condition* :

      Si A=SUP et C=Planifié alors D=C+2

      Si A=COL alors D="NO MEMO"

      Si A=EXT ou CRE....etc Alors D=C+1

      ton CASE me semble bien fait, mais je ne sais pas comment l'integrer dans la Macro, les macros que je réalise c'est en utilisant l'enregistrement et puis je decouvre le code qui est géneré derierre en ouvrant VB dans l'onglet developpeur, merci pour ton aide si possible de me dire comment resoudre ce pb,
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      fallait le dire que tu connaissais pas VBA quand je te l'ai proposé! c'est pas un crime
      mais tu peux résoudre ton pb par formule

      fonction personnalisée à mettre dans un module
      Function valoriser_ss_cond(cellule As Range) As Variant
      Dim Lig As Integer
      
      Lig = cellule.Row
      Select Case cellule
           Case "SUP"
                If Cells(Lig, "C") = "Planifié" Then
                     valoriser_ss_cond = Cells(Lig, "D") + 10
                Else
                     valoriser_ss_cond = "ERROR"
                End If
           Case "MIG", "CRE"
                valoriser_ss_cond = Cells(Lig, "B") + 10
           Case "COL"
                valoriser_ss_cond = "NO MEMO"
           Case "EXT"
               valoriser_ss_cond = Cells(Lig, 2) + 1
           Case Else
                valoriser_ss_cond = "ERROR"
      End Select
      End Function
      0
    4. boubritrezak
       
      merci pour ce retour, j'ai essayé de mettre dans un module (Module 1) mais ça ne marche pas, si tu peux m'éclairer stp, merci

      Sub Macro2()
      Function valoriser_ss_cond(cellule As Range) As Variant
      Dim Lig As Integer

      Lig = cellule.Row
      Select Case cellule
      Case "SUP"
      If Cells(Lig, "C") = "Planifié" Then
      valoriser_ss_cond = Cells(Lig, "D") + 10
      Else
      valoriser_ss_cond = "ERROR"
      End If
      Case "MIG", "CRE"
      valoriser_ss_cond = Cells(Lig, "B") + 10
      Case "COL"
      valoriser_ss_cond = "NO MEMO"
      Case "EXT"
      valoriser_ss_cond = Cells(Lig, 2) + 1
      Case Else
      valoriser_ss_cond = "ERROR"
      End Select
      End Function

      End Sub
      0
    5. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Tu n'as besoin d'encadrer la fonction par une Sub !!!
      on écrit soit une fonction soit une sub...
      alors tu vires sub macro2() et End sub

      Ta prochaine réponse c'est début Février ?
      0