XL 2016 Reporting depuis un tableau

loicoss

XLDnaute Junior
Bonjour,

Je souhaiterai effectué un reporting d'un tableau Excel, exporté depuis un logiciel (mise en forme prédéfinie).

Les données que je souhaite synthétiser, sont :
- identifier chaque client
- pour chaque client faire ressortir les codes associés
- les clients peuvent avoir plusieurs fois le même code, du coup je souhaiterai les compter.

dans les cellules intervenants, il peut y avoir plusieurs clients séparés par des points virgues (;)

J'ai essayé de répondre à mon besoin avec différentes formules, mais je n'y arrive pas (RECHERCHEV; NB.SI, etc.)

Pourriez-vous m'aider svp sur ce sujet par un jeu de formules ou éventuellement une macro ?

Je vous joins un fichier avec en onglet "Actes" le tableau et en onglet "Reporting" la synthèse que je souhaiterai.

S'il était possible d'avoir cette synthèse avec une mise en forme et le nom des colonnes.

Je vous remercie par avance pour le coup de main.

Bonne journée.
 

Pièces jointes

  • Export actes par client.xlsx
    12.7 KB · Affichages: 28
Solution
Bonjour loicoss, le forum,

Vous n'avez pas dû vous fatiguer beaucoup.

J'ai mis les formules matricielles avec le nom T en colonnes J K M, à vous de le faire en colonnes N O P Q.

Et s'il faut en mettre dans d'autres colonnes c'est votre problème.

A+

loicoss

XLDnaute Junior
Merci.

je vais essayer, mais je pense avoir un autre souci car dans mon classeur j'ai d'autres feuilles que je dois préserver.
Mon reporting dois apparaitre dans une feuille "données", est ce que le fichier (Export actes) doit se nommé "Données" ?
 

job75

XLDnaute Barbatruc
Merci.

je vais essayer, mais je pense avoir un autre souci car dans mon classeur j'ai d'autres feuilles que je dois préserver.
Mon reporting dois apparaitre dans une feuille "données", est ce que le fichier (Export actes) doit se nommé "Données" ?
Si vous ne voulez remplir qu'une feuille appelez-la "Export actes" comme le fichier et modifiez ainsi :
VB:
For Each F In Me.Worksheets(Array("Export actes")) 'adapter si nécessaire aux feuilles à traiter
Si par la suite vous voulez ajouter des feuilles ce sera très facile.
 

Pièces jointes

  • Reporting(3).xlsm
    23.3 KB · Affichages: 6
  • Export actes.xlsx
    12.6 KB · Affichages: 5

loicoss

XLDnaute Junior
Bonsoir Le Forum et Bonsoir Job75,

Le résultat est impeccable, j'ai pu l'adapter à mon réel export.

Dernier problème que je souhaiterai résoudre.

Dans le reporting (feuille export actes), j'obtiens en colonne F la liste des code UO.
dans un autre onglet qui se nomme "famille", j'ai la correspondance de ces codes UO en libéllés.

Je souhaiterai donc associer ces codes et le libellé dans la feuille "export acte" en colonne G

exemple feuille "export acte" colonne F code "33" en colonne G "libellé du code 33"

J'ai essayé avec la formule recherchev qui me permet d'avoir le résultat, mais le problème c'est que en fonction du fichier "export actes.xlsx" le tableau comporte plus ou moins de ligne et du coup ma recherchev ne suit pas.

Auriez-vous une solution complémentaire à me proposer ou est-il possible d'intégrer cette action dans la macro ?

En vous remerciant par avance.
 

loicoss

XLDnaute Junior
Je vais essayer d'être plus clair.

exemple :
le tableau reporting après traitement (export actes.xlsx) par la macro fait 10 lignes.
J'applique donc en colonne G sur ces 10 lignes ma recherchev.

Lors d'un nouvel export (export actes.xlsx) après traitement par la macro ce nouveau tableau fait 17 lignes.
Ma recherchev prédéfinit n'évolue pas naturellement et reste sur les 10 premières lignes.

En gros je ne voudrais pas intervenir à chaque fois sur ma recherchev en colonne G en fonction de l'export (export actes.xlsx).
J'aimerai que le traitement par la macro automatise cette recherchev, macro ou autre ?

Merci à vous.
 

loicoss

