Bilan / transfert entre 2 fichiers - rechv ou matricielle ?

Bonjour à tous,

J'ai fouillé le forum et d'autre et je n'arrive toujours pas à trouver la solution.

Je voudrais récupérer une base de données dans un fichier avec VBA (BD VBA BILAN IMPUT) vers un autre fichier récapitulant les informations (BILAN IMPUTATION).

Ce fichier (BILAN IMPUTATION) et composé de nombreuse feuil. Une feuille correspond à un NOM par techniciens.

Je n'arrive pas à :

Par exemple dans la feuil "DEBUISSER", je voudrais que toutes les informations de la BD VBA soient consultables et triées par nom et par mois et même peut-être par semaine dans le 2nd fichier et cela sur des cellules que je peux choisir. A savoir, il y a plusieurs fois le même nom, le même mois mais pas les semaine.

J'arrive avec une recherche V à faire la 1ère ligne mais pas les suivantes :

=RECHERCHEV(A1;'[BD VBA BILAN IMPUT.xlsm]fBD'!$A$3:$AL$671;2;FAUX)

De plus, est-ce que c'est obligé que le chemin reseau s'affiche dans la formule ?

=RECHERCHEV(A1;'C:\Users\Marie Julie\Documents\PROJET VBA\[BD VBA BILAN IMPUT.xlsm]fBD'!$A$3:$AL$671;4;FAUX)

Après en parcourant les forum, on parle de formule matricielle mais je ne comprends pas vraiment comment faire après plusieurs essais ...

Quelqu'un pourrait me dire quelle solution serait la plus appropriée ?

Je vous remercie et je vous souhaite une bonne journée.

Mjulie.


Et voici l'autre fichier.

Merci et bonne journée

Mjulie.

Bonsoir à tous,

Personne ne peut m'aider ?

Merci

Mjulie

Bonsoir,

Début de solution en VBA, finalement laissé en stand by

Si ça peut servir d'aide ...

Bonne soirée

Bouben

Bonjour,

Merci pour votre réponse.

Je suis débutante en VBA. J'ai des petites bases mais je suis loin d'être confirmée ... Mais je peux au moins confirmer que le code ressemble à ce dont j'ai besoin !

Savez-vous pourquoi ce sujet a été mis en stand by et à quel niveau du code ?

Je vous remercie et je vous souhaite une bonne soirée.

Mjulie.

Bonsoir,

Commencé samedi et en stand by entre samedi & dimanche !

Il reste au moins ces points :

  • certaines catégories inexistantes (ex : PFC pas dans la BDD)
  • le n° de semaine : afficher en colonne B ou C : dans l'exemple, la colonne C semble correspondre à un intervalle, on va le chercher où ? ex : Semaine (04-08/01)
  • effacer les données avant nouvel import : c'est le but du message "Plus de place pour ce mois !". (les données s'ajoutent au fur et à mesure et pour éviter de déborder si on a plus de 5 semaines, on arrête)

Si cela correspond à peu près, je peux continuer

Bonne soirée

Bouben

Bonsoir,

Ouiiiiiii ! ça corresponds de ce que j'ai pu voir. Si tu peux continuer serait super Surtout que tu es le seul sauveur pour ce sujet !

Alors :

- certaines catégories inexistantes (ex : PFC pas dans la BDD) :

Oui car par exemple, un technicien chimisite ne fait pas de tâche "PFC". Pour le moment on travail que sur les chimistes. Lorsque que mes fichiers seront parfaits, je vais devoir créer des feuils supplémentaires pour insérer une interface et BD pour les microbiologistes, préleveurs .... Et cela je vais devoir le personnaliser selon la profession.

- Le n° de semaine :

Je suis désolée, c'était un essai dans la colonne B ... Donc oui colonne C dans les deux fichiers. J'ai pensé que c'était la meilleure solution pour la recherche car il n'y aura pas de doublon contrairement au nom et au mois saisi dans un mois complet. Mais si tu as une meilleure solution, n'hésite pas.

