Macro pour remplacer colonnes avec dictionnaire

Fermé
Ayadin75 Messages postés 39 Date d'inscription lundi 30 mai 2016 Statut Membre Dernière intervention 23 décembre 2019 - Modifié le 16 mars 2019 à 12:58
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 17 mars 2019 à 08:51
Bonjour!

prb d'excel avec grosse base de données ici...

Je cherche a écrire une macro. Mon fichier Excel a 5 pages (p1 p2 p3 p4).

J’aimerais que la macro travaille sur les colonnes S à AC de ces pages.
Chaque page a entre 300.000 et 750.000 lignes. Le fichier fait 270MO!
Il s’agit de remplacer des expressions selon un « dictionnaire » que j’ai constitué, par colonne, sur une dernière page. ça va permettre d’alléger le fichier en enlevant les longues séries de caractère. Je compte perdre 30% de poids et ainsi pouvoir mieux le traiter dans un logiciel statistique dédié (stata).

Ces colonnes ont des expressions longues dedans, du genre:
« Meuble a tiroir en bois »
Je veux raccourcir ça, doit pr un chiffre, soit une abbreviation. j'ai un dictionnaire, colonne (texte long; abbréviation). le tout, sans doublons.


Ma démarche au début a été de faire une masse de Recherche V, les copier en valeur, et supprimer la colonne de base. C'est très long, ça rame, je me demande si ya une meilleure solution. J'ai aussi fait, pour des cas faciles, des chercher-remplacer dans le casseur (respecter la casse, celule entière). Peu optimal, pourtant j'ai des ordi assez au taquet.


Je suis totalement perdu!
J’ai tenté des trucs mais je crois que
1. erreurs de syntaxe
2. Pas adapté à la taille de la tache


Si quelqu’un pouvait me guider un peu!
merci bcp de votre aide!




En PJ un exemple de fichier: https://www.cjoint.com/c/ICqlXIFTWkx

il est comme mon fichier, mais plus léger. il contient un dictionnaire "incomplet", fondé sur la dernière page. EN jaune sont les colonnes que j'ai travaillé par RechercheV


<config>
2 Mac
2 PCs
A voir également:

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
16 mars 2019 à 14:07
Bonjour,

Excel n'est pas un SGBD !
Il en existe de nombreux gratuits.
0
Ayadin75 Messages postés 39 Date d'inscription lundi 30 mai 2016 Statut Membre Dernière intervention 23 décembre 2019 1
16 mars 2019 à 14:55
merci, je vais regarder ça. En effet, excel n'est vraiment pas fait pour ça! là j'ai supprimé quelques colonnes pour simplifier, mais c'est galère sinon!
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 16 mars 2019 à 18:40
Bonjour à tous,

Je me suis amusé avec ton fichier. Mais comme dit Patrice, 270 Mo il risque d'exploser en plein vol.

Tu n'as plus à construire le dico, je le construis au fur et à mesure. Les n° ne reprennent donc pas à 0 à chaque champ.
J'ai réduit ton fichier à 168ko en supprimant les lignes vides (des fois un million...)
Ce qui est amusant c'est qu'il est passé à 181ko après traitement. La feuille dico sans doute
Reste à voir ce que ça donnera sur le vrai.

Tu as une constante shExclu et la définition des colonnes de S à AC à traiter à fixer dans le code avant.
https://mon-partage.fr/f/MDUxftAh/
eric

PS : je tiens compte de la casse. Je n'ai pas voulu rajouter un traitement en plus si c'était inutile.
Il faudra déjà du temps pour tout traiter...
Rajoute toi-même ou demande si besoin

0
Ayadin75 Messages postés 39 Date d'inscription lundi 30 mai 2016 Statut Membre Dernière intervention 23 décembre 2019 1
16 mars 2019 à 19:29
Bonjour! merci bcp! j'espère que ça vous a un peu amusé en effet :p ! je regarde ça de suite et je vous répond après ou demain après avoir tout bien compris!

Aussi, comment avez vous fait pour supprimer les lignes vides ? C'est quelque chose que j'aimerais faire sur bcp d'autres fichiers, ça semble très utile! pour alléger, c'est la meilleure option ?
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
Modifié le 16 mars 2019 à 20:06
Tu fais Ctrl+Fin pour voir la dernière cellule.
Tu supprimes lignes et colonnes inutiles, Enregistrer
Ben c'est la meilleure option si c'est la cause de l'embonpoint oui, sinon non.

Tu peux aussi l'enregistrer en xlsb. Il prendra toujours autant de place en mémoire, mais moins sur le disque. Toujours du temps de gagné à l'ouverture et à l'enregistrement
eric
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
17 mars 2019 à 08:51
bonjour tt le monde
une petite astuce pour supprimer les lignes vides colonne A ou autre suivant la feuille

Sub Supprimer_si_vide()
Dim Ligne As Long

On Error Resume Next
Ligne = Columns("A").Find("*", , , , , xlPrevious).Row
Range("A2:A" & Ligne).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
0