Import table de données vers autre fichier : Decalage de ligne avec données clients

Hizaack

XLDnaute Nouveau
Bonjour à tous,

Ce long poste pour vous décrire en détail mon problème. J'espere que ca pourra servir à d'autres.



Je sollicite votre aide car j'ai un soucis qui commence à me contrarier vraiment. Cela va faire une semaine que je cherche une solution, mais ça dépasse mes connaissances. Ce problème m'empêche de continuer le développement des différents fichiers client. Je vous explique :​



Contexte :


J'ai un secrétariat (la source ou serveur, fichier sur lecteur réseaux) qui tiens à jour une liste de personnel et d'informations par personne. Une base de donnée simplifiée donc. J'ai des chefs de services (clients donc) qui ont besoin de certaines informations pour différentes chose : projets, notes, test de connaissances sur les personnes, n° de permis interne, etc. Chaque fichier client sera différent (les données client) et tous n'ont pas besoin de voir toutes les infos du personnel (ex: situation personnelle, enfants) mais tout le monde importe les même informations de base (nom, prénom, date de naissance, etc). Voilà pour le contexte.



Mon problème :


J'ai bien réussi à importer une partie de la base de donnée chez le client. Le soucis intervient quand il y a ajout/suppression d'une personne (donc d'une ligne) dans le fichier source. La suppression est bien prise en compte chez le client, mais les données client elle, ne sont pas affectées. C'est à dire qu'il existe, suite à modification, un décalage entre les personnes et les données correspondantes. Toute les données sont alors fausse, et le fichier est inutilisable!​



Solutions?


Est ce que vous savez résoudre ce problème? Une macro qui insère une ligne dans les données client quand modification? Liens données sources/client?​



J'ai joins un fichier d'exemple source et client pour que vous visualisiez le problème quand il y a ajout/suppression de personnel. Ici j'ai rajouté la personne aaaaXXXX, et on voit bien que les données dans le fichier client ne correspondent plus. (Les deux fichiers sont à mettre dans D:\).



Merci de votre attention et d'avoir lu ce long poste.


Tout avis ou idée est la bienvenue,
Merci d'avance,

Bien cordialement,
 

Pièces jointes

  • Client.xlsx
    12.8 KB · Affichages: 69
  • Source.xlsx
    9.2 KB · Affichages: 66
  • Client.xlsx
    12.8 KB · Affichages: 75
  • Source.xlsx
    9.2 KB · Affichages: 60
  • Client.xlsx
    12.8 KB · Affichages: 73
  • Source.xlsx
    9.2 KB · Affichages: 59

GIBI

XLDnaute Impliqué
Re : Import table de données vers autre fichier : Decalage de ligne avec données clie

Bonjour,

j'avoue ne pas comprendre le problème.

En effet si je modifie, supprime, ajoute des info dans source.xls, je retrouve bien les information dans client.xls : aprés enregistrement du classeur source.xls et Actualisation dans Client.xls
la colonne N° Permis n'est gérée par la requête qui ramène le fichier Client ==> le N° se décale

Il faudrait avoir une table "Source imat" avec nom+N° permis et fusionner les informations
 

Hizaack

XLDnaute Nouveau
Re : Import table de données vers autre fichier : Decalage de ligne avec données clie

Bonjour GIBI,


Je suis bien d'accord que les informations sont transmises correctement de source vers client. Comme vous le précisez, c'est que les N°Permis ne sont liés à la requête. Effectivement le numéro de permis se décale lors de ajout/suppression de ligne dans source, et du coup les informations ne sont plus en face de la bonne personne.​



Est ce que vous pouvez préciser votre idées concernant la fusion des informations? Avec un exemple peut être ?​



Merci de votre aide,


Bien cordialement,
 

GIBI

XLDnaute Impliqué
Re : Import table de données vers autre fichier : Decalage de ligne avec données clie

Bonjour,



Comme je ne connais pas les contraintes (ex. chaque service gère-t-il toutes les ressources?...) , je vous ai fait un exemple avec :

un onglet "liste_personnel" qui donne l'exhaustivité des ressources avec une colonne "contrôle"
Un onglet Client qui liste uniquement les ressources du service (nom en dure car c'est l'identifiant + données issue de la "liste_personnel" via recherchev + données spécifiques)

Une autre solution serait d'actualiser le tableau via du code VBA
 

Pièces jointes

  • Client.xlsx
    16 KB · Affichages: 65
  • Client.xlsx
    16 KB · Affichages: 67
  • Client.xlsx
    16 KB · Affichages: 67

Hizaack

XLDnaute Nouveau
Re : Import table de données vers autre fichier : Decalage de ligne avec données clie

Bonjour GIBI,


Je vous ferai un retour lundi pour le fichier que vous avez envoyé.



Est ce que un code VBA lancé à chaque ouverture du fichier serait-il plus fiable? Cela éviterais aux personnes ne connaissant peu Excel de bidouiller les formules par inattention. Mais je risque de manquer de temps pou mettre ne place cela.


Merci pour tout,


Bien cordialement,
 

Hizaack

XLDnaute Nouveau
Re : Import table de données vers autre fichier : Decalage de ligne avec données clie

Bonjour GIBI,


Le fichier ne correspond pas tout à fait au fonctionnement souhaité. En effet, les noms en dur (onglet client) ne s'actualisent pas lors de l'ajout ou la suppression d'une personne (d'une ligne).


