Petit prôblème de formules sous Excel
lePtitMatou
-
lePtitMatou -
lePtitMatou -
Bonjour,
Voici mon petit prôblême en partant du tableau non exhaustif ci-dessous :
A B
1 0
1 0
1 0
0 0
0 1
0 0
0 0
1 0
1 0
1 0
Quand une cellule de la colonne B est égale à 1 (Ici B10=1), Chercher la valeur égale à 1 la + proche dans la colonne A sur une plage de données (A6:A14) (Ici ce serait A8 et A13) et afficher la valeur 1 dans la colonne C (dans les cases C8 et C13).
J'ai cherché avec les formules Recherche, recherche H et V mais sans résultats...
Merci de votre aide.
Voici mon petit prôblême en partant du tableau non exhaustif ci-dessous :
A B
1 0
1 0
1 0
0 0
0 1
0 0
0 0
1 0
1 0
1 0
Quand une cellule de la colonne B est égale à 1 (Ici B10=1), Chercher la valeur égale à 1 la + proche dans la colonne A sur une plage de données (A6:A14) (Ici ce serait A8 et A13) et afficher la valeur 1 dans la colonne C (dans les cases C8 et C13).
J'ai cherché avec les formules Recherche, recherche H et V mais sans résultats...
Merci de votre aide.
A voir également:
- Petit prôblème de formules sous Excel
- Liste déroulante excel - Guide
- Formule si et excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Word et excel gratuit - Guide
- Formules excel de base - Guide
2 réponses
Bonjour,
En attendant mieux, en supposant qu'il n'y ait qu'une valeur 1 en colonne B et avec deux colonnes de calcul :
en C6 à recopier vers le bas :
=SI(OU(LIGNE()=MAX($D$6:$D$15);LIGNE()=MIN($E$6:$E$15));1;"")
en D6 à recopier vers le bas :
=SI(ET(B6=0;A6=1;ESTNUM(EQUIV(1;B6:$B$15;0)));LIGNE();"")
en E6, à recopier vers le bas :
=SI(ET(A6=1;B6=0;ESTNUM(EQUIV(1;$B5:B$6;0)));LIGNE();"")
Cordialement.
Daniel
En attendant mieux, en supposant qu'il n'y ait qu'une valeur 1 en colonne B et avec deux colonnes de calcul :
en C6 à recopier vers le bas :
=SI(OU(LIGNE()=MAX($D$6:$D$15);LIGNE()=MIN($E$6:$E$15));1;"")
en D6 à recopier vers le bas :
=SI(ET(B6=0;A6=1;ESTNUM(EQUIV(1;B6:$B$15;0)));LIGNE();"")
en E6, à recopier vers le bas :
=SI(ET(A6=1;B6=0;ESTNUM(EQUIV(1;$B5:B$6;0)));LIGNE();"")
Cordialement.
Daniel
lePtitMatou
Merci Champion :)
Bonjour,
Sinon en VBA :
Sub un()
Set zone = Range(Cells(1, 2), Cells(10, 2))
For Each C In zone
If C = 1 Then
i = 0
Do While Not Cells(C.Row + i, 3) = 1
If Cells(C.Row + i, 1) = 1 Then
Cells(C.Row + i, 3) = 1
Else
i = i + 1
End If
Loop
i = 0
Do While Not Cells(C.Row - i, 3) = 1
If Cells(C.Row - i, 1) = 1 Then
Cells(C.Row - i, 3) = 1
Else
i = i + 1
End If
Loop
End If
Next C
End Sub
Bon courage
Sinon en VBA :
Sub un()
Set zone = Range(Cells(1, 2), Cells(10, 2))
For Each C In zone
If C = 1 Then
i = 0
Do While Not Cells(C.Row + i, 3) = 1
If Cells(C.Row + i, 1) = 1 Then
Cells(C.Row + i, 3) = 1
Else
i = i + 1
End If
Loop
i = 0
Do While Not Cells(C.Row - i, 3) = 1
If Cells(C.Row - i, 1) = 1 Then
Cells(C.Row - i, 3) = 1
Else
i = i + 1
End If
Loop
End If
Next C
End Sub
Bon courage