Microsoft 365 Résultat multiples avec Excel

Kyl

XLDnaute Nouveau
Bonjour,
Je suis bloqué sur Excel.

Déjà dans un premier temps, nous l’utilisons pour de la comptabilité fournisseur.

Dans une feuille Excel nommé « code.fournisseur » j’ai donc des codes fournisseurs dans un tableau avec le nom du fournisseur à côté
Par exemple le code A.1 correspond à Amazon, le code A.2 correspond à Auchan.

J’ai des feuilles Excel pour chaque mois où nous enregistrons toutes nos factures, par exemple la « 08 » c’est pour le mois d’août, la « 09 » pour le mois de septembre etc. Dedans j’ai donc les fournisseurs dans la colonne B avec leur code respectif dans la colonne C.

J’aimerais savoir si une formule existe afin que par exemple en mettant le code fournisseur dans une cellule, il puisse m’afficher toutes les factures de tout les mois correspondant à ce dernier.
Par exemple si j’ai 4 factures A.1 Amazon en Août et 6 en septembre j’aimerais que les 10 s’affiche à la suite. Je comptais mettre ça dans une nouvelle feuille Excel que je nommerais « compte.fournisseurs »

Merci d’avance pour vos réponses si il y a une solution à mon problème.
Bonne journée à vous.
 

Pièces jointes

  • kyl.xlsx
    12.1 KB · Affichages: 12
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Kyl, nat54,

Voyez le fichier joint et le code de la 1ère feuille :
VB:
Private Sub Worksheet_Activate()
Worksheet_Change [B5] 'lance la macro
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B5]) Is Nothing Then Exit Sub
Dim code$, w As Worksheet, tablo, i&, n&
code = CStr([B5])
If code <> "" Then
    ReDim resu(1 To Rows.Count, 1 To 3)
    For Each w In Worksheets
        If IsNumeric(w.Name) Then
            tablo = w.Range("A1", w.UsedRange).Resize(, 7)
            For i = 1 To UBound(tablo)
                If tablo(i, 3) = code Then
                    n = n + 1
                    resu(n, 1) = tablo(i, 6)
                    resu(n, 2) = tablo(i, 2)
                    resu(n, 3) = tablo(i, 5)
                End If
            Next i
        End If
    Next w
End If
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [D5]
    If n Then .Resize(n, 3) = resu
    .Offset(, -1) = n 'en C5
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 3).ClearContents 'RAZ en dessous
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Il s'exécute quand on modifie B5 ou qu'on active la feuille.

A+
 

Pièces jointes

  • kyl(1).xlsm
    23.2 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Bonjour,

Voici une ébauche de proposition par Requête Power Query et 3 lignes de vba (on peut faire sans) pour automatiser le rafraîchissement du tableau de résultats.

A noter :
Pour excel un tableau de données ne doit pas être séparé de son entête par une ou des lignes vides.

Dans vos entêtes, il y avait une espace en fin du libellé "Fournisseur" ("Fournisseur ") que j'ai enlevé.

J'ai transformé vos tableaux en tableaux structurés, vous avez excel 365, il est temps de vous y mettre :)

Tuto :

Cordialement
 

Pièces jointes

  • kyl.xlsm
    35.9 KB · Affichages: 6

Discussions similaires

Réponses
6
Affichages
714

Statistiques des forums

Discussions
297 960
Messages
1 964 647
Membres
200 628
dernier inscrit
pop600