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, les deux nouveaux fichiers .

Suivi activité :
Problème de liens résolu, nettoyage des #REF éffectué.
Nettoyage des modules inutiles
Listes déroulantes effectives même feuille protégée
Problème de mot de passe disparu sur liste déroulantes résolu

Fiche navette. De grosses évol :
Problème de liens résolu
Dans mode d'emploi figure le nom du fichier suivi d'activité. Je l'utilise pour ouvrir le fichier. Donc vous pouvez bouger les cellules mais ne pas les détruire.
Problème listes déroulantes avec mot de passe résolu.
Quand on clique sur Mise à jour, j'ouvre le fichier RP, rapatrie les données puis referme ce fichier RP.
( J'ai supposé que celles qui travaillaient avec Navette n'avait pas l'utilité du fichier RP. A tord ou à raison ? Réponse ? )

Reste un point peut être pour simplifier : Si le mot de passe est toujours le même sur tout le fichier alors je peux le mettre en global, il n'y aura qu'une modif pour tout changer. Si à terme chaque utilisateur a son mot de passe ... alors oubliez cette phrase.

Voilà, à vous de me dire l'état et les modifs à venir.:)
 

Pièces jointes

  • Fiche navette - RP 2019.zip
    414.6 KB · Affichages: 2
  • RP - Suivi Activité 2019.zip
    713.7 KB · Affichages: 2

oscarette

XLDnaute Nouveau
Bonjour Sylvanu
Je ne vous ai en effet pas transmis les bons fichiers en date de jeudi. Je reprends donc vos fichiers et rajoute les macros que j’avais intégrées :
  • J’ai modifié certaines macros pour que les utilisateurs n’aient plus à cliquer sur un bouton de mise à jour dans « suivi d’activité ». Dorénavant, les onglets qui sont après la feuille « totalité » se mettent à jour tout seul dès que l’on clique sur l’onglet.
  • J’ai également mis des messages à l’ouverture de mes 2 fichiers
  • Ainsi que les modes d’emploi
Pour répondre à vos questions :
  • Les utilisateurs qui travaillent avec Navette ont l'utilité du fichier RP mais ne l’utilise pas en même temps. Le travail se fait en 2 temps.
  • Le mot de passe sera toujours le même sur tout le fichier alors je peux le mettre en global, il n'y aura qu'une modif pour tout changer. --> OUI (si il y a une modif, cela viendra de moi et il n’y aura qu’un nouveau mot de passe). Votre proposition parait donc très adaptée.
Je vais regarder tout ce que vous avez fait mais à première vue cela à l’air parfait et je pense finalise le travail.
Si, j’ai vu un petit point à modifier, ce sera l’emplacement du nom du fichier suivi d'activité que vous avez placé dans le mode d’emploi. Je préfèrerais qu’il soit dans les besoins. Ce dernier onglet étant uniquement à mon intention et me sers pour mes paramétrages.
Je vous renverrais les fichiers modifiés avec mes premiers points et l'analyse les vôtres.
Bonne journée
 

oscarette

XLDnaute Nouveau
Je n’imaginais même pas arriver à un tel résultat, c’est plus que parfait !
Toutefois, il reste une épine dans le pied que je n’arrive pas à voir, ni enlever.
Sur les 2 fichiers, dès que j’utilise les boutons de tri, le problème du mot de passe et du filtre automatique reste le même. Après avoir cliqué sur n’importe quel bouton de tri se situant en haut (crée par les macros), le filtre ne fonctionne pas (il n’y a aucune proposition dans le menu déroulant) et si je fais un clic droit sur l’onglet puis « ôter le protection », le mot de passe n’est plus actif.
Au-delà des messages d’accueil et de l’automatisation des macros en cliquant sur les onglets, je n’ai pourtant pas touché aux macros. Il doit y avoir quelque chose que je n’utilise pas comme il faut mais quoi ???
Il faut que j’arrive à comprendre car j’ai encore 5 autres tableaux à créer sur le même modèle, il y a juste des colonnes en plus et les noms qui changent mais j’espère avoir compris où il fallait modifier les macros pour que cela fonctionne. Je me lance dès que celui-ci est totalement fini.
J’ai recopié le nom du fichier d’activité dans l’onglet « besoins » des fiches navette mais je n’ai pas trouvé où indiquer qu’il se trouvait dans ce nouvel onglet
Pouvez-vous me confirmer que les modules suivants peuvent être effacés (si ce n’est pas vous qui les avez créés). De mémoire c’est un début d’essai que j’ai fait mais je ne suis pas allée plus loin.

Bonne journée

Public wbk1 As Workbook
Public wbk2 As Workbook
------------------------------------------------------------------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
Application.displaysalerts = False
wbk2.Close , True 'true pour sauver les modifs sur wbk2 ou false si tu ne veux pas modifier
End Sub
------------------------------------------------------------------------------------------------
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.displaysalerts = False
'ouvrir le classeur fournisseur à l ouverture du classeur Fourmulaire_Dp_Cde
Set wbk1 = ThisWorkbook
Set wbk2 = Application.Workbooks.Open("C:\Users\carrefour o\Bureau\Activité\1 - Suivi d'activité et Fiches navette\RP\RP - Suivi Activité 2019.xlsm")
'ouvre le classeur en lecture seul pour éviter les accidents
wbk1.Activate
'maintenant ton 2 eme classeur est ouvert et donc disponible
End Sub
'pour faire apel a lui dans tout le classeur 1 tu te servira de wbk2
'exemple:wbk2.sheets("Totalité").range(xy)
 

Pièces jointes

  • RP - Suivi Activité 2019.zip
    915 KB · Affichages: 4
  • Fiche navette - RP 2019.zip
    325.9 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Oscarette,Je traiterais le premier point plus tard. ;)
