Formule de vérification des valeurs sur deux tableaux

Bonjour à tous,

Je travaille sur un document Excel ayant pour finalité une meilleure organisation de l'inventaire dans l'enteprise ou je suis. Un rapport est communiqué tous les matins avec plusieurs quantités que j'ai retranscri dans un autre tableau avec plus de références.

Ce dernier tableau est mis à jour par macro, les filtres sont activés et les produits sont classés par services (Bar, Restaurant, Plage,...).

Tout fonctionne à merveille (merci à gmb), cependant je souhaiterai ajouter une formule de vérification pour m'assurer que tous les produits sont bien mis à jour dans le tableau, pour cela j'ai choisi de soustraire le montant total de tous les services au montant d'un service dans le rapport quotidien puis de retrancher le total des quantités de mon tableau et enfin soustraire à nouveau le total du service :

=(RECHERCHEV(Q2,A9:C681,2,FAUX))-(RECHERCHEV(Q3,$A$8:$C$681,2,FAUX))-(SOUS.TOTAL(9,$R$4:$R$526)-(RECHERCHEV(Q3,$A$9:$C$681,2,FAUX)))

Vous l'aurez compris, c'est assez long mais surtout cette formule ne permet pas la vérification lorsque le tableau est filtré.

Donc ma question est : Est-il possible de fixer les formules sur le filtre des services pour que le résultat soit une vérification sûre ?

Le document est confidentiel et je ne pourrais pas le poster sur le forum, cependant si vous avez besoin de quelque information supplémentaire je me tiens à votre disposition.

Par avance, merci !

Edit : J'aimerai pouvoir faire le sous total d'un service filtré puis y soustraire la quantité inscrite dans le rapport, ainsi si c'est un 0 on sait que c'est bon, mais je n'arrive pas à fixer mon calcul au filtre...

Bonjour

Je ne comprends pas ton souci.

Tu n'as pas confiance dans le travail que te fait la macro ?

Bye !

Bonjour !

En fait la macro supprime les valeurs sans référence, le but est simplement de voir si un produit n'a pas de référence et ce rapidement.

C'est pourquoi je souhaite obtenir une formule indiquant 0 lorsque tous les produits sont affichés (et donc référencés) et une différence si un ou plusieurs produits ne le sont pas.

Le soucis étant que lorsque j'applique la formule en filtrant selon un service, des que je retire le filtre la valeur change puisqu'elle prend en compte tous les services...

Cordialement.

Le problème, c'est que les macros, ça va encore.

Mais les formules tarabiscotées, ce n'est pas ma tasse de thé.

Il te faudrait un champion du genre comme Tulipe4....

Moi, de ce point de vue je serais plutôt gmbZéro

Délolé !

Bye !

merci mon cher GMB

en matiere de tarsbicotage ; je suis nettement battu par R@chid , OOOiste et........ notre maitre Amadeus

bien cordialement

il reste quand meme la possibilté de "bricoler" une piece jointe (qques valeurs; le filtre ;eventuellement une petite macro pour supprimer qques lignes ) histoire de tester

code de la macro

range(".......") . clearcontents >>> un bouton et hop

Bonjour Tulipe4,

Voila le fichier (sans données confidentielles puisqu'elles sont aléatoires). Je t'écris le code dans le message même si tu l'auras dans le fichier, on ne sait jamais !

A plus !

13macrotest.xlsm (147.20 Ko)
Dim sce, ln, lgn, i, col

Sub Synthétiser()

ActiveSheet.Unprotect
ActiveSheet.ShowAllData

    Range("F4").CurrentRegion.Offset(1, 0).ClearContents

    ln = 10
    While Cells(ln, "A") <> ""
        If Range("A" & ln) = "BAR PLAGE/0011" Or Range("A" & ln) = "Mini Bar" _
                Or Range("A" & ln) = "PALME D OR/0011" Or Range("A" & ln) = "RELAIS MARTINEZ/0011" _
                Or Range("A" & ln) = "RESTAURANT PLAGE/0011" Or Range("A" & ln) = "Room Service" Then
            sce = Range("A" & ln)
            i = 0
        Else
            i = i + 1
            col = i Mod 3
            lgn = Range("F" & Rows.Count).End(xlUp)(2).Row
            Range("F" & lgn) = Worksheets("MyMicrosDD").Range("B5")
            Range("G" & lgn) = sce
            Range("I" & lgn) = Range("A" & ln + 1)
            Range("J" & lgn) = Range("A" & ln)
            Range("O" & lgn) = Range("A" & ln).Offset(0, 1)
            Range("Q" & lgn) = Range("A" & ln).Offset(0, 1)
            ln = ln + 1
        End If
        ln = ln + 1
    Wend

    For i = 3 To Range("O" & Rows.Count).End(xlUp).Row
        If Range("I" & i) = "" Or Range("L" & i) = "" Then
            Range("O" & i).ClearContents
        End If
    Next i

    ActiveWorkbook.Worksheets("MyMicrosDD").AutoFilter.Sort.SortFields.Add Key:= _
        Range("K2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("MyMicrosDD").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    ActiveSheet.Protect AllowFiltering:=True

    MsgBox "Quantités mises à jour"
End Sub

Bonjour à tous,

C'est bon j'ai trouvé comment faire, j'ai utilisé la fonction coller les valeurs, ce qui permet de garder la valeur même après le changement de filtre.

 ActiveSheet.Unprotect

    ActiveSheet.Range("$F$3:$Q$163").AutoFilter Field:=2, Criteria1:= _
        "BAR PLAGE/0011"

     Range("U5").Select
    Selection.Copy
    Range("R6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    ActiveSheet.Range("$F$3:$Q$163").AutoFilter Field:=2, Criteria1:="Mini Bar"

     Range("U28").Select
    Selection.Copy
    Range("R26").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    ActiveSheet.Range("$F$3:$Q$163").AutoFilter Field:=2, Criteria1:="PALME D OR/0011"

    Range("U42").Select
    Selection.Copy
    Range("R40").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

     ActiveSheet.Range("$F$3:$Q$163").AutoFilter Field:=2, Criteria1:= _
        "RELAIS MARTINEZ/0011"

     Range("U52").Select
    Selection.Copy
    Range("R50").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    ActiveSheet.Range("$F$3:$Q$163").AutoFilter Field:=2, Criteria1:= _
        "RESTAURANT PLAGE/0011"

      Range("U74").Select
    Selection.Copy
    Range("R72").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    ActiveSheet.Range("$F$3:$Q$163").AutoFilter Field:=2, Criteria1:= _
        "Room Service"

     Range("U94").Select
    Selection.Copy
    Range("R92").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    ActiveSheet.ShowAllData
    ActiveSheet.Protect AllowFiltering:=True

End Sub

Voilà, il existe sûrement plus efficace comme méthode mais celle-ci fonctionne bien !

Merci à tous pour votre attention,

Cordialement.

Rechercher des sujets similaires à "formule verification valeurs deux tableaux"