Macro remplacer une série de mots par des sigles (plage donnée)

TOT127 Messages postés 898 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

un fichier: http://www.cjoint.com/c/FKlmuc5AAjX
J'ai un fichier de 2 feuilles, dans chacune la dernière colonne comporte des États d'un pays (New York Arkansas, etc). je dois remplacer ça par les abréviations, pour alléger mon fichier (qui est énorme, 120Mo). Puis quand j'aurai access je le mettrai dedans, semaine prochaine.
J'ai excel 2007 et un PC.

Je veux, à chaque fois, dans la colonne C:C de F1 et F2 remplacer les états par les abréviations (j'ai une liste). Je suis débutant en VBA,et pour l'instant je ne réussis qu'à faire de petits exercices, et je n'ai pas réussi à faire une macro, même en regardant des macros à modifier sur google.
Je dois limiter le remplacement aux plages, car je veux pas que "New York Restaurant" devienne "NY Restaurant" (ça serait un prb pour le matching avec une autre base de données.....), et le nombre d'items à remplacer est de 30 (donc faudrait tous les écrire dans la macro).

Je précise - vous allez hurler - que chaque feuille fait 900.000 lignes.


Merci bcp!
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
Suggestion :
Option Explicit
Sub states()
Dim f As Worksheet
Dim li As Long
Dim etat As String
Dim abbrev As String

For Each f In ThisWorkbook.Worksheets
    li = 1
    Do
        etat = Cells(li, 3)
        abbrev = ""
        Select Case etat
            Case "CALIFORNIE":
                abbrev = "CA"
            Case "TEXAS":
                abbrev = "TX"
        End Select
        If abbrev <> "" Then
            Cells(li, 3) = abbrev
        End If
        li = li + 1
    Loop While Cells(li, 3) <> ""
Next
End Sub

Cela va faire le boulot (pour CA & TX) sur la troisième colonne de toutes tes feuilles, jusqu'à rencontrer une cellule vide.
2
TOT127 Messages postés 898 Date d'inscription   Statut Membre Dernière intervention   96
 
merci ! je vais voir ça, puis je te demander ce que signifie " li = 1" ici ?
0
Utilisateur anonyme > TOT127 Messages postés 898 Date d'inscription   Statut Membre Dernière intervention  
 
li est le n° de ligne, initialisé à 1.  😉
0
TOT127 Messages postés 898 Date d'inscription   Statut Membre Dernière intervention   96
 
bonjour ! ça fonctionne bien, mais ya un prb: ça ne fait pas le travail sur les 600.000 lignes. Combien de temps environ dois je attendre ? Car je mets la macro en route, et après 30 secondes je vais voir le résultat. Peut-être je dois attendre ? VBA ne dit jamais quand il a fini :(
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
il s’arrête peut-être trop tôt, sur la première ligne sans rien en colonne C?
ce code prévient quand il a fini chaque feuille :
Option Explicit
Sub states()
Dim f As Worksheet
Dim li As Long
Dim etat As String
Dim abbrev As String

For Each f In ThisWorkbook.Worksheets
    li = 1
    Do
        etat = Cells(li, 3)
        abbrev = ""
        Select Case etat
            Case "CALIFORNIE":
                abbrev = "CA"
            Case "TEXAS":
                abbrev = "TX"
        End Select
        If abbrev <> "" Then
            Cells(li, 3) = abbrev
        End If
        li = li + 1
    Loop While Cells(li, 3) <> ""
    MsgBox "fini " + f.Name + ", dernière ligne =" + CStr(li)
Next


End Sub
0
TOT127 Messages postés 898 Date d'inscription   Statut Membre Dernière intervention   96
 
Bonjour, j'ai bien une msgbox qui me dit que c'est fini, mais seulement après 50.000 lignes. Or chaque feuille a environ 600.000 lignes.... Une idée ?
0
Utilisateur anonyme
 
900 000 lignes ??? !!! Ah ben je suis sûr que tu as une version
d'Excel ultérieure à la version 2003, alors !!! Cordialement.  😉
-2
TOT127 Messages postés 898 Date d'inscription   Statut Membre Dernière intervention   96
 
mdr oui, je dois juste finir de traiter mon fichier (remplacer nettoyer) pius ça part dans un logiciel de stats (Stata) qui prend jusqu'à 3 millions de lignes
0
Utilisateur anonyme > TOT127 Messages postés 898 Date d'inscription   Statut Membre Dernière intervention  
 
3 millions de lignes ??? !!! N'en jetez plus !!! Ou Excel va exploser !!!  😉
0
TOT127 Messages postés 898 Date d'inscription   Statut Membre Dernière intervention   96
 
je rajoute plus rien :p je nettoye c'est tout (et je remplace par des abréviations)
0