Concernant Sub Workbook_Open(), un peu de pédagogie.
Dans XL, les macros sont de trois types :

1- Les macros "classiques" qui sont appelées par un bouton ou par une autre macro. elles se placent dans un module, comme nous en avons plein ici.
2- Les macros dites événementielles actives sur une feuille. C'est le cas pour déclencher une macro sur la selection de la feuille, changement de valeur d'une cellule, clic sur une cellule ... dans ce cas elle se place dans la feuille, et doit porter un nom spécifique pour que XL sache à quoi s'en tenir.
3-Les macros dites événementielles actives sur le classeur. C'est le cas pour déclencher une macro à l'ouverture du fichier, à sa fermeture, à la sauvegarde. Ces macros doivent obligatoirement être placées dans ThisWorkbook. Cela permet par ex à l'ouverture d'un fichier de présenter à l'utilisateur toujours la même page. A la fermeture de vérifier que tout à été correctement rempli.... ces macros doivent porter aussi un nom spécifique comme Sub Workbook_Close(),vSub Workbook_Save()

A contrario, si une macro Sub Workbook_Open() se trouve dans un module, elle ne sert strictement à rien car elle ne peut être appelée.
Reste à savoir pourquoi elle a été écrite. par ex :
VB:
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.displaysalerts = False
'ouvrir le classeur fournisseur à l ouverture du classeur Fourmulaire_Dp_Cde
Set wbk1 = ThisWorkbook
Set wbk2 = Application.Workbooks.Open("C:\Users\carrefour o\Bureau\Activité\1 - Suivi d'activité et Fiches navette\RP\RP - Suivi Activité 2019.xlsm")
'ouvre le classeur en lecture seul pour éviter les accidents
wbk1.Activate
'maintenant ton 2 eme classeur est ouvert et donc disponible
End Sub
Si ce module était placé dans ThisWorkbook, il servirait à ouvrir le fichier RP à l'ouverture du fichier Navette, puis d'activer le fichier RP.
Je pense que vous pouvez le supprimer. Même chose pour Sub Workbook_BeforeClose.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Premier point concernant les problèmes de listes déroulantes.
Je n'avais jamais testé vos boutons de tri. Je ne me suis focalisé que sur "ma" partie. Ballot, sinon vous auriez eu la réponse depuis longtemps.
... d'autant que vous avez la réponse depuis longtemps !!!
Code:
    Sheets("Totalité").Protect Password:="Compt@94"
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Comprenons ce que fait XL :
Code:
    Vous :  Sheets("Totalité").Protect Password:="Compt@94"
    XL:     Ah !  Je dois protéger la feuille Totalité avec ce mot de passe.
            OK. C'est fait.
    
    Vous :  ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    XL :    Je dois laisser accessible les listes déroulantes.
            Mince, c'est pas possible, la feuille est protégé. Bon, tant pis.
