Projet de recherche et transfert semi-automatique de données Excel

Drailh

XLDnaute Nouveau
Bonjour à tous,

Cela fait quelques jours que je planche sur un projet de transferts de données précises, d'un classeur à un autre, pour mon travail sans obtenir de résultats probants.
Mes compétences en Excel sont proches du Néant mais je suis persuadé que mon projet doit être assez simple et courant. Aussi je me tourne vers ce forum dans l'espoir d'avoir un peu d'aide.
Je vais expliquer le contexte du projet dans un premier temps puis mes attentes dans un second temps, je terminerai par ma progression.


Le contexte:

Je travaille dans l'industrie. Mon entreprise possède une ligne de production avec plusieurs machines fonctionnant avec des programmes spécifiques.
Nous faisons beaucoup de types de production avec des paramètres différents; tous ces paramètres sont stockés dans des sous programmes de chaque machine.
Une fois par semaine je relève les paramètres stockés dans chaque machine sous forme de fichier .csv (chaque colonne correspond à une référence différente, il y a autant de fichier .csv que de machines et plusieurs paramètres par référence). Les données contenues dans ces fichiers me servent à remplir un classeur excel imprimable avec les paramètres des machines que je donne aux personnes travaillant sur la ligne de production afin qu'ils puissent la faire fonctionner au mieux.
Je récupère donc manuellement les données qui m'intéresse puis je les transfert en copier/coller une à une à leur emplacement sur mon classeur excel.
C'est un travail assez long qui laisse une place importante à l'erreur humaine.


le projet:

Pour gagner du temps et limiter le risque d'erreurs je souhaite mettre en place un programme Excel me permettant de rechercher par mot clé la référence du programme dont je souhaite recopier les données dans un des fichier .csv choisit (peut-être par un système de liste déroulante ou de case à cocher). Etant donné que toutes les références se ressemblent (dès fois à un chiffre près) j'aimerais avoir une listbox sous mon champ de recherche dans laquelle s'affiche mes résultats au fur et à mesure de l'avancement de ma recherche.
Une fois la recherche effectuée, j'aimerai pouvoir sélectionner la référence (plus précisément les coordonnées de la référence) cliquer sur un bouton afin de pouvoir utiliser une matrice pour copier/coller automatiquement les paramètres se situant dans la colonne de la référence vers mon classeur imprimable.

Pour le projet partons sur 6 fichiers .csv différents avec plus de 200 références (rangées par colonne) par fichier et 7 paramètres différents pour chaque ligne de chaque colonne ( je sais que ça fait beaucoup, j'en suis désolé, mais c'est un vrai clavaire pour moi aussi).


La progression:

Actuellement j'ai plus ou moins compris comment copier/coller automatiquement des données d'un classeur à un autre si je connais les coordonnées des cellules de départ et des cellules d'arrivée.
En revanche, j'ai beau chercher, je ne comprend pas comment on peut effectuer une recherche dans une ligne selon un critère de recherche variant (mot clé dans un champ de recherche) tout en affichant les résultats dans une liste et en obtenant les coordonnées du résultat final obtenu (un seul résultat au final) pour le re-utiliser par la suite.

J'ai pu observer certaines des fonctionnalités que je recherche (barre de recherche + liste de résultats) sur des forum mais je n'ai pas réussi à les reproduire de mon côté.

je joindrais des documents types modifiés (sans données confidentielles) si c'est nécessaire.

Merci d'avance.
 

chris

XLDnaute Barbatruc
Bonjour

Tu manipules beaucoup de données.
Je pense qu'il serait plus simple de consolider tous ces relevés dans une base de données (ACCESS idéalement mais éventuellement tout autre SGBD gratuit par exemple) puis d'extraire ce dont tu as besoin par de simples requêtes dont le paramétrage et le résultat peuvent se trouver dans un classeur Excel.

Si les fichiers CSV gardent le même nom d'une période à l'autre c'est assez simple à consolider, sinon il y a diverses possibilités.

En plus du fichier exemple, (csv et résultat voulu) dis-nous si tu as ACCESS et comment sont nommés tes CSV.
 

Drailh

XLDnaute Nouveau
Bonjour Johaninho, chris,

Tout d'abord merci pour vos réponses rapides.

Je ne suis pas parvenu à joindre le fichier .csv alors je l'ai enregistré en tant que format excel classique.

