• Initiateur de la discussion Initiateur de la discussion WDAndCo
  • Date de début Date de début

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 !

WDAndCo

XLDnaute Impliqué
Bonsoir le Forum

Comment savoir si une clé est compatible ou pas avec une serrure a l'aide de 3 tables ?

Exemple : Soit une clé 4C4 est compatible avec des serrures 4C3, 4C4, 4E3, 4E4, 4G3, 4G4, 4H3, 4H4, 4K3, 4K4, 4L3 et 4L4 (Voir les tables du haut dans le fichier)
ou
Exemple : Soit une Serrure 4C4 est compatible avec des clés 4A4, 4C4, 5A4 et 5C4 (Voir les tables du bas dans le fichier)

Comment rendre cela automatique ?
Le fait de taper 3G7 cela me donne :
Cette clé 3G7 est compatible avec les serrures ...........
Cette Serrure 3G7 est compatible avec les clés ...........
Et le fait de donner 2 Réf
Par Exemple : 1A3 et 3G6
La clé 1A3 est (ou n'est pas) compatible avec la serrure 3G6
La serrure 1A3 est (ou n'est pas) compatible avec la clé 3G6

D'avance merci, et je me tiens a votre disposition pour toutes information complémentaire !

Dominique
 

Pièces jointes

Re : Compatible ou pas ?

Bonjour

Que penses-tu de ce petit exemple pour les rouets ?
(exécute la macro "Lect_Matrice" avec les données de ton classeur)
Code:
Public Rouet(5, 5)

Sub Crea_Matrice()
    Lig = 6
    Col = 4
    
    Rouet(0, 0) = 2
    For y = 0 To 4
        For x = 0 To 4
            If Cells(Lig + x, Col + y).Value = "" Then
                Rouet(x + 1, y + 1) = 0
            Else
                Rouet(x + 1, y + 1) = 1
            End If
        Next x
    Next y
End Sub


Sub Lect_Matrice()
    If Rouet(0, 0) <> 2 Then Call Crea_Matrice
    
    Message = "Entrez un N° de rouet"
    Title = "Démonstration"
    Defaut = "1"
    y = Val(InputBox(Message, Title, Defaut))

    Trouv = ""
    For x = 0 To 4
        If Rouet(x + 1, y) = 1 Then
            Trouv = Trouv & x + 1 & " "
        End If
    Next x
    MsgBox (y & " compatible avec " & Trouv)
End Sub
est-ce que ça te donnes des idées pour la suite ?
à plus
 
Re : Compatible ou pas ?

Bonjour,

Par formules

3 tableaux
- Choix clé, résultat serrures puis clés
- Choix serrure, résultat clés puis serrures
- Choix clé ou serrure, résultat compatible ou non clé/serrure et serrure/clé

Les 2 premiers : formules matricielles, à valider par ctrl, maj et entrée
 

Pièces jointes

Re : Compatible ou pas ?

Bonsoir et merci Le Pierre, wilfried_42 et Monique

Pierre, je n'ai pas réussi a lancer ta Macro ! (Peut être une fichier)
Wilfried 42, c'est vrai que c'est une belle prise de tête, moi j'été plutôt partis avec des chaines de caractère, avant d'abandonné.
Monique, je n'ai pas tous compris. Car une ou une serrure son différencier par 3 cirières 1 le Rouet (un chiffre en 1 et 5 c'est les forme des dents de la clé), la Saillie (une lettre de A à L c'est la forme du trou de la serrure) et le Forage (un chiffre de 1 à 8 c'est schématique la profondeurs a la quelle la clé peu pénétrée dans la serrure)
Donc pour la désignation d'une clé c'est égale a par Exp : 5K7
5 le Rouet, K la saillie et 7 le Forage. J'espère avoir été plus claire
Donc Monique je n'ai pas compris comment on peu choisir une clé ou serrure sans au moins c'est trois critère. Ou je suis passé a coté !

Une bonne soirée.
Amicalement
Dominique
 
Re : Compatible ou pas ?

Bonsoir,

Je renvoie le classeur avec une fonction écrite en VBA.​
Code:
Option Explicit

Function CS(CLEF As String)
'
' Fonction créée par ROGER2327 le 16 Brumaire CCXVII (6/11/2008)
'
'
    If CLEF = "" Then CS = "": Exit Function
Dim ro, sa, fo
Dim r%, s%, f%, i%, j%, k%, n%, x1$, x2$, z$
    ro = Range("RO") ' "RO"=Tables!$D$6:$H$10
    sa = Range("SA") ' "SA"=Tables!$L$6:$V$16
    fo = Range("FO") ' "FO"=Tables!$Z$6:$AG$13
    On Error Resume Next
    r = CInt(Mid$(CLEF, 1, 1))
    s = CInt(InStr(1, "ABCDEFGHJKL", Mid$(CLEF, 2, 1)))
    f = CInt(Mid$(CLEF, 3, 1))
    On Error GoTo no
    If CLEF = r & Mid$("ABCDEFGHJKL", s, 1) & f Then
        For i = 1 To 5
            If ro(i, r) = 1 Then
                x1 = CStr(i)
                For j = 1 To 11
                    If sa(j, s) = 1 Then
                        x2 = Mid$("ABCDEFGHJKL", j, 1)
                        For k = 1 To 8
                            If fo(k, f) = 1 Then
                                z = z & x1 & x2 & CStr(k) & ", "
                                n = n + 1
                            End If
                        Next k
                    End If
                Next j
            End If
        Next i
    End If
no:
    Select Case n
        Case 0: z = "La clef " & CLEF & " n'est compatible avec aucune serrure."
        Case 1: z = "La clef " & CLEF & " est compatible avec la serrure " & Mid$(z, 1, Len(z) - 2) & "."
        Case Else: z = "La clef " & CLEF & " est compatible avec les serrures : " & Mid$(z, 1, Len(z) - 2) & "."
    End Select
    CS = z
End Function
Remarquez les plages nommées "RO", "SA", "FO". Si on ne veut pas utiliser de plages nommées, il faut modifier le code.​

Bonne nuit !
ROGER2327
 

Pièces jointes

Re : Compatible ou pas ?

Bonsoir le Forum et merci ROGER2327

Je teste cela dans la feuille réel et je reviens. Je suppose que pour les serrures la même fonction mais avec les boucles en horizontales cela doit marcher ?

Encore merci pour ce très beau travail !

Amicalement
Dominique
 
Re : Compatible ou pas ?

Bonsoir WDAndCo,
Ravi que cela vous convienne.​
Bien entendu, la fonction pour trouver les types de clefs à partir du type de serrure est la parfaite transposition de la précédente : il suffit d'échanger le rôle des lignes et des colonnes, et d'échanger les mots "clef" et "serrure".​
Le code devient :​
Code:
Function SC(SERRURE As String)
    If SERRURE = "" Then SC = "": Exit Function
Dim ro, sa, fo
Dim r%, s%, f%, i%, j%, k%, n%, x1$, x2$, z$
    ro = Range("RO") ' "RO"=Tables!$D$6:$H$10
    sa = Range("SA") ' "SA"=Tables!$L$6:$V$16
    fo = Range("FO") ' "FO"=Tables!$Z$6:$AG$13
    On Error Resume Next
    r = CInt(Mid$(SERRURE, 1, 1))
    s = CInt(InStr(1, "ABCDEFGHJKL", Mid$(SERRURE, 2, 1)))
    f = CInt(Mid$(SERRURE, 3, 1))
    On Error GoTo no
    If SERRURE = r & Mid$("ABCDEFGHJKL", s, 1) & f Then
        For i = 1 To 5
            If ro([COLOR="Red"]r, i[/COLOR]) = 1 Then
                x1 = CStr(i)
                For j = 1 To 11
                    If sa([COLOR="Red"]s, j[/COLOR]) = 1 Then
                        x2 = Mid$("ABCDEFGHJKL", j, 1)
                        For k = 1 To 8
                            If fo([COLOR="Red"]f, k[/COLOR]) = 1 Then
                                z = z & x1 & x2 & CStr(k) & ", "
                                n = n + 1
                            End If
                        Next k
                    End If
                Next j
            End If
        Next i
    End If
no:
    Select Case n
        Case 0: z = "La [COLOR="Red"]serrure[/COLOR] " & SERRURE & " n'est compatible avec aucune [COLOR="Red"]clef[/COLOR]."
        Case 1: z = "La [COLOR="Red"]serrure[/COLOR] " & SERRURE & " est compatible avec la [COLOR="Red"]clef[/COLOR] " & Mid$(z, 1, Len(z) - 2) & "."
        Case Else: z = "La [COLOR="Red"]serrure[/COLOR] " & SERRURE & " est compatible avec les [COLOR="Red"]clef[/COLOR]s : " & Mid$(z, 1, Len(z) - 2) & "."
    End Select
    SC = z
End Function
Bonne continuation,
ROGER2327
 
Re : Compatible ou pas ?

Bonsoir le Forum,

Les Cellules D2 et D3 ne marche pas !
Leurs buts : D2 doit vérifier si A2 est dans C3
et D3 doit vérifier si A3 est dans C2

A2 = "5D3" (Données variable)
C3 = "Une serrure 1E1 est compatible avec les clefs : 1A1, 1A2, 1C1, 1C2, 1E1, 1E2, 5A1, 5A2, 5C1, 5C2, 5E1, 5E2." (Données variable)

Comment vérifier si "5D3" est dans "Une serrure 1E1 est compatible avec les clefs : 1A1, 1A2, 1C1, 1C2, 1E1, 1E2, 5A1, 5A2, 5C1, 5C2, 5E1, 5E2." pour cet exemple ?

Le Ficher

D'avance merci
Dominique
 
Re : Compatible ou pas ?

Bonjour le Forum et Roger2327

D'abord merci de prendre sur votre temps. Pour votre dernière formule qui fonctionne très bien =SI(ESTERR(CHERCHE(A2;C3;1));"F";"V") que veux dire le ESTERR car pour reste je l'avait trouvé ?

Bon je teste, et je vous prépare les prochaines question !

Juste une petite pour ce mettre en appétit : Comment vérifier toutes les combinaison en une fois (Clé et Serrure) dans chaque Lieux colonne C et Secours colonne D ceux ci étant regroupé a la suite d'un tri par exemple ?

Encore merci.
Amicalement
Dominique
 
Re : Compatible ou pas ?

Bonjour,

Réponses aux dernières questions :​
  1. ESTERR renvoie Vrai ou Faux selon que son argument provoque ou non une erreur ; ici, CHERCHE renvoie une erreur si le contenu de A2 n'est pas dans celui de C3.
  2. Pour le reste, je regarderai dans la soirée : revenez plus tard !
A bientôt donc,
ROGER2327
 
Re : Compatible ou pas ?

Bonjour à tous,

Il me semble que la fonction native Excel ESTERREUR() est moins restrictive que ESTERR()

Aide XL :
Syntaxe

ESTERR(valeur)
ESTERREUR(valeur)
ESTLOGIQUE(valeur)
ESTNA(valeur)
ESTNONTEXTE(valeur)
ESTNUM(valeur)
ESTREF(valeur)
ESTTEXTE(valeur)
ESTVIDE(valeur)

Valeur représente la valeur d'une cellule vide, la valeur d'erreur, la valeur de texte, la valeur de nombre, la valeur logique, la valeur de référence ou un nom s'y référant que vous voulez tester.

Fonction Renvoie la valeur VRAI si

ESTERR La valeur fait référence à n'importe quelle valeur d'erreur, à l'exception de #N/A.
ESTERREUR La valeur fait référence à une des valeurs d'erreur (#N/A, #VALEUR!, #REF!, #DIV/0!, #NOMBRE!, #NOM? ou #NUL!).
ESTLOGIQUE La valeur fait référence à une valeur logique.
ESTNA La valeur fait référence à la valeur d'erreur #N/A (valeur non disponible).
ESTNONTEXTE La valeur fait référence à tout élément qui n'est pas du texte. (Notez que cette fonction renvoie la valeur VRAI si la valeur fait référence à une cellule vide.)
ESTNUM La valeur fait référence à un nombre.
ESTREF La valeur fait référence à une référence.
ESTTEXTE La valeur fait référence à du texte.
ESTVIDE La valeur fait référence à une cellule vide.


A+
 
Re : Compatible ou pas ?

Bonjour le Forum,

Comment vérifier qu'il n'y a pas de clefs ou de serrures compatible

1er dans un même lieu "C"
2eme dans un même secours "D"

Voir les fonctions en "M" et "N" ainsi que les testes de compatibilités sur l'onglet "Compatibilités" ces fonctions ont été réalisés par Roger2327 que le remercie encore.

Le fichier est en cours de réalisation et essais, rien n'est figé.
On peu pendre l'onglet "Les clés" comme BDD et faire les teste sur un autre.
J'attends vos propositions.

Le Fichier - Clefs S V2.xls

D'avance merci
Dominique
 
- 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
Réponses
11
Affichages
438
Réponses
6
Affichages
340
  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
682
Retour