XLDnaute Junior
Mettez votre formule sur un nombre de lignes maximum, 1000, 2000,10000...
Oui c'est ce que j'ai fait.
Le pb c'est que de ce tableau de données (feuille export actes) je complète automatiquement les cellules d'une autre feuille pour synthétiser mes résultats.
Pour cela j'utilise des formules matricielles.
Quand le résultat du traitement évolue (nb de ligne) certains éléments de ces formules changent également (au niveau des lignes (ex A2:A300 passe à A2:A450) et celle se rapportant à la recherchev, non (ex B2:B300 reste B2:B300) du coup ma formule matricielle ne me renvoie plus de valeur.
Le nombre de ligne pour chaques éléments de cette formule matricielle doit être identique.
 

loicoss

XLDnaute Junior
Bonsoir,

Voici mes 2 fichiers.
Je souhaite donc intégrer à la macro la correspondance des UO (colonne F) issue de la feuille "Famille - UO" à la place de la recherchev (colonnes G et H)

En vous remerciant par avance.
 

Pièces jointes

  • Données.xlsx
    436.9 KB · Affichages: 3
  • Reporting PRDE V2.0.xlsm
    201.7 KB · Affichages: 5

job75

XLDnaute Barbatruc
Voyez les fichiers joints et les 2 lignes ajoutées en bas de la macro :
VB:
    '---restitution---
1   ActiveWorkbook.Close False 'ferme le fichier
2   With F
        If .FilterMode Then .ShowAllData 'si la feuille est filtrée
        With .[A3] '1ère cellule de destination, à adapter
            If n Then
                .Resize(n, ncol) = tablo
                .Cells(1, 7).Resize(n) = "=IFERROR(VLOOKUP(RC[-1],'Famille - UO'!C1:C3,2,0),"""")" 'formule en colonne G
                .Cells(1, 8).Resize(n) = "=IFERROR(VLOOKUP(RC[-2],'Famille - UO'!C1:C3,3,0),"""")" 'formule en colonne H
                .Resize(n, ncol + 2).Borders.Weight = xlThin 'bordures incluant les colonnes G et H
            End If
            .Offset(n).Resize(Rows.Count - n - .Row + 1, ncol + 2).Delete xlUp 'RAZ en dessous incluant les colonnes G et H
        End With
        With .UsedRange: End With 'actualise la barre de défilement verticale
    End With
 

Pièces jointes

  • Reporting PRDE V2.0(1).xlsm
    89.3 KB · Affichages: 9
  • Données.xlsx
    436.9 KB · Affichages: 9

loicoss

XLDnaute Junior
Merci Job75,

Les données traitées correspondent à mes attentes.
Par contre, j'ai un onglet "PRDE" qui est masqué.
Dans cet onglet, j'ai des formules matricielle.
Je ne comprend pas pourquoi les valeurs se rapportant à l'onglet données changent lorsque je lance la macro.

Exemple :
Dans la formule matricielle en M4 j'ai une formule ............ Données!$H$2:$H$4000=$M$2 .....................
lorsque je lance la macro et que le tableau évolue en nombre de lignes (en + ou en -) la valeur 4000 change et devient égale à l'avant dernière ligne du tableau généré.
N'est-il pas possible de bloquer ce changement ou d'être sur quelle prendra systématiquement la dernière ligne du tableau généré ??

Remarque : toutes les formules ne sont pas encore fonctionnelle ne regarder que celle en M4

Merci pour l'aide.
 

loicoss

XLDnaute Junior
Là c'est une question de trop, désolé mais je vous abandonne.

Car on pourrait continuer ainsi indéfiniment :rolleyes:
Bonjour Job75 et le forum,

Job75, vous ne souhaitez pas me répondre ou vous ne connaissez pas de solution à ce pb ?
Je suis déçu que nous n’allions pas au bout de mon projet ensemble.
Vous avez été d’une grande aide depuis le début et vous m’avez permît d’obtenir le résultat attendu.
Je sais qu’il y a eu un enchaînement de question mais qui ont porté leur fruit puisque le résultat est là.

Si vous aviez la gentillesse de répondre à cette dernière question qui est la finale car je saurais gérer mes formules derrrière.

merci à vous.
 

job75

XLDnaute Barbatruc
Bonjour loicoss,

La Charte du forum précise bien qu'une discussion = une question.

Mais bon si celle-ci est bien la dernière :

- définissez le nom T par la formule dynamique classique :
Code:
=DECALER(Données!$A$2;;;NBVAL(Données!$A:$A)-1;8)
- introduisez ce nom dans la formule matricielle en PRDE!M4 :
Code:
=SI(ESTVIDE($B4);"";SI(OU($C4="x";$E4="x");SOMME(SI(FREQUENCE(SI((INDEX(T;;8)=$M$2)*(INDEX(T;;4)=$B4)*(OU(INDEX(T;;5)="TST Distance";INDEX(T;;5)="TST Potentiel";INDEX(T;;5)="TST Contact"));EQUIV(INDEX(T;;2);INDEX(T;;2);0));EQUIV(INDEX(T;;2);INDEX(T;;2);0))>0;1));""))
A+
 

Discussions similaires