Macro pour récupérer les infos d'une personne

Fermé
djnitro95 Messages postés 24 Date d'inscription mercredi 18 novembre 2009 Statut Membre Dernière intervention 10 février 2016 - 20 août 2014 à 10:09
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 27 août 2014 à 09:45
Bonjour,

Je recherche depuis un moment mais sans résultat un moyen de récupérer automatiquement les infos à partir d'un fichier csv source, je vous explique mon besoin:

J'ai un fichier csv (fichier A) par jour contenant le nom de plusieurs personnes sur chaque ligne, dans chaque colonne de ce fichier il y'a les resultats de ces personnes.

J'ai ensuite un fichier xlsx (fichier b) regroupant l'ensemble de ces personnes par ligne et chaque colonne correspond à un jour.

Le but de la macro serait de récupérer les infos d'une cellule en prenant compte du nom de la personne (le nombre de personnes présentes est aléatoire et donc le nombre de lignes aussi) et de venir récupérer son résultat automatiquement.

Quelqu'un aurait il la formule magique svp ?

A voir également:

17 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
20 août 2014 à 10:13
Bonjour,

Si tu pouvais nous mettre un exemple de structure des données, sans éléments personnels, avec les résultats souhaités expliqués clairement, se serait plus facile de t'aider.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ et tu mets ici le lien obtenu.
0
djnitro95 Messages postés 24 Date d'inscription mercredi 18 novembre 2009 Statut Membre Dernière intervention 10 février 2016
Modifié par djnitro95 le 20/08/2014 à 11:11
j'ai mis le fichier source et le fichier b.

https://www.cjoint.com/?0Huk5ULAnum

Il faut savoir que dans l'exemple le fichier source et le fichier contiennent tous les deux le même nombre de personnes alors que la plupart du temps je n'aurais pas tous le monde de présent dans le fichier source.

J'ai oublier de dire que les infos à récupérer dans le fichiers source d'exemple sont de E8 à E13 et de D19 à D24
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
20 août 2014 à 12:14
Bonjour,

Ton fichier source n'est pas un fichier csv comme dans la demande et le traite ment ne sera pas le même : que doit-on prendre en compte ?
D'autre part tes plages paraissent erronées : E8 à E13 est vide et D19 à D24 représente une moyenne !
0
djnitro95 Messages postés 24 Date d'inscription mercredi 18 novembre 2009 Statut Membre Dernière intervention 10 février 2016
20 août 2014 à 14:04
Je l'ai enregistrer au format xls et je pense qu'il restera sous ce format au final.

Concernant les plages E8 à E13 contient des données, des 0 mais j'en ai besoin aussi :).

Pour D19 à à D24 oui c'est une moyenne en secondes, mais j'ai juste besoin de récupérer la valeur brute.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
20 août 2014 à 22:50
Bonjour,

Je l'ai enregistrer au format xls : en fait c'est .xlsx et j'ai pris en compte ce format.

Voici ton classeur en xlsm en raison des macros :

https://www.cjoint.com/?DHuwUfbymiV

Le bouton bleu permet de choisir le classeur à intégrer.
Attention, ton classeur est fait pour juillet et tu veux insérer un fichier d'août, cela ne fonctionnera pas car la date n'est pas correcte.
0
djnitro95 Messages postés 24 Date d'inscription mercredi 18 novembre 2009 Statut Membre Dernière intervention 10 février 2016
21 août 2014 à 08:32
Bonjour GB,

Merci beaucoup c'est super top, cependant j'ai une erreur lorsque je met les noms officiels: erreur d'exécution 9, l'indice n'appartient pas à la sélection.

J'ai d'autres questions concernant la macro, si je souhaite importer de nouvelles données se trouvant soit dans le fichier source existant soit dans un second fichier source de même date mais avec des données différentes, est ce possible ?

Je t'avoue que mon fichier final est beaucoup plus lourd que ca et pensais pouvoir continuer seul grâce aux premières bases, mais la en relisant ta macro j'ai du mal à m'y retrouver.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
21 août 2014 à 08:42
Bonjour,

j'ai une erreur lorsque je met les noms officiels ce n'est pas les changements de noms qui provoquent cela mais probablement les onglets, il faudrait que tu fournisses la ligne impactée.

dans un second fichier source de même date mais avec des données différentes : pas de problème mais si tu as le même nom avec des données différentes la seconde sera mise sinon il faut cumuler.

j'ai du mal à m'y retrouver. : chacun a sa logique et ce n'est pas toujours facile de se fondre dans celle des autres même si j'ai essayé de te faire une procédure basique.
0
djnitro95 Messages postés 24 Date d'inscription mercredi 18 novembre 2009 Statut Membre Dernière intervention 10 février 2016
21 août 2014 à 09:14
ce n'est pas les changements de noms qui provoquent cela mais probablement les onglets, il faudrait que tu fournisses la ligne impactée.
Je ne connais pas le numéro de la ligne, il ne me donne pas l'info.

pas de problème mais si tu as le même nom avec des données différentes la seconde sera mise sinon il faut cumuler.
Je pense que je vais nommer les fichiers comme ceci : 2014-07-01_appels.xlsx et 2014-07-01_mails.xlsx
0
djnitro95 Messages postés 24 Date d'inscription mercredi 18 novembre 2009 Statut Membre Dernière intervention 10 février 2016
21 août 2014 à 09:37
oups, dans le deboquage c'est ça qui est surligné: If Cells(lig, 1).Value = tbn(niv) Then
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
21 août 2014 à 10:19
Bonjour,

