XL 2016 Automatiser le report des informations d'un onglet à un autre

Alan28

XLDnaute Nouveau
Bonjour, pour ma première mission en entreprise une collègue m'a demandé de l'aide pour ses reportings. Elle fait tous les mois plusieurs reportings à la main et m'a demandé s'il n'y a pas une possibilité d'automatiser cela soit via une formule ou une Macro.

Je vous explique : Dans l'onglet "Détails" elle regarde dans les colonnes : J, K, L, M. Puis elle fait un 1er filtre sur la colonne J, elle reporte le résultat de cette colonne dans l'onglet "Synthèse par région" à la ligne qui convient. Ensuite elle fait la même chose pour les 2 autres colonnes suivantes (K, L, M).

Pour savoir dans quelle ligne elle doit rapatrier les informations elle se réfère à la colonne B.

Exemple : Onglet Détails, colonne B, ligne 2 = BAS RHIN alors le 1 qui est en colonne J, va aller dans "Synthèse par région", colonne C, ligne 4 parce que dans la colonne B, ligne 4 il y a "BAS RHIN". Elle fait la même chose pour les autres résultats.

Je vous joins le fichier de travail mais aussi le résultat attendu, j'espère que ces 2 fichiers vont vous aider à mieux comprendre ma demande.

Ne serait-il pas possible d’automatiser cela via une Macro ou une formule ? Je me demande si on renomme des plages de cellule dans l’onglet « Détails », on peut les utiliser pour une formule recherche ?

Elle veut automatiser ces reportings parce que c'est un travail chronophage, ça lui prend du temps et il y a aussi un risque élevé d'erreur.

Je vous remercie d’avance pour votre aide.
 

Pièces jointes

  • Reporting fichier travail.xlsx
    20.9 KB · Affichages: 9
  • Reporting résultat attendu.xlsx
    22.3 KB · Affichages: 6
Solution
Bonjour Alan28, chris,

Si j'ai bien compris voyez le fichier joint et cette fonction VBA :
VB:
Function MaSomme(Zone$, colZone As Range, colSomme As Range)
Dim i As Variant
i = Application.Match(Zone, colZone, 0)
If IsNumeric(i) Then MaSomme = Application.Sum(Intersect(colZone(i).MergeArea.EntireRow, colSomme))
End Function
Le code doit impérativement être placé dans un module standard (Module1).

Formule en C3 de la 2ème feuille =MaSomme($B3;Détails!$B:$B;Détails!J:J)

à propager par Collage spécial-Formules sur C3:F53.

Edit : attention à l'orthographe (accents) et aux espaces superflus, exemple RHÔNE...

A+

chris

XLDnaute Barbatruc
Bonjour

De toute évidence dans le fichier réel l'onglet Détails contient un Tableau Croisé Dynamique.

Cela ne s'exploite pas comme un tableau de données saisies

Que signifie l'abréviation 1° RDV ?
1er RDV ?
% de RDV ?
...

Il est probable que ces infos puissent être calculées en complétant le TCD ou en en faisant un autre à partir de la même source de données...

Tes 2fichiers joints semblent identiques
 

job75

XLDnaute Barbatruc
Bonjour Alan28, chris,

Si j'ai bien compris voyez le fichier joint et cette fonction VBA :
VB:
Function MaSomme(Zone$, colZone As Range, colSomme As Range)
Dim i As Variant
i = Application.Match(Zone, colZone, 0)
If IsNumeric(i) Then MaSomme = Application.Sum(Intersect(colZone(i).MergeArea.EntireRow, colSomme))
End Function
Le code doit impérativement être placé dans un module standard (Module1).

Formule en C3 de la 2ème feuille =MaSomme($B3;Détails!$B:$B;Détails!J:J)

à propager par Collage spécial-Formules sur C3:F53.

Edit : attention à l'orthographe (accents) et aux espaces superflus, exemple RHÔNE...

A+
 

Pièces jointes

  • Reporting fichier travail(1).xlsm
    30.1 KB · Affichages: 5
Dernière édition:

Alan28

XLDnaute Nouveau
Bonjour à tous les 2,
@chris, nombre de RDV signifie qu'il y a eu déjà un premier contact avec le client. Ce fichier provient d'une extraction, il n'y a pas de TCD dans le fichier. Normalement il contient plus d'onglets mais pour ceux-ci il y a besoin d'une intervention humaine. D'où sa demande d'automatiser tout ce qui peut être automatisé.

@job75, c'est intéressant ce que tu as fait. Par contre je n'arrive pas à utiliser le code VBA, je suis vraiment débutant et je ne comprends pas le VBA. Dois-je faire quelque chose avec le code VBA ?

J'ai remarqué que le totaux dans l'onglet "Synthèse par région" ne sont pas les bons pour la colonne C et D.
  • Colonne C : il manque le 1 pour la ligne 16 et 46 en colonne B "SUD MIDI PYRENEES", "LA DÉFENSE GRANDE ARCHE ).
  • Colonne D : il manque le 1 pour la ligne 46 (en colonne B "LA DÉFENSE GRANDE ARCHE")
Les 2 dernières colonnes nickel.

Comment peut-on faire pour résoudre aussi ces 2 colonnes ?

Je vous remercie pour votre aide.
Alan.
 
Dernière édition:

job75

XLDnaute Barbatruc
Par contre je n'arrive pas à utiliser le code VBA, je suis vraiment débutant et je ne comprends pas le VBA. Dois-je faire quelque chose avec le code VBA ?
Bah j'ai pourtant été clair, le code est placé dans un module standard et c'est tout, la fonction est ensuite utilisée dans les formules des cellules.
J'ai remarqué que le totaux dans l'onglet "Synthèse par région" ne sont pas les bons pour la colonne C et D.
  • Colonne C : il manque le 1 pour la ligne 16 et 46.
  • Colonne D : il manque le 1 pour la ligne 46
C16 : pas de correspondance pour B16 en 1ère feuille !

C46 et D46 : il y a un accent en B46 et pas dans la correspondance, j'ai bien dit qu'il fallait faire attention à l'orthographe.
 

Alan28

XLDnaute Nouveau
Bonsoir @job75, je te remercie pour ton retour rapide. En effet, après avoir lu plus attentivement j'ai compris. Maintenant il va falloir que je vois avec ma collègue pour voir comment on va faire pour trouver une correspondance pour B16. Encore une fois, un grand merci pour ton aide. 😊
 

Discussions similaires

Statistiques des forums

Discussions
298 001
Messages
1 965 027
Membres
200 809
dernier inscrit
Ksiba