XL 2016 Liaison des données issues de plusieurs fichiers

oscarette

XLDnaute Nouveau
Bonsoir à tous,
Par avance pardon si je n'utilise pas les bons termes, je n'ai pas l'habitude.
J'ai 2 fichiers excel dans lesquels j'extrais les données de l'un (activité 1) pour les intégrer dans l'autre (fiche 2).
Les données extraites sont le nom et prénom, l'âge, ainsi que d'autres infos de c e type.
Pas de difficultés de ce coté mais je dois apporter d'autres renseignements supplémentaires liés à chaque individu dans le fichier (fiche2). Or dès que je fais un tri sur les données du fichier (activité 1) par conséquent cela le fait aussi sur "fiche 2" sans pour autant trier les nouvelles informations que j'ai saisie sur ce tableau.
Comment lier les données extraites du tableau "activité 1" au données saisie dans le tableau "fiche"2.
Je vous joint les 2 tableaux pour plus d'explications. Les données extraites des tableau 1 sont en gris dans le tableaux2.
En vous remerciant pour votre aide
Oscarette
 
Dernière modification par un modérateur:
Solution
Re Oscarette,
Le fichier a grossi ! ;)

J'ai détecté deux erreurs :
1- Vous rapatriez une colonne de plus ( 19,11). Donc la première colonne de mise à jour passe de 12 à 13 (DebutZone = 13)
2- Vous passez d'un max colonne de CJ à HU. Evidemment la synchro doit suivre, donc de 88 (CJ) à 229 (HU). (FinZone = 229 )

J'espère que la modif "macro_protegee" a fonctionné.

Dernier point. Comme le fichier devient complexe et que le nombre d'intervenants est multiple. Le nombre d'erreur augmente significativement ( erreur de saisie, effacement intempestif de cellule, erreur de manip ... ).
Il serait bon que vous méttiez en place, si ce n'est déjà fait, une sauvegarde soit journalière, soit hebdomadaire. Je pense que cela vous sauvera...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Oscarette,
Pas simple à comprendre.
Juste une question : Pourqoui dans Fiche navette RP vous commencer votre tri à partir de A8 alors que votre base semble commencer en A4 ?
( ... Key:=Range( "A8:A10083"), SortOn .... )
Dernier point : Etes vous sûr que votre fichier est totalement anonymisé ? J'y vois beaucoup de nom, prénom ...
Si ce n'est pas le cas, empresser vous de le supprimer et de l'anonymiser correctement. Pour moi Nom1 Prénom c'est la même chose que DAVIDAS Ismaël Arthur.
 

oscarette

XLDnaute Nouveau
Bonsoir Sylvanu
Les noms et prénoms étaient très aléatoires car totalement mélangés, tout comme les dates de naissances qui sont fausses mais vous avez raison, autant les remplacer.
Pour le tri, il doit en effet commencer en A4 dans le fichier "Fiche 2". Le tri en 8 correspond à mon fichier d'origine de travail.
Mon problème est que si je tri par ordre alphabétique le fichier "activité 1", les données qui sont liées dans le fichier "fiche 2" le seront également. Et du coup toutes les données saisies dans le fichier "fiche 2" ne correspondront plus aux personnes pour lesquelles les données ont été imputées avant le tri alphabétique. Comment lier les données issues du fichiers "activité 1" aux données saisies (colonnes blanches) dans le fichiers "fiche 2" ?
En vous remerciant
 

Pièces jointes

  • Avtivité 1.xlsm
    51.8 KB · Affichages: 15
  • Fiche 2.xlsm
    44.9 KB · Affichages: 10

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Oscarette,
Ben oui, fatalement. Comme les fichiers sont indépendant, si vous faites dans Fiche2 ='[Avtivité 1.xlsm]Totalité'!C2 cela pointera sur Totalité C2 quelque soit le tri que vous avez effectué sur Activité 1.
Fiche2 est constitué de deux champs: un issu d' Activité évolutif , un en "dur" à droite. Donc dans l'état ça va coincer.
Pour que ça marche il vous faut dans Fiche2 un Invariant, c'est à dire un élément qui ne bougera pas, par ex le N° de dossier service qui sera rapatrié en VBA. De cette façon il sera en dur. Il faut absolument dans Fiche2 une cellule qui ne bouge pas, sur lequel est référencé toute la ligne.
Une fois Fiche2 initialisée, le VBA devra importer les nouveaux dossiers sans toucher aux autres. Un tri dans Fiche2 pourra être fait mais indépendamment de l'autre fichier.
Mais au fait, pourquoi deux fichiers ? Quel est le besoin réel? Quelquefois la solution passe par un changement de stratégie qui peut simplifier les choses.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
ReBonjour Oscarette,
Ci joint une maquette de ce qui serait possible.
Hypothèse : Le numéro de dossier est unique, pas de doublon, et identifie la ligne.
Pour l'instant la mise à jour s'effectue par appui sur le bouton. A modifier suivant vos besoins.
Il vérifie tous les N° de dossiers, si un manque il le rajoute. J'ai mis des Msgbox pour la mise au point.
Ca à l'air de marcher. L'avantage est que Fiche 2 est en dur et devient indépendant de Activité.
Problème : Si un numéro de dossier existe, il saute la ligne.
Mais si dans Activité vous avez modifié une cellule ( erreur sur le nom ou sur la date de naissance ) alors il n'y aura pas de mise à jour.
Ca dépend de votre stratégie, quel fichier est la référence ....
On peut ensuite vérifier toutes les cellules pour voir s'il y a eu des modifications, mais ça dépend uniquement de votre approche.
 

