Trouver les doublons dans un Textbox [Résolu]

thyphonfalcon 41 Messages postés vendredi 27 octobre 2006Date d'inscription 12 mai 2007 Dernière intervention - 21 nov. 2006 à 21:26 - Dernière réponse : mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention
- 21 nov. 2006 à 23:34
Bonjour,

Je remonte un texte via le port com d'un outils d'inventaire. Jusque là pas de problème mais j'aimerai analyser le fichier texte
que j'affiche dans un textbox et recopier dans un autre textbox toutes les lignes identiques.

Je dois dire que là, je sèche un peu. Quelqu'un peut me dire comment trouver les lignes identiques dans un textbox et les
copier dans un autre textbox ?

Merci d'avance

Thyphon

(Je suis sous VB6)
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 21 nov. 2006 à 22:01
3
Merci
Salut,

essaie comme ceci, pour le tester, j'ai ouvert un nouveau projet, inséré 2 ListBox :

Private Sub Form_Load()
        Dim cCol As New Collection, i As Integer
        
    With List1
        .AddItem "un"
        .AddItem "deux"
        .AddItem "trois"
        .AddItem "quatre"
        .AddItem "cinq"
        .AddItem "un"
        .AddItem "un"
        .AddItem "deux"
        .AddItem "cinq"
        .AddItem "cinq"
    End With
    
On Error Resume Next
    For i = 0 To List1.ListCount - 1
        cCol.Add List1.List(i), CStr(List1.List(i))
        If Err.Number = 457 Then List2.AddItem List1.List(i)
    Next i
    
    Set cCol = Nothing
    Err.Clear
On Error GoTo 0
End Sub

--Mortalino-- 

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--

Merci mortalino 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de mortalino
Meilleure réponse
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 21 nov. 2006 à 23:09
3
Merci
J'ai pas testé mais essaie ce code, il a pour but de lire toute ta textbox, de faire des split tout les sauts de lignes, afin de trier que les 12 derniers caractères de chaque lignes :

        Dim cCol As New Collection, cCol2 As New Collection
        Dim i As Integer
        Dim sSplitListe() As String, sTempString As String
        
    sSplitListe =  Split(txtEdition.Text, vbCrLf)
    
On Error Resume Next
    For i = 0 To UBound(sSplitListe)
        sTempString = Right(sSplitListe(i), 12)
        cCol.Add sTempString, sTempString
        If Err.Number = 457 Then
            Err.Clear
            cCol2.Add sTempString, sTempString
            If Not Err.Number = 457 Then List2.AddItem sTempString: Err.Clear
        End If
    Next i
    
    Set cCol = Nothing
    Set cCol2 = Nothing
    Erase sSplitListe
    Err.Clear
On Error GoTo 0

~<small> Mortalino </small>~

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>

Merci mortalino 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de mortalino
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 21 nov. 2006 à 21:43
0
Merci
Si tes lignes sont réelles (séparées par un vbcrlf), pas de problème :

tu utilises split en te servant des vbcrlf
Commenter la réponse de jmfmarques
thyphonfalcon 41 Messages postés vendredi 27 octobre 2006Date d'inscription 12 mai 2007 Dernière intervention - 21 nov. 2006 à 21:50
0
Merci
En fait je remonte un texte d'une application dos (un GUN infrarouge que l'on utilise pour les inventaires)

çà donne ceci

AMMMMM21/11/200600:05:480ETB00ME10009010100001
AMMMMM21/11/200600:05:480ETB00ME10009010100002
AMMMMM21/11/200600:05:480ETB00ME10009010100009
AMMMMM21/11/200600:05:480ETB00ME10009010100004
AMMMMM21/11/200600:05:480ETB00ME10009010100005
AMMMMM21/11/200600:05:480ETB00ME10009010100006
AMMMMM21/11/200600:05:480ETB00ME10009010100007
AMMMMM21/11/200600:05:480ETB00ME10009010100038
AMMMMM21/11/200600:05:480ETB00ME10009010100009
AMMMMM21/11/200600:05:480ETB00ME10009010100010
AMMMMM21/11/200600:05:480ETB00ME10009010100021
AMMMMM21/11/200600:05:480ETB00ME10009010100045
AMMMMM21/11/200600:05:480ETB00ME10009010100038

D'abitude j'importe dans excel et je fais mes bidouilles mais j'aimerai bien avoir un état avant l'exportation vers excel
Commenter la réponse de thyphonfalcon
thyphonfalcon 41 Messages postés vendredi 27 octobre 2006Date d'inscription 12 mai 2007 Dernière intervention - 21 nov. 2006 à 22:15
0
Merci
Bonjour,

Je teste çà de suite et je te dis ce qu'il en résulte

Mais déjà merci beaucoup pour la réponse

Thyphon
Commenter la réponse de thyphonfalcon
thyphonfalcon 41 Messages postés vendredi 27 octobre 2006Date d'inscription 12 mai 2007 Dernière intervention - 21 nov. 2006 à 22:29
0
Merci
Ca correspond pas vraiment à mes attentes. Mais Il y a de l'idée dans ce code qui viens de titiller mes cellules grises !!
En fait il recopie le mot de la list 1 dans la list2 chaque fois qu'il le rencontre. Je vais essayé de l'adapter à
mes deux textbox. Sachant que dans mon cas les données sont existantes au départ.

