Fonction SI Excel

Bonjour

J'ai besoin de votre aide;

j'ai un fichier Excel avec plusieurs colonnes , dans la colonne A le numéro unique de la demande du ménage, dans la colonne B " nommée Demandeur principal" j'ai soit "Oui" soit "Non", dans la colonne C " Colonne des résultats des tests" soit "VRAI", soit "FAUX", mon soucis est le suivant:

je cherche une formule ou une fonction qui me permets de renvoyer les résultats des lignes de l'ensemble du mé,age qui porte le même numéro de la demande sur la ligne du demandeur principal. en gros si(ET(A:A=A2;B:B="Oui";C:C="FAUX");je veux que la valeur "FAUX" s'inscrire sur toutes les lignes qui portes le même numéro A), que la valeur "FAUX" et pas les "VRAI"

en gros si la cellule du demandeur principal est "VRAI" et les autres lignes du meme groupe sont "FAUX" il faut que la ligne du demandeur principal deviendra "FAUX"

Merci pour votre aide

Cordialement

Bonjour Mahieddine,

Je te propose le code suivant:

Option Explicit
Sub controlResultatsPrincipaux()
    'On met en constante les numéros de colonnes du tableau
    Const cFieldNumDemandeur = 1
    Const cFieldTypeDemandeur = 2
    Const cFieldResultat = 3

    Dim oSheet As Worksheet
    Dim oLO As ListObject

    Dim oRangePrincipaux As Range
    Dim oRangeSecondaires As Range
    Dim oRow As Range
    Dim lNum As Long
    'On réfère la feuille contenant le tableau
    Set oSheet = ThisWorkbook.Worksheets("Feuil1")    'A adapter avec le nom correct de feuille
    Set oLO = oSheet.ListObjects("Tableau1")          'A adapter avec le nom correct du tableau

    'On efface les filtres précédemment posés
    oLO.Range.AutoFilter

    'On réfère la plage des demandeurs principaux ayant un résultat à "VRAI"
    oLO.Range.AutoFilter cFieldTypeDemandeur, "Oui", xlAnd
    oLO.Range.AutoFilter cFieldResultat, "VRAI", xlAnd
    Set oRangePrincipaux = oLO.DataBodyRange.SpecialCells(xlCellTypeVisible)

    'On boucle sur les lignes sélectionnées
    For Each oRow In oRangePrincipaux.Rows
        'On récupère le numéro du demandeur
        lNum = oRow.Cells(1, cFieldNumDemandeur).Value
        'On efface les filtres précédemment posés
        oLO.Range.AutoFilter
        'On réfère la plage des demandeurs secondaires de même numéro ayant un résultat à "FAUX"
        oLO.Range.AutoFilter cFieldTypeDemandeur, "Non", xlAnd
        oLO.Range.AutoFilter cFieldNumDemandeur, lNum, xlAnd
        oLO.Range.AutoFilter cFieldResultat, "FAUX", xlAnd
        Set oRangeSecondaires = oLO.DataBodyRange.SpecialCells(xlCellTypeVisible)
        'Si la plage secondaire n'est pas vide, on modifie la valeur du résultat du demandeur principal
        If oRangeSecondaires.Areas.Count > 0 Then
            oRow.Cells(1, cFieldResultat).Value2 = "FAUX"
            oRow.Cells(1, cFieldResultat).HorizontalAlignment = xlHAlignCenter
        End If
    Next

    'On fait le ménage
    oLO.Range.AutoFilter
    oLO.Range.AutoFilter
    Set oRangePrincipaux = Nothing
    Set oRangeSecondaires = Nothing
    Set oLO = Nothing
    Set oSheet = Nothing

End Sub

Je joins l'excel modifié.

Merci Beaucoup Gérard

Je vous tiens informé de la suite

Je constate un petit soucis, quand je rajoute d'autre lignes vers le bas

Le tableau se met en mode filtre , et cette ligne " Set oRangeSecondaires = oLO.DataBodyRange.SpecialCells(xlCellTypeVisible)" bloque un débogage

je ne comprend pas pourquoi ?? est-ce le nombre de ligne est limité ?? dans le code

Merci

un grand merci

Cordialement

Mahieddine

Rechercher des sujets similaires à "fonction"