XL 2016 Extraire données avec nom d'un autre classeurs

Julien5635

XLDnaute Nouveau
Bonjour à tous,

Je vais essayer d'être le plus clair possible mais ma demande est un peu particulière.

J'ai plusieurs tableaux excel avec différents prénoms et des données différentes. J'aimerais compilé ces données dans une seule feuille pour compiler les données par personnes

En gros que Excel recherche le prénom et associe les données sur chaque feuille(Capture 1 et 2) et les restitue dans une autre feuille (capture 3). J'ai essayé de vous faire un exemple en image

Merci beaucoup


Capture1.JPG
Capture2.JPG
Capture3.JPG
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour Julien et bienvenue sur le forum
J'ai essayé de vous faire un exemple en image
Le hic, c'est que nous ne pouvons rien faire sur les images à part les colorer ou leur ajouter des annotations rigolotes, en tout cas rien qui résolve votre problème.

Un fichier exemple anonymisé est tellement plus facile pour les formules, macro et autre power query !

Cordialement
 

Julien5635

XLDnaute Nouveau
Bonjour Julien et bienvenue sur le forum

Le hic, c'est que nous ne pouvons rien faire sur les images à part les colorer ou leur ajouter des annotations rigolotes, en tout cas rien qui résolve votre problème.

Un fichier exemple anonymisé est tellement plus facile pour les formules, macro et autre power query !

Cordialement
Bonjour et merci, je n'avais pas vu qu'on pouvait joindre directement des fichiers. Voici en PJ
 

Pièces jointes

  • donnees1.xlsx
    8.6 KB · Affichages: 3
  • donnees2.xlsx
    11.1 KB · Affichages: 4
  • resultats.xlsx
    9.7 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Voici une proposition par power query, qui va chercher les fichiers dans un répertoire.
Avant d'actualiser la requête, vérifiez le nom du répertoire dans la cellule nommée "Dossier" (C1)

Power query est assez souple, alors on peut modifier ce qu'on veut. Par contre il est sensible à la casse : A est différent de a.

Je ne joins que le fichier résultat

Pour préciser, je sors des rapports automatique via un logiciel qui me créer plusieurs fichiers différents avec les noms et des
données à récupérer, pour cette raison qu'il y a plusieurs classeurs et non un seul avec différentes feuilles
Vous avez tout intérêt à connaître et comprendre power query qui pourra grandement vous aider pour ça.
Même si la prise en main n'est pas toujours évidente, il vaut largement l'effort

Cordialement
 

Pièces jointes

  • resultats.xlsx
    21.5 KB · Affichages: 4
Dernière édition:

Julien5635

XLDnaute Nouveau
Merci beaucoup pour votre aide, je vais me pencher sur le sujet Power Query

En essayant votre fichier il me met ce message. J'ai bien mis le bon dossier. J'ai l'impression que Power Query n'est pas dispo sur mon Excel 2013 du boulot... Cela pourrait être du à ça ?
1672244338049.png
 

Pièces jointes

  • 1672244323842.png
    1672244323842.png
    14.9 KB · Affichages: 17

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Eh oui peut-être ! Pour excel 2013 il est disponible comme addin en téléchargement (bas de la page) :
Dans vos prochaines demandes, il faudra spécifier la version pour laquelle vous posez la question.

Cordialement
 

Julien5635

XLDnaute Nouveau
Merci, effectivement en l'installant ça fonctionne, le problème est que l'ordre des personnes peuvent changer aléatoirement selon les journées et les rapports. C'est pour cela que je n'arrive pas à résoudre mon soucis.

Je cherche à ce que dans le tableau "Résultats" il aille chercher le nom sur le rapport, ainsi que la cellule associé pour faire en sorte que même si le nom n'est pas à la même place, il se rapporte dessus. Je ne sais pas si je suis assez clair, pas facile d'expliquer clairement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Voici dans le fichier joint qui lie le tableau bleu nommé ("T_Noms") aux données pour en rapatrier, dans le tableau vert, uniquement les données pour les noms qu'il contient.

Si vous ne connaissez pas les tableaux structurés, je vous encourage à lire ce tuto :
 

Pièces jointes

  • resultats.xlsx
    21 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonsoir Julien5635, Hasco,

