Macro pour remplacer colonnes avec dictionnaire

Ayadin75 Messages postés 47 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
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 8930 Statut Membre 1 781
 
Bonjour,

Excel n'est pas un SGBD !
Il en existe de nombreux gratuits.
0
Ayadin75 Messages postés 47 Statut Membre 1
 
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 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 279
 
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 47 Statut Membre 1
 
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 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 279
 
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 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
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