Comparer chaine

Bonjour à tous, je viens vers vous pour une question, j'ai un travail à faire mais je n'y arrive pas étant toujours un débutant en vb.

J'ai un fichier dans lequel on retrouve une colonne "Message" ou tous les utilisateurs inscrivent un commentaire avec un type, happy, sad, idea. Dans cette même colonne on retrouve les admins qui peuvent répondre aux utilisateurs de type "reply".

La forme de réponse est toujours la même:

Réponse au message : " " (avec les 30 premiers caractères du message utilisateurs)

Ex :

Utilisateur : super journée, je me suis bien amusé

Admin : Réponse au message : "super journée, je me suis bien "

Déjà ici il faudrait récupérer ce qu'il y a entre guillemet de la réponse administrateur et le comparer à toutes la colonne et trouver quel message utilisateur correspond à ça, lorsque on trouve on met OUI à côté afin de signifier que cet utilisateur a eu une réponse.

Sauf que voici le problème majeur, un utilisateurs peut poster plusieurs messages et un administrateur peut donc répondre à plusieurs de ses messages sauf que même si un admin lui répond plusieurs fois je veux le compter que 1 fois, pour cela il faudrait analyser son numéro de téléphone et si il a déjà eu une réponse laisser la cellule vide.

A la fin on devrait donc se retrouver avec une colonne à part avec des OUI/NON/case vide

L'objectif final est de savoir combien d'utilisateur n'a pas eu de réponse

Je vous laisse un fichier avec un exemple de données afin que vous compreniez mieux.

Je sais que je vous demande beaucoup, mais j'ai énormément de mal tout seule, si au moins quelqu'un aurait une idée ou quelque chose je suis preneur.

Merci pour votre attention

Voici aussi un bout de programme que j'ai essayé de faire

sub contrib ()
Dim i As Integer, dl As Integer
Workbooks("fichier_client").Activate
Worksheets("Données brutes").Activate
Range("D2").select
Range(Selection, Selection.End(xlDown)).Select
dl = Range("D" & Rows.Count).End(xlUp).Row

For i = 2 to dl
Select case Cells(i, 4).Value
    Case"reply"
    'passe en majuscule
    AdressText=Ucase(.Range("I" & i))
    'Recuperer le replay et extraire ce qu'il y a entre parenthèse afin de pouvoir le comparer

    'comparer la chaine de 30caractères avec les autres messages et si la chaine correspond
    ' à un message alors mettre OUI à 
         'côté du message utilisateur pour dire que l'utilisateur a eu une réponse

    'Comparer le numéro de téléphone de l'utilisateur car il peut mettre plusieurs coms et un administrateur peut lui
    'répondre plusieurs fois, si on retombe sur 2eme messages répondu laisser 
    'une case vde à côté du 2eme message car le 1er     
    'aura déjà un OUI à côté
End sub

bonjour,

une proposition

Option Explicit
Sub aargh()
    Dim reponse(), dl&, i&, j&, k&, rep$, dict As Object, mes$, mc$
    Set dict = CreateObject("scripting.dictionary")
    With Sheets("feuil1")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        ' on charge une table des "reply"
        For i = 2 To dl
            If .Cells(i, 1) = "reply" Then
                rep = .Cells(i, 4)
                If Left(rep, 7) = "Réponse" Then
                    k = k + 1
                    ReDim Preserve reponse(k)
                    rep = Mid(rep, 23)
                    reponse(k) = Left(rep, InStr(rep, Chr(34)) - 1)
                End If
            End If
        Next i
        ' on passe en revue tous les messages et on détermine s'ils ont reçu une réponse ou si le N° de téléphone a déja reçu une réponse
        For i = 2 To dl
            If .Cells(i, 1) <> "reply" Then
                mes = .Cells(i, 4)
                If dict.exists(.Cells(i, 2).Value) Then
                    .Cells(i, 7) = "" 'déjà une réponse pour ce n°
                Else
                    For j = 1 To k
                        mc = Left(mes, Len(reponse(j)))
                        If mc = reponse(j) Then
                            dict.Add .Cells(i, 2).Value, 1
                            .Cells(i, 7) = "OUI" 'une réponse est trouvée
                            Exit For
                        End If
                    Next j
                    If .Cells(i, 7) = "" Then .Cells(i, 7) = "NON" 'pas de réponse trouvée
                End If
                Else
                .Cells(i, 7) = "REPLY" 'ligne contenant une réponse d'un administrateur
            End If
        Next i
    End With
End Sub

Merciiiiiiiiiiiiiiiiiiii

Rechercher des sujets similaires à "comparer chaine"