Téléchargez les fichiers joints dans le même dossier et voyez cette macro affectée au bouton :
VB:
Sub Consolider()
Dim chemin$, fichier$, P As Range, nlig&, ncol%, tablo, i&, nom As Range, j%, titre As Range, v
chemin = ThisWorkbook.Path & "\" 'dossier de recherche
fichier = Dir(chemin & "*.xlsx") '1er fichier .xlsx du dossier
Set P = [E4].CurrentRegion
nlig = P.Rows.Count
ncol = P.Columns.Count
Application.ScreenUpdating = False
If nlig > 1 And ncol > 1 Then P(2, 2).Resize(nlig - 1, ncol - 1) = "" 'RAZ
tablo = P.Resize(nlig + 1) 'matrice, plus rapide, au moins 2 éléments
While fichier <> ""
    With Workbooks.Open(chemin & fichier).Sheets(1) 'ouvre le fichier
        For i = 2 To nlig
            Set nom = .Cells.Find(tablo(i, 1), , xlValues, xlWhole)
            If Not nom Is Nothing Then
                For j = 2 To ncol
                    Set titre = .Cells.Find(tablo(1, j))
                    If Not titre Is Nothing Then
                        v = .Cells(nom.Row, titre.Column)
                        If IsNumeric(v) Then tablo(i, j) = tablo(i, j) + CDbl(v)
                    End If
                Next j
            End If
        Next i
        .Parent.Close False 'ferme le fichier
    End With
    fichier = Dir 'fichier suivant
Wend
'---restitution---
P = tablo
End Sub
Elle nécessite l'ouverture de tous les fichiers .xlsx.

Ce n'est pas gênant s'il y en a peu.

A+
 

Pièces jointes

  • resultats(1).xlsm
    20.2 KB · Affichages: 2
  • donnees1.xlsx
    8.6 KB · Affichages: 1
  • donnees2.xlsx
    11.3 KB · Affichages: 1
Dernière édition:

Julien5635

XLDnaute Nouveau
Bonsoir Julien5635, Hasco,

Téléchargez les fichiers joints dans le même dossier et voyez cette macro affectée au bouton :
VB:
Sub Consolider()
Dim chemin$, fichier$, P As Range, nlig&, ncol%, tablo, i&, nom As Range, j%, titre As Range, v
chemin = ThisWorkbook.Path & "\" 'dossier de recherche
fichier = Dir(chemin & "*.xlsx") '1er fichier .xlsx du dossier
Set P = [E4].CurrentRegion
nlig = P.Rows.Count
ncol = P.Columns.Count
tablo = P.Resize(nlig + 1) 'matrice, plus rapide, au moins 2 éléments
Application.ScreenUpdating = False
If nlig > 1 And ncol > 1 Then P(2, 2).Resize(nlig - 1, ncol - 1) = "" 'RAZ
While fichier <> ""
    With Workbooks.Open(chemin & fichier).Sheets(1) 'ouvre le fichier
        For i = 2 To nlig
            Set nom = .Cells.Find(tablo(i, 1), , xlValues, xlWhole)
            If Not nom Is Nothing Then
                For j = 2 To ncol
                    Set titre = .Cells.Find(tablo(1, j))
                    If Not titre Is Nothing Then
                        v = .Cells(nom.Row, titre.Column)
                        If IsNumeric(v) Then tablo(i, j) = tablo(i, j) + CDbl(v)
                    End If
                Next j
            End If
        Next i
        .Parent.Close False 'ferme le fichier
    End With
    fichier = Dir 'fichier suivant
Wend
'---restitution---
P = tablo
End Sub
Elle nécessite l'ouverture de tous les fichiers .xlsx.

Ce n'est pas gênant s'il y en a peu.

A+
Merci également ! Pour vous donner une idée de la complexité (pour moi) de mon problème, je vous mets en PJ les fichiers sources anonymisés et le fichier résultats que j'avais fais à la base, avant de me rendre compte que l'ordre et le nombre de personnes pouvait changer avec des personnes en moins dans certains résultats selon les périodes. J'aurais peut-être dû commencer par là ... !

Du coup j'avais commencé à vouloir utilisé la fonction RECHERCHEV afin que Excel recherche le prénom de la personne et y associe la bonne cellule mais sans y arriver
 

Pièces jointes

  • Grepdmax.xlsx
    9.1 KB · Affichages: 5
  • suivi final.xlsx
    26.7 KB · Affichages: 8
  • SuiviCARATIO.xlsx
    10.7 KB · Affichages: 5
  • TPGP.xlsx
    9.5 KB · Affichages: 6
  • TRC.xlsx
    9.8 KB · Affichages: 5

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 438
Membres
103 208
dernier inscrit
Natsu09