[excel] Fonction recherche + copier/collé en VBA

vince13100

XLDnaute Nouveau
Bonjour,
Je me présente Vincent, nouvel inscrit et débutant en VBA.

Je viens vers vous car j'ai un problème avec le mon fichier Excel depuis 2 jours et après de multiples recherches et tentatives je me résous à vous soumettre mon problème.

Voila ma boite m'a demandé de créer un fichier avec l'ensemble des personnes ainsi que diverses informations.
Le fichier se présente ainsi :

Dans l'onglet "Administration" chaque ligne dispose du nom de la personne et dans les colonnes les infos du genre leur date de revue, les accès aux bâtiment etc. On précise que les données présente dans cette fiche sont en fait "linker" à certaines données présentes dans l'onglet "résumé"

Dans l'onglet "Manipulation" je place mes boutons pour lancer ma macro.

Dans l'onglet "fiche" j'ai créé une page format A4 avec des données vides et ces données sont contenus dans l'onglet administration.

Le but de la macro est le suivant :
-Saisi du nom d'une personne (sachant que le nom est toujours dans la colonne 1)
-on récupère du coup le numéro de la ligne. et ensuite on viens copier les infos de chaque colonne de l'onglet administration et on les colle dans l'onglet fiche à l'emplacement qui corresponds.

Le seul truc positif c'est que les nom des consultants sont à la même ligne entre l'onglet résumé et l'onglet administration. Le problème c'est que comme les noms présents dans "administration" sont "linker" ça pose des problèmes de recherches.

C'est un peu difficile à expliquer alors je vous met en liens ce que j'ai déjà fait au niveau du code et de la structure du fichier. j'ai mis également vers quoi les infos doivent pointer dans la feuille "fiche"

Si une âme charitable comprends le charabia que je viens de pondre et peut m'aider ça me serai de grand secours merci à vous.

Je reste à votre disposition si ce n'est pas clair
 

Pièces jointes

  • General_Fichier_suivi_help.xlsm
    53.2 KB · Affichages: 73
Dernière édition:
G

Guest

Guest
Re : [excel] Fonction recherche + copier/collé en VBA

Bonjour,

J'ai ouvert ton fichier et regardé. Plusieurs questions me viennent à l'esprit:
Dans la feuille résumé tu as une colonne Matricule de quel matricule s'agit-il? D'un consultant? Si oui pourquoi ne pas utiliser ce matricule comme identifiant unique dans toute les feuilles et/ou tableaux pour faire les recherches idoines.
S'il ne s'agit pas d'un matricule de consultant, alors il serait nettement judicieux de créer un identifiant unique par consultant, peut-être à partir du Nom et prénom ou si homonyme possible, un identifiant numérique.
En gardant dans un tableau ces noms et prénoms en dur (pas par formule) avec leur idendifiant unique les choses serait plus simples à gérer. Et ta fiche pourrait s'établir par formule.

A te relire
A+
 

vince13100

XLDnaute Nouveau
Re : [excel] Fonction recherche + copier/collé en VBA

Bonjour,
Et bien la colonne matricule est un identifiant mais cet identifiant n'est pas disponible pour tous les noms de la liste. Certains n'en n'ont pas ou du moins, pas immédiatement. En fait il s'agit d'un document qui est complété au fur et à mesure à l'arrivé d'une nouvelle personne dans l'entreprise.
Par contre je peux toujours créer une colonne supplémentaire en A avec un identifiant unique du style 0001, 002, etc. Mais le problème c'est qu'il faut absolument que toutes les feuilles fassent référence à la feuille résumé qui est la base du fichier (la seule où les noms sont écris en dur).
Du coup même en créant l'identifiant, dans le cas où les noms ne sont pas affichés dans le même ordre sur les feuilles je ne suis pas sur que ça aide beaucoup.
 
G

Guest

Guest
Re : [excel] Fonction recherche + copier/collé en VBA

Bonjour,