- effacer les données avant nouvel import :

Parfait ! j'adore !

De plus, est-ce que tu penses qu'il serait possible de diviser en 2 ma ListBox du UserForm 2 ? Comme ça je vais pas avoir assez de place pour y mettre tous les Labels que j'ai besoin pour identifier toutes mes colonnes ? Car pour le moment, je ne peux pas toutes les identifier à cause d'un manque de place ... Il y a trop d'impact de faire ça et j'ai peur de toucher le code tel qu'il est ... Car c'est presque parfait comme ça haaaaa ! Tu pourrais voir ce que tu peux faire ?

Je te remercie et je te souhaite une excellente soirée.

Mjulie.

Hello,

Je reviens vers toi pour savoir si tout cela est alors faisable ? Je ne suis pas vraiment pressée il n'y a pas de problème.

Ce message est juste pour savoir s'il y a des choses qui ne sont pas faisable pour que j'essaye de trouver des solutions

Je te souhaite une bonne soirée.

Mjulie.

Bonjour,

Juste pour te dire que je n'ai plus à diviser en deux ma ListBox je viens de trouver la solution .

Bonne journée

Mjulie.

Bonsoir,

De retour

Ci-joint une nouvelle version à tester prenant en compte les 3 points :

  • n'affiche plus le message d'alerte si catégorie absente
  • libellés de semaine
  • efface avant import

Points contraignants :

  • il faut que tous les onglets aient exactement le même format
  • pour effacer : se base sur les cellules en fond bleu

Bonne soirée

Bouben

Bonsoir,

Merci beaucoup pour ta réponse. Je viens de regarder le code et c'est énorme ! . Merci.

Par contre, peux-tu m'expliquer comment on fait le lien avec ce fichier et ma base de donnée ?

Merci et bonne soirée.

Mjulie.


Quand je dis base de donnée, c'est à dire le second fichier.

Merci et bonne soirée.

Bonsoir,

La macro principale est "Import" :

Public Sub Import()

(pas mis de bouton pour l'instant pour l'appeler !)

Le fichier contenant les données est à sélectionner dans la fenêtre qui s'ouvre.

sFichier = Application.GetOpenFilename()

Après, si le fichier est toujours au même endroit, possible de mettre son chemin directement dans le code :

sFichier ="C:\toto\BD VBA BILAN IMPUT.xlsm"

Cela répond à ta question ?

Bonne soirée

Bouben

Bonsoir Bouben,

Merci ! ça répond exactement à mes besoins ! Je pense que j'ai bientôt fini mon projet !

J'adore l'intitulé des semaines c'est super !

Peux-tu me donner un dernier conseil ?

Je voudrais du coup copier coller les modules que tu as fais sur ce fichier pour utiliser ton code sur le fichier original.

Je n'y arrive pas, j'ai créée les 2 modules sur mon fichier original. et lorsque j'essaye, j'ai ce code qui me bloque :

If oSh.Range("B" & iLig).Value = "NOM" Then

Qu'est ce que je peux faire ? Et si tu as d'autre conseil à me donner pour reproduire ton code dans mon fichier. ... Car il faut imaginer le même fichier mais avec 30 feuils et noms différents avec déjà de saisie (à la main...) les mois de janvier à mars et je voudrais du coup récupérer ce fichier.

Merci beaucoup en tout cas, ça répond vraiment à ce que cherchais !

Je te remercie et je te souhaite une bonne soirée!

Mjulie.

Bonjour,

J'ai une autre petite question Je voudrais personnaliser mes UserForm avec seulement les tâches qui concerne une spécialisation. Par exemple, CHIMIE, c'est seulement pour certaines tâches. Mais j'ai encore 4 autres spécialisations avec des tâches différentes à la CHIMIE ect... Donc lors de la saisie, il y a des tâche qui ni sont pas. J'ai réussi à ce que la saisie s'inscrive au bon endroit dans la base donnée sans prendre en compte des colonnes pour n'avoir rien de saisie quand non concerné. parfait.

