Filtrage et traduction d'une base de donnée

Bonjour,

J'aurais besoin d'automatiser certaines taches dans une base de données a l'aide d'une macro. Le but est qu'à partir d'une base de données comprenant des centaines d'occurrences, on n'obtienne plus que les lignes des produits concernés.

De plus, je souhaiterais que certaines colonnes soient traduites dans une autre langue (autrement dit que des cellules dans la langue d'origine soient purement et simplement remplacées par leur équivalent dans la 2eme langue).

Pour que ce soit plus facile à comprendre, j'ai réalisé une base de donnée TRES SIMPLIFIEE qui devra servir d'exemple : exemple.xls

Dans cet exemple, le résultat escompté est qu'en appliquant la macro on ne voit plus que que les lignes correspondantes aux produits "Pates", "Riz" et "Patates douces" et ce seulement pour le commerical "Mr A". Les colonnes "Client" et "Produit" devront quant à elles etre traduites (dans cet exemple du français à l'anglais). Voir le fichier : resultatespere.xls

Pour effectuer cette traduction, je dispose de deux fichiers appelés trad_client.xls et trad_produit.xls qui comportent chacun seulement deux colonnes : une pour les mots en français, une autre pour les mêmes mots mais en anglais.

Il faut aussi noter que lors de l'éxécution de la macro, le fichier de la base de données ainsi que les deux fichiers de traductions seront placés dans le même répertoire.

Voila, j'espère que malgré la complexité de la tache c'est assez clair.

Merci d'avance de votre aide.

Bien à vous.

PS : le fichier de base de données sur lequel je travail réellement est beaucoup plus complexe. Ce fichier est mis à jour par tout un tas de personnes, et seulement les informations de quelques produits me concernent réellement. Malgré la présence de filtres manuels il est donc très important de pouvoir automatiser le filtrage.

12trad-produit.xlsx (8.96 Ko)
11trad-client.xlsx (9.00 Ko)
17exemple.xlsx (10.28 Ko)

Bonjour

Je ne comprends pas ça

paulhenry a écrit :

en appliquant la macro on ne voit plus que que les lignes correspondantes aux produits "Pates", "Riz" et "Patates douces" et ce seulement pour le commerical "Mr A".

Il faut une macro pour cocher 4 cases ?

Si c'est toujours ces mêmes conditions cela peut se faire

Mais j'ai un doute que ce critères ne vont pas changer et il faudra bien travailler soit pour faire des listes, soit pour modifier la macro

En attendant la partie traduction (à tester sur une base énorme)

Bonjour Banzai64

Wow! Ca marche du tonnerre! Merci beaucoup (en plus en lisant ton code ca me permet de progresser et de comprendre pas mal de choses)

Set Tablo = Ws.ListObjects(1)

Quand tu fais appel a cette instruction, si j'ai bien compris le tableau est reference comme l'objet "1" dans la worksheet "Ws".

Par contre si j'essaye d'appliquer ton code a ma base de donnees relle, le debug me donne une erreur sur cette ligne et je me rend comte que le tableau, contrairement l'exemple, n'est pas defini comme un objet.

Banzai64 a écrit :

Il faut une macro pour cocher 4 cases ?

Dans la base de donnees que je souhaite traiter en realite, il y a une centaine de colonnes et des cases a cocher dans plusieurs d'entre elles, ce qui est fastidieux et prend du temps. Comme je souhaite toujours consulter les memes produits et dans les meme conditions, cacher ou supprimer les autres lignes de maniere automatique s'avere necessaire.

De plus, en comprenant un tel code cela me permettra de realiser des macros similaires pour mes collegues et pour d'autres types de produits a l'avenir, sans toujours faire mon boulet sur les forums internet

Bonjour

Tu as fournis un fichier

paulhenry a écrit :

j'ai réalisé une base de donnée TRES SIMPLIFIEE qui devra servir d'exemple

Et dans ce fichier tu as un tableau (ListObject)

Si dans la réalité ce n'est pas ça il faut reprendre la macro

paulhenry a écrit :

il y a une centaine de colonnes et des cases a cocher dans plusieurs d'entre elles

Si ce sont toujours les mêmes il serait peut-être intéressant d'avoir une liste de ces critères et des colonnes à filtrer

Autre solution c'est d'en faire la liste dans la macro (méthode moins souple)

A toi de dire

Banzai64 a écrit :

Tu as fournis un fichier

paulhenry a écrit:

j'ai réalisé une base de donnée TRES SIMPLIFIEE qui devra servir d'exemple

Et dans ce fichier tu as un tableau (ListObject)

Si dans la réalité ce n'est pas ça il faut reprendre la macro

Oui je ne m'en suis rendu compte qu'apres coup.

Mais ca foncitonne si je copie mes cellules dans une page et que je les defini comme tableau. Reste a savoir s'il y a une commande pour faire ca automatiquement...

En tout cas merci beaucoup pour ton code, je l'ai a peine adapte a ma sauce pour pouvoir traduire plus de deux colonnes

Bonjour

paulhenry a écrit :

Reste a savoir s'il y a une commande pour faire ca automatiquement...

Regarde de côté

ListObjects.Add, méthode

Cette méthode crée un nouvel objet Liste.

Syntaxe

expression.Add(SourceType, Source, LinkSource, HasHeaders, Destination)

expression Variable qui représente un objet ListObjects.

Exemple (fait avec l'enregistreur)

    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$D$4:$F$16"), , xlYes).Name = "Tableau1"

Salut Banzai64

Merci beaucoup pour ton aide! Elle m'a ete des plus precieuses, que ce soit le code de traduction ou la derniere commande

Du coup je marque le sujet comme resolu.

Cordialement.

Rechercher des sujets similaires à "filtrage traduction base donnee"