Dans le fichier joint un essai avec un identifiant qui permet d'établir la fiche. Voir dans administration comment écrire la formule pour que les lignes correspondantes du tableau 'résumé' soient toujours retrouvées même dans le désordre.

De façon générale il est préférable de laisser excel faire ce qu'il sait très bien faire, avant de chercher à palier les manques par VBA. (Et c'est un VBAiste qui le dit:)) Quite à réorganiser quelque peu ses données. VBA pourra intervenir dans un deuxième temps.

A+

[Edition] pour l'identifiant je suis allé au plus simple nom+ " " + prénom mais on peut imaginer plus complexe: nomprénomAAMMXX
où AAMM = année et mois d'embauche & "XX" index incrémenté, établit sur le nombre d'embauches pour le mois concerné
 
Dernière modification par un modérateur:

vince13100

XLDnaute Nouveau
Re : [excel] Fonction recherche + copier/collé en VBA

Ah mais c'est super ton truc ! Je connaissais pas ça va me simplifier la vie :D
Merci en tout cas je vais essayer de comprendre tes formules et d'adapter mon fichier. Si jamais j'ai besoin je reposterai ici (en espèrant que ce ne soit pas le cas.
Merci beaucoup en tout cas
 
G

Guest

Guest
Re : [excel] Fonction recherche + copier/collé en VBA

Re,

Tu auras remarqué que j'avais créé les identifiants dans la feuille résumé, mais peut-être serait-ce plus judicieux de les créer dans la feuille 'administration' si c'est dans celle-ci que tu crées les consultants. Ce sont toujours des ambigüités d'interprétation des demandes qu'il est bon de lever dès le départ si possible.

A+
 

vince13100

XLDnaute Nouveau
Re : [excel] Fonction recherche + copier/collé en VBA

Re,
Non c'est bien dans résumé que je créé les consultants donc c'est bien le bon endroit. J'ai cependant deux petites questions de plus à te soumettre.
J'ai utilisé tes modif mais maintenant, à coté de la fiche j'aimerai ajouter des champs de commentaires.

Ces champs commentaires doivent être liés à une personne et donc changer en fonction de la personne sélectionnée.
J'ai bien pensé à écrire ces commentaires dans une autre feuille et d'y faire appel comme pour ce que tu as fait avant, mais j'aimerai que ces commentaires puisse être saisie directement depuis cette feuille par soucis de lisibilité. Je joins un screenshoot de ce que j'aimerai faire.
impr.jpg

L'autre question que je me pose est au niveau des filtres.
Quand je filtre par exemple par le nom dans la feuille résumé, ça me fout le bronx dans la feuille administration. Est-il possible de corriger cela en filtrant simultanément les feuilles ?
Ou de trouver une finte pour que les champs correspondent à tous les coup, car notamment au niveau des champs texte de mon tableau administration ça ne va plus.

Merci d'avance une nouvelle fois ;)
 
G

Guest

Guest
Re : [excel] Fonction recherche + copier/collé en VBA

Bonjour,

pour ce qui est des commentaires, soit plus explicite, qu'est-ce qui t'empêche de les écrires dans la feuille?

Pour les filtres, c'est parce que tu emploies ce genre de formule pour retrouver tes petits:

SI(résumé[@[date d''embauche]]=0;"";résumé[@[date d''embauche]]) . Dans ce genre de formule, @ représente la ligne en cours (qui contient la formule) du tableau en cours, qui n'a pas forcément le même rang (ou index) que dans les autres feuilles lorsque les données sont filtrées et ou triées.

Je t'ai donné en feuille 'fiche' plusieurs moyens d'écrire des formules pour retrouvés les données avec ton identifiant unique par index et equiv. A toi de généraliser tes formules dans toutes les feuilles faisant références à l'identifiant unique.

Par exemple en C4 de fiche: =EQUIV($A$5;résumé[identifiant];0) donne le rang (index) de l'identifiant contenu dans A5

A+
 

vince13100

XLDnaute Nouveau
Re : [excel] Fonction recherche + copier/collé en VBA

Re,
Pour les commentaires le problème viens du faire que si j'écris un commentaire pour le consultant A, quand je sélectionne le consultant B, le commentaire reste le même. Or je voudrai que le commentaire change et soit mémorisé en fonction du consultant que je sélectionne.
Dans l'optique que si demain je rentre un commentaire pour A et pour B, quand je ré-ouvre mon fichier dans 3 mois je puisse toujours avoir accès aux commentaires que j'avais saisis il y a 3 mois pour ces consultants.
C'est plus clair ? Sinon je mettrai en lien un fichier exemple.

Pour les filtre je vais modifier mes formules et voir si ça passe mieux.
Merci à toi.
 
G

Guest

Guest
Re : [excel] Fonction recherche + copier/collé en VBA

Re,

Alors si c'est cela, la meilleur solution est celle dont tu parlais dans ton post #1 à savoir créer une feuille avec les commentaires associés à l'identifiant.

A+
 

vince13100

XLDnaute Nouveau
Re : [excel] Fonction recherche + copier/collé en VBA

Re,
Arf donc pas moyen de faire une saisie directement depuis ce tableau. Je m'arrangerais donc autrement.
Par contre pour le trie, j'ai remarqué que même si mes formules sont du style (résumé[@[date d''embauche]]), quand je fais un trie par exemple sur le nom dans la feuille résumé, ça vient me trier de la même manière le tableau administration ce qui est plutôt bien jusqu'ici. De même les cellule calculés de point suivent bien le tri.

Les cellules avec ces champs sont les seule à ne pas bouger lors du tri.

J'ai également remarqué qu'il ne faut pas essayer de trier via le tableau administration sinon ça marche pas mais ça n'est pas grave du moment que je peux trier par la feuille résumé.

Voila j'espere que mon problème est assez clair.

Merci (encore et encore) une fois

En fait le problème vient des champs texte OUI/NON:N/C qui sont après. Je ne comprends pas pourquoi ces champs ne suivent pas le reste du tableau. Y a t-il un moyen de leur dire en gros "tu dois suivre le déplacement de cette cellule ou cette ligne ?"
 
G

Guest

Guest
Re : [excel] Fonction recherche + copier/collé en VBA

Bonjour,

Tu as des données Fixes tapées en dur et des données volatiles issues de formules dans les mêmes tableaux, quand la source des formules changent c'est normal que les données volatiles changent que les données en dur ne changent pas.

Je te disais plus haut que Résumé[@identifiant] faisait toujours référence à la ligne courante.
Sur la première ligne du tableau administration =Résumé[@identifiant] renvoie l'identifiant de la première ligne de 'résumé'
Sur la deuxième ligne du tableau administaration elle renvera à la deuxième lignes de 'Résumé, idem pour les lignes suivantes.

Par contre la colonne I de 'Administration' qui contient "OUI" en dur ne fait référence qu'à elle même et n'est "raccordé" à aucun indentifiant quelconque.
I2 de administation sera toujours égale à I2 de administration et pas à autre choses.
A2 sera toujours égale à la première ligne de tableau 'Résumé'.

D'où l'incohérence des données.

Si tu veux que le OUI de I2 corresponde toujours à l'identifiant de A2 il faut que ce dernier soit FIXE, à la limite, choisit sur liste de validation, mais pas plus volatile que cela.

Face à cela tu as deux solutions: soit concevoir une belle usine à gaz en VBA qui deviendra vite ingérable, soit penser en terme de 'Données volatiles' et donnée fixes et organiser tes tableaux en conséquence, séparer les unes des autres.

Peut-être que tu perdras l'avantage apparent de ta formule =Résumé[@identifiant] mais tu gagneras en cohérence des données et en sécurité.

A+
 
Dernière modification par un modérateur:

Discussions similaires

Statistiques des forums

Discussions
312 088
Messages
2 085 202
Membres
102 817
dernier inscrit
Nini668