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

Fermé
TOT127 Messages postés 898 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 7 août 2018 - 11 nov. 2016 à 13:24
yg_be Messages postés 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 - 14 nov. 2016 à 23:03
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 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 Ambassadeur 1 557
11 nov. 2016 à 14:42
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 mercredi 8 avril 2009 Statut Membre Dernière intervention 7 août 2018 96
11 nov. 2016 à 15:17
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 mercredi 8 avril 2009 Statut Membre Dernière intervention 7 août 2018
11 nov. 2016 à 15:25
li est le n° de ligne, initialisé à 1.  😉
0
TOT127 Messages postés 898 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 7 août 2018 96
11 nov. 2016 à 20:05
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 23400 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 décembre 2024 1 557
11 nov. 2016 à 20:55
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 mercredi 8 avril 2009 Statut Membre Dernière intervention 7 août 2018 96
13 nov. 2016 à 15:29
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
11 nov. 2016 à 13:58
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 mercredi 8 avril 2009 Statut Membre Dernière intervention 7 août 2018 96
11 nov. 2016 à 14:03
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 mercredi 8 avril 2009 Statut Membre Dernière intervention 7 août 2018
11 nov. 2016 à 14:10
3 millions de lignes ??? !!! N'en jetez plus !!! Ou Excel va exploser !!!  😉
0
TOT127 Messages postés 898 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 7 août 2018 96
11 nov. 2016 à 14:11
je rajoute plus rien :p je nettoye c'est tout (et je remplace par des abréviations)
0