Je vais, sur l'action d'un bouton, recopier uniquement les données du textbox1 vers le textbox2 en me basant sur ton exemple.

Merci Chevalier, je posterai dans un exemple de source la solution dès que possible.
Commenter la réponse de thyphonfalcon
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 21 nov. 2006 à 22:43
0
Merci
Je m'y attendais, je regarde ça, avec 2 collections, c'est faisable.
Je te tiens au courant dans 5 min.

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
thyphonfalcon 41 Messages postés vendredi 27 octobre 2006Date d'inscription 12 mai 2007 Dernière intervention - 21 nov. 2006 à 22:43
0
Merci
En fait je vais faire autre chose même. La structure du document remonté est toujours la même sauf les 12 dernières position qui sont des chiffres correspondants à un code barre.

Je vais donc faire une recherche sur les 12 derniers numéros de chaque ligne et recopier uniquement les numéros identiques.

Voilà
Commenter la réponse de thyphonfalcon
thyphonfalcon 41 Messages postés vendredi 27 octobre 2006Date d'inscription 12 mai 2007 Dernière intervention - 21 nov. 2006 à 22:44
0
Merci
Mais j'attends quand même ta prochaine trouvaille ;-)
Commenter la réponse de thyphonfalcon
thyphonfalcon 41 Messages postés vendredi 27 octobre 2006Date d'inscription 12 mai 2007 Dernière intervention - 21 nov. 2006 à 22:51
0
Merci
un truc du genre me semble t'il pourrait fonctionner

For i = Len(Text1.Text) To 1 Step -1
    If Mid(Text1.Text, i, 1) &lt;&gt; " " Then MsgBox Mid(Text1.Text, i, 1): Exit For
Next i

Ici c'est la dernière position qui est affichée et le résultat donné dans une message box...mais çà c'est pas un soucis.
J'ettends ma sélection au 12 derniers chiffres et je place le résultat (si le même) dans un autre textbox.

Sauf que j'ai pas le commande comparative sur les lignes...ici je ne travaille qu'une chaine de caractère...mais je suis sur la voie !! enfin je crois tu en penses quoi ?
Commenter la réponse de thyphonfalcon
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 21 nov. 2006 à 22:55
0
Merci
Je connais pas tes besoins mais voici ce que je te propose, peu importe le nombre de données dans chaqque List :

        Dim cCol As New Collection, cCol2 As New Collection
        Dim i As Integer
        
    With List1
        .AddItem "un"
        .AddItem "deux"
        .AddItem "trois"
        .AddItem "quatre"
        .AddItem "cinq"
        .AddItem "un"
        .AddItem "un"
        .AddItem "deux"
        .AddItem "cinq"
        .AddItem "cinq"
    End With
    
On Error Resume Next
    For i =  0 To List1.ListCount - 1
        cCol.Add List1.List(i), CStr(List1.List(i))
        If Err.Number = 457 Then
            Err.Clear
            cCol2.Add List1.List(i), CStr(List1.List(i))
            If Not Err.Number = 457 Then List2.AddItem List1.List(i): Err.Clear
        End If
    Next i
    
    Set cCol = Nothing
    Set cCol2 = Nothing
    Err.Clear
On Error GoTo 0

~<small> Mortalino </small>~

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino
thyphonfalcon 41 Messages postés vendredi 27 octobre 2006Date d'inscription 12 mai 2007 Dernière intervention - 21 nov. 2006 à 22:57
0
Merci
si je raccourcis, voilà ce qu'il me donne sur ma dernière ligne de texte

MsgBox Right(txtEdition.text, 12)

résultat : 009010100038

Donc j'ai bien mes 12 derniers chiffres. mais de la dernière ligne uniquement.

Maintenant je dois soit, remonter à la première ligne, soit commencer d'en haut.
et comparer les résultats ligne à ligne.....mwais je me rends compte en le disant que j'aurai plus vite fait avec mon exportation sous excel lol !!!

LEs idées ce n'est pas ce qui manque...pffffffffffffff
Commenter la réponse de thyphonfalcon
thyphonfalcon 41 Messages postés vendredi 27 octobre 2006Date d'inscription 12 mai 2007 Dernière intervention - 21 nov. 2006 à 23:27
0
Merci
Tu veux que je te dise.....Chapeau bat  !!

Alors là, je suis sur le c....ça fonctionne nickel..... J'ai placé une listbox en lieu et place d'une textbox pour recevoir le résultat et
boum....les doublons ce sont affichés.......Sincérement un grand merci pour le temps passé là dessus

Fais en une source,poste là  car franchement là c'est nickel..

Je te remercie encore une fois pour ce BrainStorming  Mortalino Le mystérieux chevalier, "Provençal, le Gaulois"

Thyphon
Commenter la réponse de thyphonfalcon
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 21 nov. 2006 à 23:34
0
Merci
De rien, ça fait plaisir.
"Fais en une source"  >> beh c'est déjà fait et toi qui aime bien bosser avec Excel, peut-être en auras-tu l'utilité ?
Au cas où : http://www.vbfrance.com/codes/TRIEUR-DOUBLONS_38162.aspx

Bonne continuation !

@++





<hr width="100%" size="2" />

  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Commenter la réponse de mortalino

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.