Il y a donc mon fichier "source" dans lequel j'essai de piocher mes données qui gardera toujours le même nom, lui ainsi que tous les autres fichiers .csv que je récupère sur les machines.
Les données se situeront toujours aux mêmes endroits quelque soit la date d'édition du fichier (je me basais sur ça au début pour essayer d'arriver à quelque chose).

Le nom des CSV diffère selon les machines, on a Supervisione, Pal, Depal, Chiudiscatole, BackupPack1500N, BackupPack1500IM2, BackupPack1500IM1, BackupLock1500N et ARC_CART.

Malheureusement je n'ai pas ACCESS, ceci dit je vais regarder s'il n'existe pas un Freeware me permettant d'arriver aux mêmes résultats.
 

Pièces jointes

  • fichier final.xls
    25.5 KB · Affichages: 49
  • Supervisione.xls
    66.5 KB · Affichages: 42
Dernière édition:

chris

XLDnaute Barbatruc
Re

Quelques remarques sur tes exemples : le CSV n'est pas normalisé donc il ne peut être importé en l'état dans une base de données.

Il serait bien de préciser ta version Excel.

Pour ton exemple :
  • on suppose que référence client correspond à A 34 par exemple
  • tu évoques 7 paramètres mais tu en as 9 dans l'exemple : le nombre est variable d'un CSV à l'autre ?
  • c'est la fiche bleue de ton exemple qui sert à la fois
    • pour le choix d'un CSV,
    • le remplissage des cases en fonction de ce CSV et de la référence choisis
    • l'impression
Si oui, si on reste sur une solution Excel, le plus simple serait de combiner VBA et formules :
  • Choix du CSV dans une liste déroulante (source pré définie si elle est stable)
  • VBA : ouverture du csv choisi
  • les formules basées sur le nom se mettent à jour
  • Un bouton déclenche le VBA pour l'impression et éventuellement sauvegarde du résultat dans un classeur (nom à définir le cas échéant)
 

Drailh

XLDnaute Nouveau
Bonjour Chris,

C'est vrai que ce n'était pas le meilleurs exemple que je pouvais prendre...
Effectivement le nombre de paramètres varie d'une machine à une autre, mais pour palier à ce problème je pensais mettre en place un algorithme qui, une fois la colonne de la référence identifiée, récupérerait automatiquement les bons paramètres en fonction de la feuille CSV choisit au début de la recherche. On aurait donc un morceau d'algorithme par CSV.

J’adhère totalement à la solution que tu proposes mais je vois mal comment je peux ouvrir automatiquement mon CSV par VBA, je manque encore de connaissances sur le sujet.

Au début j'avais relié un à un tous les paramètres de mes CSV que je voulais, à ma feuille bleue par ce genre de formule:
='P:\Data\Doc\Desktop\tests commandes excel\[supervisione.csv]supervisione'!$A$20
Mais il y a eu beaucoup de changements depuis et je me suis rendu compte que les cellules ne se mettaient pas tout le temps à jours.

Après avoir lu les possibilités que tu évoquais dans ton dernier message je suis parti sur la réalisation d'un classeur Excel de "recherche" : une sorte de page interactive avec en premier lieu une liste déroulante me permettant de choisir le CSV sur lequel je veux effectuer mes recherches (j'y arrive), à côté une textBox et ListBox pour effectuer mes recherches grâce à un mot-clé tout en visualisant mes résultats (je n'y arrive pas encore, mais j'y travaille), puis une macro reliée à un bouton, qui appliquerait l'algorithme que j'évoquais en début de commentaire (Ce n'est pas encore fait, je n'ai pas trouvé comment récupérer les coordonnées la référence que je cherche sur le CSV).

Si j'arrive à mettre en place ce classeur Excel, j'aurai donc un fichier de données CSV, un classeur de transition avec mes programmes et ma feuille bleue que je suis censé récupérer complétée à la fin de l'opération.

Cela te semble-t-il possible ?
 

chris

XLDnaute Barbatruc
Bonjour

J'avais commencé à paramétrer un nom et des formules pour le CSV choisi.

Pour le nombre de paramètres ce n'est pas très gênant : on peut se repère sur le nom du paramètre (paramètre 1 à x selon la liste sur le feuille bleue).

Si je comprends bien il te faut une recherche sur la référence ? Peux-tu préciser un peu plus cet aspect recherche.
Précise aussi ta version Excel.

Je ne peux y travailler ce matin mais je pourrai en début d'après-midi.
 

Drailh

