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 SubBon 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
Sub Macro3()
'
' Macro3 : Vive l'enregistreur de Macros!
'
Selection.AutoFill Destination:=Range("C13:C19"), Type:=xlFillDefault
End SubEn 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.