Reporting de plusieurs valeurs dans un tableau

Bonjour,

Je suis à la recherche d’une petite aide pour solutionner un problème.

Voici la situation :

J’ai un tableau avec plusieurs colonnes et des lignes qui varient en fonction de l’export d’un logiciel.

Colonne 1 = noms de différents clients (plusieurs noms possible séparés par un point virgule)

Colonne 2 = adresse

Colonne 3 = horaire

Colonne 4 = actes

Lignes de 2 à xxx

Je souhaiterai effectuer un reporting de ce tableau, à savoir :

  • La liste des actes des différents clients
  • Un client peut être présent dans plusieurs ligne et le code des actes peut être identique sur différentes lignes aussi.

Je voudrai donc avoir une liste de chaque client présent dans ce tableau avec tous les actes qui leurs sont associés.

J’ai essayé différentes combinaisons avec recherchev, nb.si mais je ne m’en sors pas.

Auriez-vous une solution pour réaliser ce reporting par formules ou macro ?

Je vous remercie par avance pour votre aide.

Bonne soirée.

Bonsoir Loic, bonsoir le forum,

Un petit fichier exemple nous permettrait de mieux cerner ton problème et tu aurais certainement des réponses bien plus vite...

Bonjour,

Effectivement avec un exemple c'est mieux.

Donc en pièce jointe voici un bout de fichier en exemple.

Merci pour votre aide.

Bonne journée.

bonjour,

une proposition

Re, bonjour l'Acide, bonjour le forum,

Avec un exemple aussi m***ique je n'ai pas vraiment le même résultat que notre ami corrosif. D'habitude je commente tous mes codes mais pas là (trop honte vu comment il a plié ça en deux coups de cuiller à pot)

Le code (m***ique lui aussi) :

Option Explicit

Sub Macro1()
Dim OA As Worksheet
Dim OB As Worksheet
Dim TV As Variant
Dim D As Object
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim L As Integer
Dim NP As Integer
Dim TMP As Variant
Dim TL() As Variant
Dim DEST As Range

Set OA = Worksheets("Actes")
Set OB = Worksheets("Reporting")
OB.Range("B4").CurrentRegion.ClearContents
TV = OA.Range("A2").CurrentRegion
Set D = CreateObject("Scripting.Dictionary")
For I = 2 To UBound(TV, 1)
    NP = UBound(Split(TV(I, 1), " ; "))
    Select Case NP
        Case 0
            D(TV(I, 1)) = ""
        Case Else
            For J = 0 To NP
                D(Split(TV(I, 1), " ; ")(J)) = ""
            Next J
    End Select
Next I
TMP = D.Keys
For J = 0 To UBound(TMP)
    Debug.Print TMP(J)
    Erase TL: K = 0
    For I = 2 To UBound(TV, 1)
        NP = UBound(Split(TV(I, 1), " ; "))
        Select Case NP
            Case 0
                If TV(I, 1) = TMP(J) Then
                    K = K + 1
                    ReDim Preserve TL(1 To 2, 1 To K)
                    TL(1, 1) = TMP(J)
                    TL(2, K) = "n° acte " & TV(I, 3)
                End If
            Case Else
                For L = 0 To NP
                    Debug.Print Split(TV(I, 1), " ; ")(L)
                    If Split(TV(I, 1), " ; ")(L) = TMP(J) Then
                        K = K + 1
                        ReDim Preserve TL(1 To 2, 1 To K)
                        TL(1, 1) = TMP(J)
                        TL(2, K) = "n° acte " & TV(I, 3)
                    End If
                Next L
        End Select
    Next I
    If OB.Range("B4").Value = "" Then Set DEST = OB.Range("B4") Else Set DEST = OB.Cells(Application.Rows.Count, "C").End(xlUp).Offset(1, -1)
    DEST.Resize(K, 2).Value = Application.Transpose(TL)
Next J
End Sub

Bonjour à tous,

Merci pour vos réponses.

La macro de h2so4 fonctionne, cependant j'aurai besoin de faire ressortir également le nombre de fois ou un même numéro d'acte est associé au client.

Je n'est pas encore testé le code de ThauThème.

bonjour à tous,

une nouvelle proposition.

