Formule conditionnelle SI est > ou <>

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

excelnoober

XLDnaute Junior
Bonjour
je reviens avec ma question un peu plus aboutie enfin j espere
j ai en colonne M la formule suivante
=SI(ESTNUM(CHERCHE("5E2";A82));C82;"")
idem en colonne N et en colonne O
au dessus de chaque colonne j ai un effectif chiffre en M1 en N1 en O1
ex de ma feuille pour M effectif de 10
....................................N ...................4
....................................O...................21
je souhaiterais pour eviter les doublons (sachant que je ne peux les effacer) que la formule citée plus haut tienne compte de cet effectif.
Dans ma feuille exemple ligne 385 "MARNISSI" apparait dans les 3 colonnes puisqu il repond aux 3 critères.

QUESTION :
est il possible par un jeu de formule d affecter "MARNISSI" après comparaison des effectif 10 ; 4 ; 21 sur la colonne ayant l 'effectif le moins élevé ?
 

Pièces jointes

Dernière édition:
Re,

En fait pas besoin du bouton, on peut tout faire avec la Worksheet_Change :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range, i As Variant, r As Range, mini&, n%, x$, y$, z$, mes$
If Intersect(Target, [S5]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
If FilterMode Then ShowAllData 'si la feuille est filtrée
On Error Resume Next 'si aucune SpecialCell
[S5].Select
[S5] = Val(CStr([S5])) 'au cas où...
Set P = [A6:R600] 'plage adaptable
P.Columns(7).Resize(, 12) = "" 'RAZ
For i = 1 To P.Rows.Count
  If P(i, 2) <> "" Then
    Range("G2:R2") = "=SEARCH(""" & P(i, 1) & """,G1)" 'analyse des disponibilités
    '---M. Armant (on commence par lui car c'est le moins disponible)---
    If P(i, 5) <> "" Then
      Set r = Nothing
      Set r = Range("G2,N2").SpecialCells(xlCellTypeFormulas, 1)
      If Not r Is Nothing Then
        mini = Application.Min(Intersect(r.EntireColumn, Rows(3))) 'minimum en ligne 3
        For Each r In r
          If r(2) = mini Then r(i + 4) = P(i, 5): Exit For
        Next r
      End If
    End If
    '---M. Yuste---
    If P(i, 3) <> "" Then
      If P(i, 14) = P(i, 3) Then Range("M2") = "" 'neutralise la colonne M si doublon
      Set r = Nothing
      Set r = Range("H2:M2").SpecialCells(xlCellTypeFormulas, 1)
      If Not r Is Nothing Then
        mini = Application.Min(Intersect(r.EntireColumn, Rows(3))) 'minimum en ligne 3
        For Each r In r
          If r(2) = mini Then r(i + 4) = P(i, 3): Exit For
        Next r
      End If
    End If
    '---Mme Querat---
    If P(i, 4) <> "" Then
      If P(i, 13) = P(i, 4) Or P(i, 14) = P(i, 4) Then Range("O2") = "" 'neutralise la colonne O si doublon
      Set r = Nothing
      Set r = Range("O2:R2").SpecialCells(xlCellTypeFormulas, 1)
      If Not r Is Nothing Then
        mini = Application.Min(Intersect(r.EntireColumn, Rows(3))) 'minimum en ligne 3
        For Each r In r
          If r(2) = mini Then r(i + 4) = P(i, 4): Exit For
        Next r
      End If
    End If
  End If
Next i
'[G2:R2] = "" 'facultatif, mettre en commentaire pour voir les formules
'---filtrage sur la colonne B et liste des absents---
Union(P.Rows(0), P).AutoFilter Field:=2, Criteria1:="<>"
i = Application.Match("X", P(1, 2).EntireColumn, 0)
If IsNumeric(i) Then ActiveWindow.ScrollRow = i
n = Evaluate("MAX(LEN(" & P.Columns(3).Resize(, 3).Address & "))") + 1 'nombre maximum de caractères
For i = 1 To P.Rows.Count
  If P(i, 2) <> "" Then
    x = P(i, 3): y = P(i, 4): z = P(i, 5)
    If x <> "" Then If Application.CountIf(P(i, 8).Resize(, 6), x) = 0 Then mes = mes & vbLf & x & String(n - Len(x), " ") & "(Mr Yuste)"
    If y <> "" Then If Application.CountIf(P(i, 15).Resize(, 4), y) = 0 Then mes = mes & vbLf & y & String(n - Len(y), " ") & "(Mme Querat)"
    If z <> "" Then If P(i, 7) <> z And P(i, 14) <> z Then mes = mes & vbLf & z & String(n - Len(z), " ") & "(Mr Armant)"
  End If
Next i
If mes <> "" Then
  Nbre_élèves = UBound(Split(mes, vbLf)) 'mémorisée dans Module1 pour l'USF
  With UserForm2
    .TextBox1 = "ATTENTION !!! Les élèves suivants n'ont pas d'intervenant à cause de leur EDT :" & mes
    .Show 0 'non modal
    .TextBox1.SetFocus
    .TextBox1.SelStart = 0
    .CMD_OK.SetFocus
  End With
End If
Application.EnableEvents = True 'réactive les évènements
Application.ScreenUpdating = True
End Sub
Fichier (3).

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Formule ou VBA
Réponses
6
Affichages
423
Réponses
20
Affichages
828
Réponses
5
Affichages
562
J
  • Question Question
Réponses
2
Affichages
474
J
Réponses
2
Affichages
879
Réponses
3
Affichages
859
Réponses
1
Affichages
1 K
Retour