XL 2016 remontée informations et suppression ligne

marc.gilliand

XLDnaute Occasionnel
Bonjour le forum,
Dans le tableau XL joint, je souhaiterai dans un premier temps que :
dans chaque feuille de fournisseur XL me calcule la valeur réelle des achats, à savoir que si une commande à le code de suppression L qui se trouve en colonne J, la somme remontée du total du fournisseur ne doit pas être de 5081.40 (valeur cellule P2, mais XL doit me remonter dans la feuille Total des fournisseurs pour le fournisseur (A; par exemple), une valeur de 2700.60, soit les montants dont les commandes n'ont pas code de suppression.
Dans un deuxième temps tout ceci, j'aimerai pouvoir l'automatiser; du moment que j'insère une nouvelle feuille avec un nouveau fournisseur.
Dans un troisième temps; créer un tableau dynamique pour que je puisse par exemple filtrer sur le produit, sur le fournisseur, sur le mois.
J'espère avoir été clair. Merci de votre retour.
 

Pièces jointes

  • CA_FOU_2022.ForumXLSX.XLSX
    31.4 KB · Affichages: 4
Solution
Bonjour @marc.gilliand :),

Un essai avec une petite macro.
  • La feuille "Total des fournisseurs" se met à jour quand on la sélectionne
  • On peut ajouter ou supprimer des feuilles fournisseurs (par exemple, dupliquer une feuille fournisseur, sélectionner la feuille "Total des fournisseurs", supprimer une feuille fournisseur, re-sélectionner la feuille "Total des fournisseurs")
nota: on ne compte que les lignes dont la quantité est supérieure à 0 (colonne O) et les lignes dont l'indicateur de suppression est différent de "L" (colonne J).

Pour le 3ème point, pas d'idée car pas de suggestion de feuille résultat.

Le code VBA est dans le module de la feuille "Total des fournisseurs":
VB:
Private Sub...

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @marc.gilliand :),

Un essai avec une petite macro.
  • La feuille "Total des fournisseurs" se met à jour quand on la sélectionne
  • On peut ajouter ou supprimer des feuilles fournisseurs (par exemple, dupliquer une feuille fournisseur, sélectionner la feuille "Total des fournisseurs", supprimer une feuille fournisseur, re-sélectionner la feuille "Total des fournisseurs")
nota: on ne compte que les lignes dont la quantité est supérieure à 0 (colonne O) et les lignes dont l'indicateur de suppression est différent de "L" (colonne J).

Pour le 3ème point, pas d'idée car pas de suggestion de feuille résultat.

Le code VBA est dans le module de la feuille "Total des fournisseurs":
VB:
Private Sub Worksheet_Activate()
Const Formul = "=SUMIFS('xxx'!C[14],'xxx'!C[13],"">0"",'xxx'!C[8],""<>""&""L"")"
Dim wsh
   Application.ScreenUpdating = False
   If Me.FilterMode Then Me.ShowAllData
   Range("a:b").ClearContents
   Range("a1") = "Fournisseur": Range("b1") = "Total"
   For Each wsh In ThisWorkbook.Worksheets
      If wsh.Name <> Me.Name Then
         Cells(Rows.Count, "a").End(xlUp).Offset(1) = wsh.Name
         Cells(Rows.Count, "a").End(xlUp).Offset(, 1).Formula = Replace(Formul, "xxx", wsh.Name)
         Cells(Rows.Count, "a").End(xlUp).Offset(, 1).NumberFormat = "#,##0.00"
      End If
   Next wsh
End Sub
 

Pièces jointes

  • marc.gilliand- CA_FOU_2022.ForumXLSX.- v1xlsm.xlsm
    41.3 KB · Affichages: 5
Dernière édition:

marc.gilliand

XLDnaute Occasionnel
Bonjour @marc.gilliand :),

Un essai avec une petite macro.
  • La feuille "Total des fournisseurs" se met à jour quand on la sélectionne
  • On peut ajouter ou supprimer des feuilles fournisseurs (par exemple, dupliquer une feuille fournisseur, sélectionner la feuille "Total des fournisseurs", supprimer une feuille fournisseur, re-sélectionner la feuille "Total des fournisseurs")
nota: on ne compte que les lignes dont la quantité est supérieure à 0 (colonne O) et les lignes dont l'indicateur de suppression est différent de "L" (colonne J).

Pour le 3ème point, pas d'idée car pas de suggestion de feuille résultat.

Le code VBA est dans le module de la feuille "Total des fournisseurs":
VB:
Private Sub Worksheet_Activate()
Const Formul = "=SUMIFS('xxx'!C[14],'xxx'!C[13],"">0"",'xxx'!C[8],""<>""&""L"")"
Dim wsh
   Application.ScreenUpdating = False
   If Me.FilterMode Then Me.ShowAllData
   Range("a:b").ClearContents
   Range("a1") = "Fournisseur": Range("b1") = "Total"
   For Each wsh In ThisWorkbook.Worksheets
      If wsh.Name <> Me.Name Then
         Cells(Rows.Count, "a").End(xlUp).Offset(1) = wsh.Name
         Cells(Rows.Count, "a").End(xlUp).Offset(, 1).Formula = Replace(Formul, "xxx", wsh.Name)
         Cells(Rows.Count, "a").End(xlUp).Offset(, 1).NumberFormat = "#,##0.00"
      End If
   Next wsh
End Sub
Magnifique, exactement ce dont j'ai besoin. Merci infiniment
 

Discussions similaires

Réponses
11
Affichages
584

Statistiques des forums

Discussions
311 721
Messages
2 081 929
Membres
101 843
dernier inscrit
Thaly