RESOLU [VBA] - Colonne : ne conserver que les données chiffrées

ralph45

XLDnaute Impliqué
Bonjour le forum,

Petite demande qui me préoccupe, je reçois un fichier de l'informatique qui me demande de ne conserver dans une colonne uniquement que les codes INSEE en excluant la partie commune, avec comme éléments séparateurs des points-virgules, à savoir en colonne A, obtenir le résultat en colonne B.

Colonne A :
77258 - Lognes; 77243 - Lagny-sur-Marne; 77083 - Champs-sur-Marne; 93049 - Neuilly-Plaisance

Colonne B :
77258;77243;77083;93049

Moderato (voir le fichier en PJ) :
- ce fichier contient plus de 10.000 lignes ;
- les lignes vides doivent être conservées ;
- bien sûr (Grrr... :mad:), la colonne peut avoir 1 à n codes communes.

Merci à vous et à bientôt.
 

Pièces jointes

  • Conserver données chiffrées.xls
    32.5 KB · Affichages: 37
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : [VBA] - Colonne : ne conserver que les données chiffrées

Bonjour Ralph, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim x As Byte 'déclare la variable x (incrément)
Dim y As Byte 'déclare la variable y (incrément)

With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    For Each cel In .Range("A2:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row) 'boucle 1 : sur toutes les cellules éditées de la colonne A
        If cel.Value <> "" Then 'condition : si la cellule n'est pas vide
            cel.Offset(0, 1).Value = Left(cel.Value, 5) 'place en colonne B les 5 premiers caractères de cel
            x = UBound(Split(cel.Value, ";")) 'définit la variable x (le nombre d'occurrences du caractère ";")
            If x = 0 Then GoTo suite 'si x est nul va à l'étiquette "suite"
            For y = 1 To x 'boucle 2 : sur le nombre de ";"
                cel.Offset(0, 1).Value = cel.Offset(0, 1).Value & ";" & Trim(Left(Split(cel.Value, ";")(y), 6)) 'rajoute à la valeur de la cellule le code commune suivi de ";"
            Next y 'prochaine ";" de la boucle 2
suite: 'étiquette
        End If 'fin de la condition
    Next cel 'prochaine cellle de la bucle 1
End With 'fin de la prose en compte de l'onglet "Feuil1"
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
312 536
Messages
2 089 393
Membres
104 157
dernier inscrit
STEPH62110