Pièces jointes

  • Fiche 2 ( V2 ).xlsm
    47.4 KB · Affichages: 16

oscarette

XLDnaute Nouveau
Bonsoir Sylvanu
Merci pour les réponses apportées.
il vous faut dans Fiche2 un Invariant, c'est à dire un élément qui ne bougera pas, par ex le N° de dossier service qui sera rapatrié en VBA. De cette façon il sera en dur. Il faut absolument dans Fiche2 une cellule qui ne bouge pas, sur lequel est référencé toute la ligne."
Une fois Fiche2 initialisée, le VBA devra importer les nouveaux dossiers sans toucher aux autres. Un tri dans Fiche2 pourra être fait mais indépendamment de l'autre fichier.
Mais au fait, pourquoi deux fichiers ? Quel est le besoin réel? Quelquefois la solution passe par un changement de stratégie qui peut simplifier les choses.
Les tableaux qui vous sont présentés sont bien plus complexes qu'ils ne le sont dans mon exemples de démonstration mais je n'ai pas de souci sur les autres onglets du tableau "activité 1". Les 2 fichiers distincts sont volontairement fait pour des questions de confidentialité et les utilisateurs ne sont pas les mêmes sur les 2 tableaux.
Etant novice, je ne comprend pas ce que vous m'expliquez lorsque vous parlez de VBA. De plus, le n° de dossier peut éventuellement être identique pour des noms différents. Le seul numéro qui est unique est le numéro de saisie dans les 2 fichiers. . Je cherche à ce que les saisies faites dans les colonnes J à S dans le fichiers "fiche 2" soient rattachées aux colonnes A à I. Et donc en cas de tri (quelconque) sur le fichier "activité 1" c'est l'ensemble de la ligne figurant dans le fichier "fiche 2" qui sera triée
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Le VBA est un langage lié à Microsoft office. our en avoir un aperçu dans Fiche 2 vous faites ALT + F11. C'est ce que vous excecuter quand vous appuyez sur Mise à jour.
Mais là c'est plus complexe. Les deux fichiers étant distinct ils n'ont pas d'information l'un sur l'autre.
Puis je créer dans Fiche2 une colonne supplémentaite que je masquerais ?
Idée au pif pour l'instant : je crée une colonne avec la liste des lignes du bon fichier, puis je réorganise le fichier Fiche2 en fonction de celui ci.
Je changerais le N°Dossier ar N°Saisie.
Par contre le concept du bouton à appuyer ne vous pas de problème ?
 

oscarette

XLDnaute Nouveau
bonsoir
Oui bien sur vous pouvez rajouter une colonne. Attention j'ai besoin de conserver le n0 de dossier et le n0 de saisie qui sont 2 choses différentes..
Je pensais que sur excel il y avait un moyen de lier les saisies de J à S aux saisies de A à I plus facilement.
En tout cas merci pour votre aide
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
J'ai trouvé une astuce je verrais demain si ça marche.
Juste une question : Le fichier de référence où vous saississez les infos dont le N° de saisie ( qui va servir d'invariant ) c'est bien le fichier Activité 1 ?
( désolé je suis un peu perdu ) Si c'est le cas quand on rapatriera les N° de saisie dans Fiche2 seront dans le désordre car dépendant du tri fait dans Activité. C'est bien ça ? :eek:
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Plus je réfléchis plus je suis perdu. Alors j'explique :
1- J'ai deux fichiers Fiche 2 et Activité 1. Activité 1 est le seul fichier où je crée les nom, prénom ... et N° de saisie.
2- Je rajoute des lignes dans activité 1, et je fais différents tris.
3- Lorsque j'ouvre Fiche2 je veux ajouter les nouveaux éléments d' Activité 1 vers Fiche2 sans surtout ne rien toucher aux éléments existants dans Fiche2. Les informations présents dans fiche2 de la colonne A à S ne doivent surtout pas être touchés. Et l'ordre dans Fiche 2 ne doit pas bouger.

C'est ça ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour. Je pense avoir tout compris! :) Essayer ce fichier et dites moi ce qu'il en ai.
C'est amusant comme au départ j'avais compris une mise à jour de liste pour se terminer par une synchro de base de données.

Pour être sûr de ma compréhension, j'explique ce que j'ai appliqué :
1- L'invariant est le N° de saisie. Il ne peut qu'y en avoir qu'un et ne bougera jamais par rapport aux infos de sa ligne.
2- C'est Activité qui est modifié voire trié. Aucune modification de la partie grisée n'est effectuée dans Fiche2.
3- Après mise à jour, Fiche2 est la recopie de Activité 1, auquel on ajoute les infos qui étaient présentes dans l'ancien Fiche2.

Si tout est bon. J'en suis ravi. Encore mille excuses pour ma difficulté de compréhension.
 

Pièces jointes

  • Copie de Fiche 2 ( V4 ).xlsm
    45.9 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
314 630
Messages
2 111 354
Membres
111 113
dernier inscrit
ADA1327