Donc dans tout votre code, comme ça été fait par ailleurs :
Code:
Remplacer :
    Sheets("Totalité").Protect Password:="Compt@94"
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

Par :
    Sheets("Fiche navette RP").Protect "Compt@94", AllowSorting:=True, AllowFiltering:=True
    ( évidemment son équivalent avec le bon nom de feuille )
... je suis taquin ce matin. ;)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Dernier point :
On peut nommer une cellule avec un nom, ça simplifie les choses et ça rend plus lisible équations ou formules.
NommageCellule.jpg

Il vous faut faire cette manip sur la feuille Besoins cellule C1 avec nom NomFichierSuivi.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Dernier dernier point :
J'ai vu qu'à l'ouverture du fichier un message disant qu'il est obligatoire de faire une mise à jour.
Dans ce cas pourquoi ne pas le faire en automatique à l'ouverture du fichier ( voir post sur macros )
Dans ThisWorkbook vous avez:
Code:
Private Sub Workbook_Open()
Dim vMESSAGE, vNOMCLASSEUR, vREPONSE
vNOMCLASSEUR = ActiveWorkbook.Name
vMESSAGE = "Bonjour" & vbCr & "Après la fermeture de ce message, vous devez cliquer sur le bouton Mise à jour obligatoire (en haut du tableau). Merci "
vREPONSE = MsgBox(vMESSAGE, fermeture, "IMPORTANT")
End Sub
Vous mettez :
Code:
Private Sub Workbook_Open()
   MiseAJourFicheNavette
End Sub
A l'ouverture du fichier la synchro sera automatique.
 

oscarette

XLDnaute Nouveau
Bonsoir Sylvanu
Pour les « Fiches navette », tout est OK.
Pour le « Suivi d’activité », tout est OK.
Je pense donc que nous avons terminé pour ces 2 fichiers, à l’exception d’un point.
Vous m’aviez parlé de faire la même procédure que pour le nom des fichiers pour les mots de passe. Je m’exprime très mal mais j’espère que vous me comprenez.
Bonne soirée
 

Pièces jointes

  • RP - Suivi Activité 2019.zip
    822.7 KB · Affichages: 5
  • Fiche navette - RP 2019.zip
    325.4 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Oscarette,

Fichier Navette :
1- Le module Protec n'était jamais activé. Je protège donc toutes les feuilles en sortant de la mise à jour.
2- Un seul emplacement pour le mot de passe : Module A_MotDePasse, changer mdp="xxx"
3- J'ai mis un mot de passe sur le VBA : Idem que les autres. Car lui aussi doit être protégé.
4- J'ai supprimé tous les "ActiveWindow.ScrollRow = " qui ne servent à rien, c'est un résidu de l'enregistreur de macros.

Fichier RP :
1- Idem que navette pour mot de passe, mdp sur VBA et suppression des ActiveWindow.ScrollRow, ça allège le code.
2- Il traine un module SAL1 dans Module2, le supprimer s'il ne sert à rien.
3- Dans Sal1,Sal3,Mesures terminées, Mesures suivies il reste un Worksheet_SelectionChange vide. Si inutiles, les supprimer.

Surtout n'oubliez pas le mdp, vous n'auriez plus accès au VBA.
Voilà. Vérifiez que tout fonctionne. Normalement je n'ai touché à rien de fonctionnel.
Tenez moi au courant si tout est ok.

