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
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
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.
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
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
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 !
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.
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
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 !
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.
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
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
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
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
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
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
Bonsoir,
Je vais regarder ...
Pour envoyer le fichier complet :
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
Je te remercie et je te souhaite une bonne journée.
Mjulie.
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
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
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é
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.