Au niveau de l'import et de mes bilans, il serait mieux que ma base de donnée avec les userforms soit complète avec toutes les tâches et d'avoir aucune saisie dans les cases pas concernée.

Par contre, quand je rajoute une colonne à cette base de donnée pour la mettre à jour avec toutes les tâches, l'importation ne se fait pas correctement. Il y a des décalages. Peux-tu seulement m'expliquer comment réajuster l'importation lorsque je vais faire une modif ?

Je te remercie et je te souhaite une bonne journée.

Mjulie

Bonjour,

Pas tout compris.

mjulie a écrit :

Je voudrais du coup copier coller les modules que tu as fais sur ce fichier pour utiliser ton code sur le fichier original.

On parle de quel fichier ? Peux-tu l'envoyer ?

Et ensuite tu parles de l'autre fichier ? Celui qui contient les données ?

Ca devient assez compliqué et la solution initiale va devenir complexe pour chaque modification.

Il faut réfléchir à une autre solution je pense

Pour la restitution, et éviter des décalages, on pourrait partir sur un TCD peut-être.

A toi de voir exactement ce que tu veux et décrire un peu plus ton besoin, en terme de saisie et de restitution.

Bonne journée

Bouben

Bonsoir,

Voici mes réponses :

On parle de quel fichier ? Peux-tu l'envoyer ? = Le fichier original.

Exactement le même fichier sauf qu'il a 30 feuils au total, soit 30 noms. Je ne peux malheureusement pas te l'envoyer car il est trop lourd pèse 900 ko et non pas 300. A part si tu as une boite mail sur laquelle je peux te l'envoyer ? Ou sinon me dire comment j peux reproduire ton code sur le fichier original sans le message d'erreur ?

Et ensuite tu parles de l'autre fichier ? Celui qui contient les données ?( Voir ci-joint)

Le 2nd fichier, ci-joint, est une base de donnée alimentée par 5 UserForm de saisie. Il y a 5 spécialités dans mon Labo, il y a soit la CHIMIE ou MICROBIO, préleveurs .... Chaque spécialité a des tâches différentes et certaines similaires. Quand un technicien doit saisir ses heures, il a juste à choisir sa spécialité ET à moment là, je voudrais personnaliser les userForm avec seulement les tâches propres à sa spécialité. J'ai réussi à ce que la saisie s'inscrive au bon endroit dans la base donnée de ce fichier sans prendre en compte les tâches (les colonnes) pas concernées. parfait. Comme ça, je n'ai rien en terme de saisie dans la colonne inutile à cette spécialité.

Mon problème, c'est lorsque je vais rajouter une colonne pour mettre toutes les tâches dans le 2nd fichier et en suite personnalité les colonnes à ne pas prendre en compte par UserForm, je vais avoir les réponses de décalées dans le fichier que tu m'as fais lors de l'import. (Voir le fichier ci-joint).

C'est aussi le fichier que j'importe garce à ta macro.

Ca devient assez compliqué et la solution initiale va devenir complexe pour chaque modification.

Je souhaite modifier seulement une fois le 2nd fichier avec toutes les tâches du Labo entier afin de voir les saisies de n'importe quel spécialité. La composition est similaire à ton fichier. Sauf que dans ton fichier, c'est parfait j'ai bien toutes les tâches du Labo.

Pour la restitution, et éviter des décalages, on pourrait partir sur un TCD peut-être.

Je ne sais pas c'est quoi ?

Est-ce que ça répond à tes questions ?

Je te remercie.

Mjulie

Bonsoir,

Je vais regarder ...

Pour envoyer le fichier complet :

http://www.cjoint.com/

Bonne soirée

Bouben

Bonsoir,

Merci beaucoup, j'espère être claire ... c'est pas facile de s'exprimer à ce niveau de détail

