XL 2019 Création fichier d'avancement

Gjerms

XLDnaute Nouveau
Bonjour à tous

J'aurai besoin d'aide concernant un fichier de suivi pour des instruments que je suis en train de faire.Sur le fichier excel de suivi j'ai créé un tableau avec comme colonne le nom de l'instrument, le schéma de l'instrument et la photo de l'instrument.

On donnera comme nom à chaque instrument A, B, C et D et nous mettons "X" si nous avons bien retrouver le schéma ou la photo.
Mon problème est que certains instruments sont des assemblages de deux ou 3 autres. Par exemple D contient les instruments A et B et comme D n'a pas de schéma ou de photo. Mon souhait est que si nous avons bien retrouvé les schémas de A et de B alors la case schéma pour l'instrument D sera coché. Idem pour la photo.

J'espère avoir réussi à bien m'expliquer.
 
Dernière édition:

job75

XLDnaute Barbatruc
Vous ne joignez pas de fichier alors utilisons la boule de cristal, formule en D2 du fichier joint :
Code:
=REPT("X";OU(B2="oui";C2="oui";SOMMEPROD((B$1:C1="oui")*NB.SI(B2:C2;"*"&A$1:A1&"*"));SOMMEPROD((B3:C$1000="oui")*NB.SI(B2:C2;"*"&A3:A$1000&"*"))))
Ligne $1000 à adapter au besoin.
 

Pièces jointes

  • Classeur(1).xlsx
    10.2 KB · Affichages: 4

Gjerms

XLDnaute Nouveau
Vous ne joignez pas de fichier alors utilisons la boule de cristal, formule en D2 du fichier joint :
Code:
=REPT("X";OU(B2="oui";C2="oui";SOMMEPROD((B$1:C1="oui")*NB.SI(B2:C2;"*"&A$1:A1&"*"));SOMMEPROD((B3:C$1000="oui")*NB.SI(B2:C2;"*"&A3:A$1000&"*"))))
Ligne $1000 à adapter au besoin.
Bonjour

Merci pour votre réponse je vais essayer cela.
Pour le dossier la situation est un peu plus compliqué comme tableau et c'est avec des informations de mon travail donc je ne peux pas le partager.

Encore merci cordialement.
 

job75

XLDnaute Barbatruc
Au post #5 Bien noter que D est cochée en D5 si au moins l'un des instruments A B C est coché.

S'il faut que les instruments A B C soient cochés tous les 3 on utilisera cette fonction VBA :
VB:
Function Coche(plage As Range, r As Range, sep As String) As String
Dim s, ub As Integer, n As Integer, e, i As Variant
For Each r In r
    If LCase(r) = "oui" Then Coche = "X": Exit Function
    s = Split(r, sep)
    ub = UBound(s) + 1
    If ub Then
        n = 0
        For Each e In s
            i = Application.Match(e, plage.Columns(1), 0)
            If IsNumeric(i) Then If LCase(plage(i, 2)) = "oui" Or LCase(plage(i, 3)) = "oui" Then n = n + 1
        Next
        If n = ub Then Coche = "X": Exit Function
    End If
Next
End Function
Le code doit être placé impérativement dans un module standard.

Voyez le fichier .xlsm joint et cette formule en D2 =Coche(A:C;B2:C2;"+")
 

Pièces jointes

  • Coche VBA(1).xlsm
    17.4 KB · Affichages: 7
Haut Bas