Sub aargh()

    Set wsa = Sheets("actes") 'wsa=feuille des actes
    Set wsr = Sheets("reporting") 'wsr=feuille de reporting

    wsr.Cells.Clear ' on vide la feuille wsr
    dl = wsa.Cells(Rows.Count, 1).End(xlUp).Row 'dernière ligne de wsa contenant des données

    For i = 3 To dl 'on parcourt toutes les lignes de wsa en commençant à la ligne 3

        c = Split(wsa.Cells(i, 1), " ; ") ' on isole les clients contenu dans la cellule en colonne A et on les met dans c = tableau à 1 dimension
        acte = wsa.Cells(i, 3) 'on memorise le n° d'acte

        For j = LBound(c) To UBound(c) 'pour chaque client mis dans le tableau c
            client = Trim(c(j)) 'on enlève les blancs inutiles
            k = k + 1 ' on incremente k (k=numéro de ligne du reporting)
            wsr.Cells(k, 1) = client 'on met le nom du client en ligne k, colonne A
            wsr.Cells(k, 2) = acte 'on met le numéro d'acte en ligne k, colonne B
        Next j ' client suivant dans c

    Next i 'ligne suivante de wsa

    'tri des lignes mises sur le reporting
    wsr.Range("A1").Resize(k, 2).Sort key1:=wsr.Range("A1"), order1:=xlAscending, key2:=wsr.Range("B1"), order2:=xlAscending, Header:=xlNo

    'comptage du nombre d'actes par client et numéro d'actes

    For i = 1 To k 'on parcourt toutes les lignes du reporting
        If wsr.Cells(i, 1) = current And wsr.Cells(i, 2) = currentacte Then 'même client même numéro que client et n° acte en cours
            wsr.Cells(icurrentacte, 3) = wsr.Cells(icurrentacte, 3) + 1 'on ajoute 1 en colonne C pour cet numéro
        Else
            current = wsr.Cells(i, 1) 'sinon on adapte le client en cours
            currentacte = wsr.Cells(i, 2) 'on adapte le numéro d'acte en cours
            icurrentacte = i 'i est la ligne du reporting où il faut compter les actes portant ce numéro d'acte
            wsr.Cells(icurrentacte, 3) = 1 'nombre d'actes pour ce numéro est 1
        End If
    Next i

    'suppression des doublons sur base des 2 premières colonnes (client et numéro d'acte)
    wsr.Range("A1").Resize(k, 3).RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo

    ' suppression des lignes identiques en colonne A
    For i = 1 To k 'on parcourt toutes les lignes du reporting
        If wsr.Cells(i, 1) = current Then 'si même client que client en cours
        wsr.Cells(i, 1) = "" 'on efface le nom du client
        Else
        current = wsr.Cells(i, 1) 'sinon on adapte le nom du client en cours
        End If
    Next i

End Sub

Re bonjour,

Merci ThauThème ton code fonctionne très bien et fait ressortir chaque acte même s'il est déjà présent pour un même client.

Je peux donc comptabiliser aisément le nombre de fois ou ressort un même acte pour un client.

Sinon, est ce que un complément de code pourrait me comptabiliser en plus le nombre de même acte par client ?

Merci encore pour l'aide.

Merci h2so4, je n'avait pas vu ta nouvelle proposition.

Est ce qu'on pourrait avoir en plus une mise en forme du tableau ?

Nom des colonne et quadrillage ?

En complément d'information, je vais certainement être amené à ajouter des colonnes dans mon tableau "onglet actes", par conséquent il faudra que je fasse évoluer le code.

Pour le coup je ne suis pas super ferré sur la traduction de ce code et du coup je ne sais pas quelles lignes je devrais modifier...

une aide complémentaire serait la bienvenue.

Bonjour,

je t'ai mis des commentaires dans le code, j'espère que cela pourra t'aider. Voir mon message précédent.

Bonjour et merci pour ces réponses.

Je vais tester tout ça demain.

Bonjour à vous,

Vos solutions répondent à ma demande.

Je vais pouvoir finaliser mon fichier.

Je vous remercie pour votre aide.

2export-actes.xlsx (12.31 Ko)

Bonjour à tous,

J'ouvre à nouveau ce sujet car cette première étape ne répond pas totalement à mon besoin.

En fait, l'extraction brute de mon fichier me donne 3 onglets différents que je souhaite combiner.

Le résultat attendu se trouve dans l'onglet "Reporting".

Sachant que la difficulté est que dans 2 des onglets les intervenants apparaissent l'un pour son résultat de méthode et l'autre pour l'UO.

à noter également que le point commun de ces trois onglet est le numéro.

J'ai essayé en dehors des macros de faire cette synthèse avec Power Query mais je ne m'en sors pas.

Mon besoin final est pour chaque intervenant d'avoir pour un même numéro, la date, le responsable, la méthode et le nombre d'UO

En vous remerciant pour votre précieuse aide.

Mon explication étant peut être pas assez claire, voici le fichier avec le résultat souhaité (3 exemple de différentes couleurs).

En vous remerciant par avance.

4export-actes.xlsx (13.51 Ko)
Rechercher des sujets similaires à "reporting valeurs tableau"