Voici merci :

https://www.cjoint.com/c/FDxuIUBdYmh

Bonne soirée

Mjulie

Bonjour Bouben,

J'ai une idée plus simple dis moi ce que tu en penses :

Concernant le 2nd fichier :

Il serait plus simple que je fasse le même USF pour toutes les spécialités. Soit 5 USF avec la même composition pour ne pas créer de décalage. Et après, je vais griser et rendre inactif les textBox pas concernées par le USF et puis voila. C'est des ajustements simple que je peux faire. Et aussi je vais mettre exactement les bon nombre de colonne dans la ma base de donnée pour recevoir toutes les informations. Je vais essayer et je te dirais si j'ai réussi !

Mais si tu peux me mettre ton code sur le fichier original serait cool . Car ce fichier c'est mon modèle pour la restitution et l'ordre que je voudrais instaurer.

Je te remercie et je te souhaite une bonne journée.

Mjulie.

Bonsoir,

Dans un premier temps, il faut décider de l'orientation qu'on veut prendre.

1- Si la source des données est le fichier "BDD", et qu'on le réimporte à chaque fois, toutes les données doivent être dans ce fichier

=> sinon, on a des données qui sont déjà dans l'autre fichier et on ne saura pas ce que l'on remplace ou ce que l'on veut réimporter.

2- Dans le fichier "Principal", y a-t-il des données qui sont saisies directement dans les onglets (ex : "BONNEMORE", "EPRON", ...) ou toutes ces données viennent de "BDD" ?

3- Dans le fichier "Principal", si tous les onglets sont identiques, autant n'avoir qu'un seul onglet, et avec une liste déroulante, on choisit la personne à afficher. Cela évite d'avoir x fois le même onglet, et si ça bouge, de faire la modif une seule fois

4- Nombre de fichiers : est-ce obligatoire d'avoir les donnée dans un fichier à part ("BDD") ou peut-on prévoir de faire un seul fichier qui regroupe les données et le résultat.

La première chose à faire est de définir l'architecture, bien la penser, pour ne plus la changer. Ensuite, on met en place ce qu'il faut.

Bonne soirée

Bouben

Bonsoir,

Voici mes réponses :

1- Si la source des données est le fichier "BDD", et qu'on le réimporte à chaque fois, toutes les données doivent être dans ce fichier

=> sinon, on a des données qui sont déjà dans l'autre fichier et on ne saura pas ce que l'on remplace ou ce que l'on veut réimporter.

Tout à fait d'accord. C'est ce que je voulais faire et que je disais plus haut. Car au tout début, j'avais mis que les colonnes pour la CHIMIE dans cette BDD ......

2- Dans le fichier "Principal", y a-t-il des données qui sont saisies directement dans les onglets (ex : "BONNEMORE", "EPRON", ...) ou toutes ces données viennent de "BDD" ?

Que venant de la BDD pas de saisie directe.

3- Dans le fichier "Principal", si tous les onglets sont identiques, autant n'avoir qu'un seul onglet, et avec une liste déroulante, on choisit la personne à afficher. Cela évite d'avoir x fois le même onglet, et si ça bouge, de faire la modif une seule fois

Oui ... HAHA tu as raison . Oui je te confirme tout identique.

4- Nombre de fichiers : est-ce obligatoire d'avoir les donnée dans un fichier à part ("BDD") ou peut-on prévoir de faire un seul fichier qui regroupe les données et le résultat.

Encore touché ! Oui carrément d'accord sera plus simple ! Dans ce cas gardons le fichier principal et plus le BDD. Mais je vais avoir besoin de tous mes USF dans le fichier principal.

Je te remercie et je te souhaite une excellente soirée: )

N'hésite pas à me demander si tu as des questions si je ne suis pas assez claire

Mjulie.

Rechercher des sujets similaires à "bilan transfert entre fichiers rechv matricielle"