Recherche multi-critère + Plusieurs onglets

Bonjour à tous,

Je viens solliciter votre aide après avoir passé l'après-midi à essayer de trouver une solution à mon problème.

Je vous explique :

j'ai un fichier qui recense les contrôles véhicules selon leur type. L'ouvrier rentre les données dans son application qui retombent directement dans le fichier en pièce jointe. (PJ qui n'est qu'un exemple, je dois conserver les données anonymes).

Je dispose de 4 types de véhicules donc cela me fait 4 onglets différents.

Les contrôles sont hebdomadaires, ce qui fait donc 1 par semaine mais à date variable.

Venons-en au faite :

Toutes les immatriculations sont inscrites dans "vérification contrôle"

Je souhaiterais savoir si les salariés ont réalisé leur contrôle hebdomadaire en recherchant à la semaine.

Cela implique donc une recherche multi-critère car il y a 7 jours dans la semaine (C2:ID2) + retrouver l'immatriculation dans 4 onglets différents...

Je continu mes recherches, si je trouve une solution je vous la ferais partager.

Si vous avez des pistes d'idées je suis preneur. (J'ai essayé d'exploiter Index et Equiv)

Je vous remercie par avance.

Cordialement.

Bonsoir,

La fonction NO.SEMAINE ne renvoie pas le numéro de semaine ISO pour les versions Excel jusqu'à 2007. Microsoft n'a pallié cette carence qu'à partir de 2010 (paramètre spécifique pour la fonction, et fonction dédiée pour les versions ultérieures).

J'ai donc introduit une fonction personnalisée pour calculer le numéro de semaine :

Function NSEM(d As Date) As Integer
    Dim dref
    Application.Volatile
    dref = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 3)
    dref = dref - Weekday(dref) + 2
    NSEM = (d - dref) \ 7 + 1
End Function

Puis un fonction personnalisée pour réaliser ta vérification :

Function CONTROLVEHIC(d As Date, imat As String)
    Dim CV, f%, s%, i%
    Application.Volatile
    s = NSEM(d): CV = Array("", "", "")
    On Error Resume Next
    For f = 1 To 4
        With Worksheets("Contrôle Véhicule " & f)
            i = WorksheetFunction.Match(imat, .Columns("F"), 0)
            If Err.Number <> 0 Then
                Err.Clear: i = 0
            End If
            If i > 0 Then
                If NSEM(.Cells(i, 2)) = s Then
                    CV = .Range("B" & i).Resize(, 3).Value
                    Exit For
                End If
            End If
        End With
    Next f
    CONTROLVEHIC = CV
End Function

Cette dernière fonction est matricielle.

Exemple d'utilisation :

On sélectionne la plage B5:D5 (3 cellules en ligne), et on tape la formule :

=CONTROLVEHIC($A$1;A5)

A1 représente la date représentative de la semaine cherchée, A5 est l'immatriculation cherchée.

On valide la formule par Ctrl+Maj+Entrée

et les 3 valeurs s'inscrivent dans les 3 cellules sélectionnées au départ si la recherche est fructueuse, rien ne s'inscrit dans le cas contraire.

On peut bien sûr étendre cette formule en tirant ces 3 cellules sur les lignes suivantes...

Cordialement.

Bonsoir,

C'est juste exceptionnel... Quel dommage que je ne connaisse pas le VBA.... Je vais d'ailleurs m'y mettre.

Je me permets de te poser quelques questions que je pense plutôt simple pour toi :

  • Si je souhaite que cela incrémente une colonne supplémentaire dans "vérification contrôle" comment puis-je faire ?
  • Qu'est ce que représente le % à coté des lettres ?

- Serait-ce trop de demander une explication brève des lignes de la macro ? (j’essaie d'apprendre, même si je vais essayer de la décortiquer de mon côté)

En tout cas si tu ne peux ou veux pas, c'est sans problème.

Je te remercie pour le temps que tu as consacré à cette macro qui m'est bien utile.

Tu as parfaitement répondu à ma demande.

Encore merci.

Cordialement.

Rechercher des sujets similaires à "recherche multi critere onglets"