Dans le fichier que j'ai repris, j'ai mis une colonne qui permet le contrôle de la présence d'une personne ou non (inspiré de votre exemple). Je recopie les données source importées sur le fichier client (onglet Liste_Personnel Importée) puis les recopies dans l'onglet "Liste_Personnel+Données client" en ajoutant les données propres au client (N° Permis).


Le soucis est que mon tableau n'est pas dynamique. Et il y a toujours un décalage entre les données client et le personnel (le permis "a6" n'est plus en face du nom "Nom6", etc).


Je pense qu'il serait bien de combiner votre solution et une macro VBA que lance à chaque lancement du fichier. Cette VBA lirais la colonne "Présence", et si la personne n'est pas présente, insere une ligne à l'emplacement approprié dans l'onglet "Liste_Personnel+Données client", avant de recopier les données.​


Je ne connais pas du tout le VBA, mais je vais commencer la macro.


Que pensez-vous de cette solution?


Merci d'avance,

Bien cordialement,
 

Pièces jointes

  • Source_v2.xlsx
    9.1 KB · Affichages: 56
  • Client_v2.xlsx
    15 KB · Affichages: 60

Hizaack

XLDnaute Nouveau
Re : Import table de données vers autre fichier : Decalage de ligne avec données clie

Re (bonjour le monologue ^^),


J'ai fais une petite macro qui réalise spécifiquement ce que je veux. Elle permet de comparer les personnes présentes dans deux listes, et d'ajouter une ligne ainsi que les données correspondantes à la personne manquante dans le liste client.


Il manque encore la gérance de la suppression d'une personne.


Si quelqu'un pouvait lire et contrôler l'exactitude de mon code, car je n'ai jamais fais de VBA, se serait très aimable.

Code:
Sub MAJ()

    'Comptage du nombre de cellule non vide (donc du nombre de personne actuelle)
    Dim nbpersonnes As Integer
    nbpersonnes = WorksheetFunction.CountA(Columns(1)) - 1
    MsgBox nbpersonnes & " Personnes comptées"
    
    'Parcours de la liste de personne afin de connaitre les personnes ajoutées ou supprimmer par rapport à la liste client actuelle.
    Dim i As Integer
    For i = 2 To nbpersonnes
    
        'Sélection de la feuille où se trouve la colonne de présence
        Sheets("Liste_Personnel_Importee").Select
    
        'Parcours de la liste de présence
        If Range("E" & i) = False Then
                   
            'Trouve les personne ajoutées et insère une ligne au meme endroit sur al feuille client
            Sheets("Liste_Personnel_Importee").Select
            Range("D" & i).Select
            Selection.Copy
            MsgBox "La personne suivante à été ajoutée : " & Range("A" & i), vbOKOnly, "Ajout"
            
            Range("F" & i).Select
            ActiveSheet.Paste
            
            Sheets("Liste_Personnel+Données client").Select
            Rows(i).Insert
            'Rows(i & ":" & i).Select
            'Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            
            'Copie/colle le nom et les infos du nouveau personnel
            Sheets("Liste_Personnel_Importee").Select
            ActiveSheet.Range("A" & i & ":" & "D" & i).Copy
            Sheets("Liste_Personnel+Données client").Range("A" & i & ":" & "D" & i).PasteSpecial Paste:=xlPasteValues
               
        End If
        
    Next i

End Sub


J'ai copié collé le code car il y a des restrictions de mon coté sur l'envoie d'un .xlsm.

Bien cordialement,
 

Hizaack

XLDnaute Nouveau
Re : Import table de données vers autre fichier : Decalage de ligne avec données clie

Bonjour GIBI,


Je continue de perfectionner mon fichier, et pour cela je suis passé au VBA. Afin de trouver les personnes différentes dans les deux listes, et notamment les personnes à ajouter et supprimer, je dois copier (et ajuster) la formule (recherchev + données spécifiques) dans la feuille "Liste_Personnel+Données client".


J'aimerais traiter la formule que vous m'avez donné en VBA. Serait-il possible d'avoir un coup de pouce pour transformer votre formule recherchev + données spécifiques en code VBA?


Merci d'avance,

Bien cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 948
Membres
101 850
dernier inscrit
Danigra