je vais nommer les fichiers comme ceci
Dans ce cas il faut changer le code dans cette ligne :

    dat = DateValue(Mid(fic, InStrRev(fic, "") + 1, InStrRev(fic, "_") - InStrRev(fic, "") - 1))

dans le deboquage c'est ça qui est surligné

C'est que tu as plus de 2 tableaux dans ton fichier à intégrer.
0
djnitro95 Messages postés 24 Date d'inscription mercredi 18 novembre 2009 Statut Membre Dernière intervention 10 février 2016
21 août 2014 à 10:47
C'est que tu as plus de 2 tableaux dans ton fichier à intégrer.

C'est exact, j'en ai 4, j'avais alléger pour te faciliter la tache car les 2 suivants ne sont pas utiles.

Dans ce cas il faut changer le code dans cette ligne :

dat = DateValue(Mid(fic, InStrRev(fic, "") + 1, InStrRev(fic, "_") - InStrRev(fic, "") - 1))


Il suffit de remplacer la ligne et c'est tout, je rajoute ensuite un nouveau tableau pour réceptionner les données ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
21 août 2014 à 21:53
Bonjour,

Voici la macro modifiée pour supporter + de 2 tableaux dans le fichier à intégrer et la nouvelle syntaxe de tes noms :

https://www.cjoint.com/?DHvvYFr9YSB
0
djnitro95 Messages postés 24 Date d'inscription mercredi 18 novembre 2009 Statut Membre Dernière intervention 10 février 2016
22 août 2014 à 09:16
Bonjour,

C'est super, merci beaucoup ça fonctionne à merveille.

Peux tu stp m'expliquer comment faire si je souhaite ajouter un tableau dans le fichier b et donc venir chercher des infos dans le fichier source.
Cela doit se passer ici :
tbc = Array(0, 3, 4, 0, 0, 0, 0)
tbn = Array(0, "Entrant", "Sortant", 0, 0, 0, 0)
J'ai compris que tbc était les colonnes ou aller chercher les infos mais pas compris la distinction entre les tableaux 1,2,3 ou 4.

Concernant le fait d'avoir un second fichier source comment dire à la macro ou aller chercher les infos (cela ressemble à la première question)

Tu ne m'a pas dit sil il était possible de faire un import multiple avec l'ensemble des xls d'un dossier, est ce possible selon toi?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
22 août 2014 à 22:03
Bonjour,

faire un import multiple avec l'ensemble des xls
ajouter un tableau dans le fichier b

C'est possible et je t'ai rajouté dans la macro les 2 fonctions.
- C'est le répertoire qui est choisi et non le fichier : tous les classeurs qui comportent une date "aaaa-mm-jj" sont pris en compte.

- Le tableau est identifié dans 'tbn' par son libellé en colonne A et la colonne récupérée par 'tbc' comme tu avais vu.

https://www.cjoint.com/?DHwv0RqyfYb

Bon test
0
djnitro95 Messages postés 24 Date d'inscription mercredi 18 novembre 2009 Statut Membre Dernière intervention 10 février 2016
25 août 2014 à 09:19
Bonjour,

Merci beaucoup c'est top.

Le traitement du premier fichier (appels.xlsx) fonctionne à merveille.

Je n'arrive cependant pas à intégrer les datas du deuxième fichier (mails.xlsx)

peux tu stp me dire à quel moment dans la macro tu passe au deuxième fichier ?

voici l'état de la macro après mes modifs:
Fichier appels.xlsx = 4 tableaux et je viens chercher des datas uniquement dans les 3 premiers.
Fichiers mails.xlsx = 4 tableaux et je voudrais récupérer des datas dans les tableaux 1 et 2.

est ce que ce que je fait ci-dessous devrait marcher car ca ne donne rien, pas d'erreur mais pas de dats non plus.

   tbc = Array(0, 3, 4, 2, 0, 0, 2)
tbn = Array(0, "Entrant", "Moy. comm.", "Sortant", 0, 0, "Mails traités")
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
25 août 2014 à 21:36
Bonsoir,

ce serait bien que tu donnes un exemple de tes 2 fichiers pour pouvoir adapter.
0
djnitro95 Messages postés 24 Date d'inscription mercredi 18 novembre 2009 Statut Membre Dernière intervention 10 février 2016
26 août 2014 à 11:33
Bonjour,

Voici un zip, j'ai mis des codes couleurs pour mieux se repérer par rapport à ce que je souhaite récupérer.

https://www.cjoint.com/c/DHAlGYeLo3Q
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
27 août 2014 à 09:45
Bonjour,

Merci pour tes classeurs exemple bien conçus.
Sur le classeur de regroupement, j'ai mis les mêmes noms de tableaux (colonne A) que dans tes classeurs détails : c'est ainsi que l'on se repère et les noms doivent être identiques à ceux de 'tbn'.
Tu as changé la casse d'un nom (E) et donc je prend n'importe quelle casse sur les noms comme dans une recherche excel.
Tous les classeurs du répertoire choisi sont intégrés quel que soit leur type appels ou mails, sur les tableaux définis et tu peux définir d'autres tableaux en rajoutant des éléments dans les paramètres 'tbc' et 'tbn' concordants.

Ton classeur "b" : https://www.cjoint.com/?DHBjRkqdoP8

Bons tests.
0