XLDnaute Nouveau
Re,

Merci beaucoup pour le temps que tu me consacres.

Oui j'essai de faire une recherche sur la ligne des références (il me semble que c'est la ligne 3 dans le fichier que j'ai envoyé).

Par exemple, admettons que je cherche la référence "EB 82", que je tape E, B, 8 ou 2 dans la barre de recherche il faudrait que cette référence apparaisse dans une liste (avec tous les autres résultats de la recherche) et que cette liste se mette à jour au fur et à mesure que j'affine ma recherche.

En fait j'aimerais pouvoir rechercher à la fois sur le critère des lettres et à la fois sur le critère des chiffres mais je ne sais pas si c'est possible (je ne sais pas si le terme "EB 82" sera définie comme une chaîne de caractères, ou comme deux caractères et deux chiffres).
Pour te donner un exemple concret, le nom exacte d'une référence que je peux être amené à chercher est :
"Islande 29 FH J330840"

Pour le moment je ne suis pas arrivé à quelque chose de probant avec les fonctions de recherche de Excel, j'ai l'impression que j e n'utilise pas le bon outil, mais je te tiens au courant si j'y arrive dans la journée.

J'utilise Excel 2007, excuse moi, j'avais oublié de le préciser....
 

chris

XLDnaute Barbatruc
Re

Voici une première ébauche :
  • choix du CSV dans une liste déroulante (on peut mettre la source dans un autre onglet)
  • lorsque l'on change la valeur, le code ferme tout autre CSV ouvert, vérifie que le CSV n'est pas déjà ouvert, et l'ouvre si non
  • Les formules se mettent à jour ainsi que la liste déroulante des références que j'ai mise en M1 temporairement.
Si le principe te convient il restera à mettre en place une recherche : il faudra alors passer par une liste activeX et un code (il y a pas mal d'exemples chez notre ami BoisGontier)

N.B. :les CVS sont supposés être dans le même dossier que le classeur fichier final2
 

Pièces jointes

  • fichier final2.xlsm
    43.5 KB · Affichages: 65

Drailh

XLDnaute Nouveau
Re,

Merci beaucoup, ton fichier dépasse déjà la plupart de mes attentes.

Je n'avais pas envisagé la possibilité de faire toutes mes démarches sur la feuille bleue mais c'est une très bonne idée, ça va limiter le nombre de fichiers ouverts.
Il est vrai que j'étais parti sur un champ de recherche ainsi qu'une liste de résultats (pour sélectionner ma référence) plutôt qu'une liste déroulante, mais ton travail me permet déjà de gagner énormément de temps.

Je viens justement de me renseigner sur l'utilisation des listes activeX, même si je vois quel est leurs rôles je ne sais pas vraiment comment les mettre en place, n'y comment les faire interagir avec le reste du classeur.
Je vais regarder le site de BoisGontier, il a effectivement l'air spécialisé dans ce domaine.

Encore merci
 

jeanba

XLDnaute Occasionnel
Bonsoir le Forum,

J'ai une préoccupation similaire, mais assez différente de celle traitée ici.
Car, dans mon cas, il s'agit de copier le contenu de certaines cellules de certaines feuilles vers un fichier contenant 2 feuilles.
La feuille à copier est sélectionnée via un userform (ici Userform2).

La première de ces 2 feuilles du classeur destinataire (parametres) ne reçoit qu'une valeur en B2, celle qui se trouve invariablement en A7 de la feuille copiée.

La 2e feuille du classeur destinataire (donnees) prend quant à elle l'essentiel des informations comprises dans la plage A8:H jusqu'à la dernière colonne non vide, à l'exception des données de la colonne D qui ne sont pas à copier.

Alors, avec ça, vous comprenez pourquoi j'ai des migraines au point de rester éveillé jusqu'à 02h32! J'ai tenté un code mais, ça va pas à chaque fois...
Pour simplifier, on va dire que les 2 fichiers joints sont dans C:\Mes Documents\VBA.

Je joins les fichiers pour plus de clarté.
Merci par avance

Jeanba
 

Pièces jointes

  • Copie fichier vers autre - Feuille source.xlsm
    463.7 KB · Affichages: 45
  • Copie fichier vers autre - Feuille destinataire.xlsm
    20 KB · Affichages: 31

Discussions similaires

Statistiques des forums

Discussions
314 611
Messages
2 111 146
Membres
111 051
dernier inscrit
MANUREVALAND