Bonne journée.
 

Pièces jointes

  • Fiche navette - RP 2019.zip
    405.2 KB · Affichages: 3
  • RP - Suivi Activité 2019.zip
    758.3 KB · Affichages: 2

oscarette

XLDnaute Nouveau
Bonsoir Sylvanu
Tout fonctionne à merveille et c’est parfait.
Comment vous dire MERCI, un mot bien petit par rapport à votre aide. Merci pour votre patience et votre pédagogie.
Je vais donc pouvoir attaquer mes autres tableaux (du même type mais avec plus de colonnes) maintenant que j’ai à peu près compris ce que vous avez fait, vos explications ont été très claires et m’ont permis de comprendre le fonctionnement des macros. Je pense malgré tout que je risque de revenir vers vous (si vous me le permettez) si je coince sur mes autres tableaux.
Même si je trouve cela dommage car le but d’un forum est de partager, mon secteur d’activité est tout de même particulier et j’aimerais pouvoir supprimer les tableaux. Savez vous si cela est possible sans supprimer la totalité des échanges (à la condition que les échanges aient un intérêt sans les fichiers) ?
Bon week-end
Oscarette
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Oscarette,
Si ça coince passez par la messagerie, vous m'aurez directement.
Quant à la fin de votre texte ... ??? J'ai rien compris.
Vous voulez transmettre les fichiers sans les colonnes pour cause de confidentialité ?
Dans ce cas il vous faire un fichier exemple qui soit significatif, et si je trouve une réponse la retranscrire dans votre fichier.
Maintenant que vous maitrisez le VBA, c'est jouable, je pourrais vous guider pour installer les modifs.
Bon courage et bon week end.
 

oscarette

XLDnaute Nouveau
Bonjour Sylvanu
Quand il n’y en a plus, il y en a encore.
J’ai modifié les données pour un autre tableau. Ayant pas mal tâtonné pour voir ce qu’il y avait à modifier, cela à l’air de fonctionner mais je voudrais être sûre que tout est correct concernant le transfert des données de « MJIE - Suivi Activité 2019 » vers « Fiche navette - MJIE 2019 ». J’ai surligné les modifications faites en jaune dans le fichier Word ci-joint.
Et j’ai pensé à un dernier point qui pourrait être important, je souhaiterais mettre le mot de passe sur la macro « Oter » afin que personne ne puisse l’utiliser en l’exécutant directement. J’ai essayé la macro suivante mais il doit y avoir une erreur car cela ne fonctionne pas. Avez-vous la possibilité de la corriger ?

Sub macro_protegee()
Dim reponse As Variant
reponse = Application.InputBox("Entrez le mot de passe pour continuer", "Macro protégée")
Select Case reponse
Case Is = False
Case Is = mdp
Sub Oter()
MsgBox ("Exécution du code!")
Case Else
MsgBox "Le mot de passe est incorrect"
End Select
End Sub

En vous remerciant
Bonne journée
 

Pièces jointes

  • MJIE - Suivi Activité 2019.zip
    739.6 KB · Affichages: 3
  • Fiche navette - MJIE 2019.zip
    746.1 KB · Affichages: 3
  • Modifications faites.docx
    16.1 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bien le Bonjour Oscarette,
Pour le dernier point : Sub Oter() signifie la déclararion d'une nouvelle macro.
Pour l'éxecution d'une macro, c'est soit Call Oter, soit Oter tout court.
VB:
Sub macro_protegee()
Dim reponse As Variant
reponse = Application.InputBox("Entrez le mot de passe pour continuer", "Macro protégée")
  Select Case reponse
    Case Is = False
    Case Is = mdp
        Oter
        MsgBox ("Exécution du code!")
    Case Else
        MsgBox "Le mot de passe est incorrect"
    End Select
End Sub
La suite un peu plus tard.
 

Discussions similaires

Statistiques des forums

Discussions
314 630
Messages
2 111 359
Membres
111 114
dernier inscrit
ADA1327