Convertir des Plaque type 547CVG78 en 111AAA11

Bonjour,

Nouveau sur le forum, j’ai fais une recherche, mais n’est rien trouvé sur le sujet, c’est pourquoi j’en fais appel à votre aide.

Contexte :

Je suis parti d’un fichier LOG de ce format

2012-06-02T00:00:39+01:00 : AnalyticsSource.cpp(406)

Thread id: 4868 (0x1304) - LPR-ENTER: ALERT! - Plate 547CVG78, Rule: Unregistered Plates

2012-06-02T00:01:59+01:00 : AnalyticsSource.cpp(406)

Thread id: 5140 (0x1414) - LPR-ENTER: ALERT! - Plate PQZ547, Rule: Unregistered Plates

2012-06-02T00:02:28+01:00 : AnalyticsSource.cpp(406)

Thread id: 5140 (0x1414) - LPR-SORTIE: ALERT! - Plate BD666PT, Rule: Unregistered Plates

Le fichier LOG, je le traite sans problème pour avoir le format de sortie sous Excel de la manière suivante :

Date Heure Passage Plaque

2012-06-02 00:00:39 LPR-ENTER 547CVG78

2012-06-02 00:01:59 LPR-ENTER PQZ547

2012-06-02 00:02:28 LPR-SORTIE BD666PT

Ce que je cherche à faire, c’est d’avoir un format de plaque sur la colonne E par rapport aux plaques de la colonne D.

Exemple de ce que je souhaite:

547CVG78 => 111AAA11

PQZ547 => AAA111

BD666PT => AA111AA

Là ce sont juste deux plaques Française et une plaque Belge, je peux avoir à faire à des plaques de bien d’autres pays si ce n’est pas tous.

La longueur de la cellule varie en fonction de la plaque du pays.

Le but futur de cette opération :

  • C’est déjà dans un premier temps avoir la possibilité de supprimer toutes les plaques qui me seront inutiles en Fonction du pays
  • Dans un second temps d’avoir la possibilité de rajouter le pays en fonction du format de la plaque.

Les fichiers sur lesquels je travaille font en général 15000 lignes.

En espérant avoir été le plus clair possible et vous remercie pour votre aide que vous pourrez m’apporter.

Cordialement

Lameth

Bonjour Lameth,

Essaye ça pour récupérer le format dans la colonne E (tu peux préciser le nom de ta feuille dans la macro, ne l'ayant pas, j'ai fait sans!) :

Sub FormatPlaques()

Dim FormatResu As String

For i = 2 To Cells(1, 1).End(xlDown).Row
    FormatResu = ""

        For k = 1 To Len(Cells(i, 4))
            If IsNumeric(Mid(Cells(i, 4), k, 1)) = True Then
                FormatResu = FormatResu & "1"
            Else
                FormatResu = FormatResu & "A"
            End If
        Next k

    Cells(i, 5) = FormatResu
Next i

End Sub

Bon courage!

PS : J'espère que c'est pas pour traiter des PV!

Bonjour ReuK,

Je te remercie c'est nikel exactement ce que je chercher.

T'as parfaitement compris je me demandé si quelqu'un allez comprendre !!m

Me voila rassuré

C'a va m'éviter des heures de boulot pour rechercher les petits défaut suite au relevé des caméras.

Plus qu'a créer mon fichier de réference pour les plaques pays, faire la petite recherchev qui va bien et le tour est joué.

Tu peux dormir sur t'es deux oreilles c'est pas du tout pour des PV.

C'est juste pour un parking pour faire des stats.

Bonjour

Pour ceux que VBA rebute, c'est aussi faisable avec une formule (ici pour 9 caractères maxi)

=SI(CODE(A1)<58;1;"A")&SI(NBCAR(A1)<2;"";SI(CODE(STXT(A1;2;1))<58;1;"A"))&SI(NBCAR(A1)<3;"";SI(CODE(STXT(A1;3;1))<58;1;"A"))&SI(NBCAR(A1)<4;"";SI(CODE(STXT(A1;4;1))<58;1;"A"))&SI(NBCAR(A1)<5;"";SI(CODE(STXT(A1;5;1))<58;1;"A"))&SI(NBCAR(A1)<6;"";SI(CODE(STXT(A1;6;1))<58;1;"A"))&SI(NBCAR(A1)<7;"";SI(CODE(STXT(A1;7;1))<58;1;"A"))&SI(NBCAR(A1)<8;"";SI(CODE(STXT(A1;8;1))<58;1;"A"))&SI(NBCAR(A1)<9;"";SI(CODE(STXT(A1;9;1))<58;1;"A"))&SI(NBCAR(A1)<10;"";SI(CODE(STXT(A1;10;1))<58;1;"A"))

Cordialement

Bon tant mieux si ça marche et que c'est pas pour des PV, parce que j'avais hésité à caler des erreurs fatales à ton ordi dans le code sinon!

Bref, pense à valider le sujet avec le petit bouton dédié en haut à droite de chaque post!

En choisissant celui qui t'as donné ta réponse!

Et oui Amadéus, c'est vrai que j'ai fait le sauvage en VBA direct, mais je connais bien mieux ça qu'Excel!

Bonjour Amadéus,

Merci pour cette deuxième solution, pas encore testé.

Mais j'ai une préférence pour la macros qui sur plus de 15000 ligne prend moins de temps que de devoir passer la formule.

En tout cas merci de t'être penché sur la question.

Lameth


ReuK a écrit :

Bon tant mieux si ça marche et que c'est pas pour des PV, parce que j'avais hésité à caler des erreurs fatales à ton ordi dans le code sinon!

Bref, pense à valider le sujet avec le petit bouton dédié en haut à droite de chaque post!

En choisissant celui qui t'as donné ta réponse!

Et oui Amadéus, c'est vrai que j'ai fait le sauvage en VBA direct, mais je connais bien mieux ça qu'Excel!

Encore Merci...

J'ai validé le sujet

Au pire quand t'es un fainéant (ou un malin ) comme moi, si tu as une formule à mettre dans beaucoup de cases tu utilises un truc du genre en VBA :

Sub Macro3()
'
' Macro3 : Vive l'enregistreur de Macros!
'
    Selection.AutoFill Destination:=Range("C13:C19"), Type:=xlFillDefault

End Sub

En ayant sélectionné la formule qui t'intéresses et en paramétrant le contenu du Range pour avoir la bonne destination!

Bon courage!

On est tous fainéant dans l'informatique, oups Malin je veux dire

Je commence à apprécier le VBA de plus en plus...

Mais ne suis pas développeur, juste un admin réseau converti dans la vidéo surveillance.

Je met t'as macro de côté, elle me servira top ou tard. .

Rechercher des sujets similaires à "convertir plaque type 547cvg78 111aaa11"