XL 2016 Exportations de données

Fitgy

XLDnaute Junior
Bonjour à tous,

Je cherche une solution pour récupérer plusieurs données dans plusieurs onglets.

J'explique avec mon excel que vous trouverez en PJ :

j'essaye de faire en sorte qu'en AA de listing jeunesse j'ai un calcul automatique de toutes les heures des autres onglets en AD en face de chaque personnes en A.

Par exemple Blop Adrien a fait au total 12h31 sur toutes les activités j'aimerais que ça apparaisse en AA.

Il n'y aura pas que ces onglets là d'autre apparaîtront au fur et à mesure ainsi que d'autres personnes vous vous en doutez.

J'ai tenté via plusieurs formules mais en vain.

J'espère que vous pourrez m'aider merci d'avance le forum!
 

Pièces jointes

  • Listings test.xlsx
    103.6 KB · Affichages: 7

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Voici une solution par power query.
Comme vos tableau ne sont pas "nommés" ni des tableaux structurés, la requête Power query interroge le classeur comme un classeur externe, il faudra donc enregistrer votre classeurs avant de rafraîchir la requête.
Vérifiez également que la formule de la cellule I1 de "Onglet travail" et nommée "Fichier" contient bien le chemin vers le fichier.
si vous optez pour une solution power query, on pourra amélioré cela suivant vos besoins.

Une fois les vérifications faites, Données->Actualiser tout ou click-droit dans le tableau -> "Actualiser"

La requête (voir tableau en feuille "Onglet travail") totalise par nom toutes les heures des colonne A:D

Cordialement
 

Pièces jointes

  • PQ_Listing test.xlsx
    113.4 KB · Affichages: 7

Cousinhub

XLDnaute Barbatruc
Hi,
Bien sûr, c'était pour voir si tu suivais...
Nan, comme ça fait quelques jours que je cherche cette solution (j'ai été sur plusieurs sites, et ils utilisaient notamment Duration.Day en ajoutant une colonne intermédiaire, et en retranchant #date(1899,12,31)), je l'avais toujours en tête...
Merci encore, et +++
 

job75

XLDnaute Barbatruc
Bonsoir,

Une fonction VBA très simple :
VB:
Function SommeOnglets(nom$)
Application.Volatile
Dim w As Worksheet
For Each w In Worksheets
    SommeOnglets = SommeOnglets + Application.SumIf(w.Columns("A"), nom, w.Columns("AD"))
Next
End Function
Le code doit être impérativement dans un module standard.

Formule en colonne AA de la 1ère feuille =SommeOnglets([@NomPrénom])

A+
 

Pièces jointes

  • Listings test.xlsm
    105.9 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour Fitgy, le forum,

Avec une fonction volatile les formules sont recalculées à chaque modification d'une cellule quelconque et cela peut prendre beaucoup de temps s'il y a beaucoup de formules à recalculer.

Pour l'éviter on ne rendra pas la fonction volatile et on ajoutera cette macro dans le code de la 1ère feuille :
VB:
Private Sub Worksheet_Activate()
With [Tableau1].Columns(1) 'tableau structuré
    .Formula = .Formula 'force le recalcul des formules en colonne AA
End With
End Sub
Les formules sont recalculées seulement à l'activation de la feuille.

J'utilise .Formula pour le cas où il y aurait des formules en colonne A.

A+
 

Pièces jointes

  • Listings test(1).xlsm
    107.1 KB · Affichages: 0

job75

XLDnaute Barbatruc
Pour tester j'ai recopié le tableau A6:AA8 sur 12 000 lignes.

Dans les 2 solutions le recalcul des formules s'effectue en 14,6 secondes.

Mais c'est seulement dans le 2ème cas (l'activation de la feuille) que cette durée est acceptable.
 

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 786
Membres
101 817
dernier inscrit
carvajal