Formule conditionnelle SI est > ou <>

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

  • PROJET METHODO GIONO Base Complete 25 nov 10h.xlsm
    433.3 KB · Affichages: 51
Dernière édition:

job75

XLDnaute Barbatruc
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

  • PROJET METHODO GIONO(3).xlsm
    410.7 KB · Affichages: 6
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Dans les fichiers précédents la liste des absents est dans l'ordre des classes en colonne A.

Dans ce fichier (3 bis) la liste est triée alphabétiquement par la macro bien connue Quick sort.

A+
 

Pièces jointes

  • PROJET METHODO GIONO(3 bis).xlsm
    412.2 KB · Affichages: 20

Discussions similaires

J
  • Question
Microsoft 365 Aide sur formule Excel
Réponses
2
Affichages
349
J

Statistiques des forums

Discussions
312 225
Messages
2 086 412
Membres
103 202
dernier inscrit
Claire2BM