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.
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
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.