IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comparaison de deux chaines de caractères [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2018
    Messages : 50
    Points : 63
    Points
    63
    Par défaut Comparaison de deux chaines de caractères
    Bonjour,
    Je voudrais comprendre le mécanisme qui me permettra de comparer deux chaine de caractères.
    voici mon problème:
    dans l'onglet Test1, j'ai les lignes suivantes:
    Windows server 2012
    Microsoft Windows Server 2012
    OPEN VMS 8
    Red Hat 5
    dans l'autre onglet Test2, j'ai les lignes suivantes:
    OPEN VMS 8
    Microsoft Windows Server 2012
    Red Hat 5 exemple 5.11
    je voudrais faire une comparaison entre Test1 et Test2 pour déterminer le nombre de mot identique?
    Merci de votre collaboration et de vos retour.
    Bien cordialement.
    MamaB

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    la demande mérite d'être clarifiée.

    Une copie écran des deux listes et le résultat attendu serait pertinent pour éviter de tourner en rond sur la notion de "mot" et l'angle d'analyse

  3. #3
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2018
    Messages : 50
    Points : 63
    Points
    63
    Par défaut Comparaison de deux chaines de caractères
    Bonjour,
    impossible pour moi de vous donner une copie d'écran, sachant que les données sont confidentiel.
    Dans l'onglet Test1, les donner ce trouvent dans la colonne E et pour Test2 colonne la colonne B
    Bien cordialement.

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    bonjour
    pas sure d'avoir compris la demande mais si tu cherches à comparer deux colonnes de deux onglets différents, et enregistrer dans un 3ème onglets en colonne A les codes identiques et en colonne B ceux qui sont présent en onglet 1 et non en onglet 2 et en colonne C l'inverse tu peux faire ainsi :
    NB : deux chaines écrites l'une avec espace et l'autre sans espace ou l'une avec "s" et l'autre sans "s" sont considérées différentes

    à tester et revenir avec plus de détail
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Sub testtttt()
    Application.ScreenUpdating = False
    Dim f1 As Worksheet
    Dim f2 As Worksheet
    Dim f3 As Worksheet
    Set f1 = Sheets("Test1")
    Set f2 = Sheets("Test2")
    Set f3 = Sheets("RESULTAT")
    Dim TblBD1
    Dim TblBD2
    Dim i As Integer
    Dim j As Integer
    Dim Lig As Long
    Dim Identique As Boolean
    Dim Test1NonTest2 As Boolean
    Dim Test2NonTest1 As Boolean
     
    f3.Cells.ClearContents
     
    f3.Cells(1, 1) = "IDENTIQUE"
    f3.Cells(1, 2) = "existe en test 1 et non en test 2"
    f3.Cells(1, 3) = "existe en test 2 et non en test 1"
     
     
     
     
    TblBD1 = f1.Range("A2:A" & f1.Range("A" & Rows.Count).End(xlUp).Row)
    TblBD2 = f2.Range("A2:A" & f2.Range("A" & Rows.Count).End(xlUp).Row)
    Lig = 2
     
    For i = LBound(TblBD1) To UBound(TblBD1)
        Identique = False
        Test1NonTest2 = False
        Test2NonTest1 = False
     
        '*************************************Article identique *********************************
        For j = LBound(TblBD2) To UBound(TblBD2)
            If TblBD2(j, 1) = TblBD1(i, 1) Then
                Identique = True
                Exit For
            End If
        Next j
     
        If Identique = True Then f3.Cells(Lig, 1) = TblBD2(j, 1)
           If f3.Cells(Lig, 1) <> "" Then Lig = Lig + 1
      Next i
     
      Lig = 2
        '*************************************Figure en test1 et non en Test2  *********************************
     
     
          Dim plage1 As Range
          Dim plage2 As Range
          Dim Cel As Range
          Dim dernligne As Long
       Set plage1 = f1.Range("A2:A" & f1.Range("A" & Rows.Count).End(xlUp).Row)
       Set plage2 = f2.Range("A2:A" & f2.Range("A" & Rows.Count).End(xlUp).Row)
     
       For Each Cel In plage1
       P = WorksheetFunction.CountIf(plage2, Cel.Value)
       If P = 0 Then f3.Cells(Lig, 2) = f1.Cells(Cel.Row, 1)
      If f3.Cells(Lig, 2) <> "" Then Lig = Lig + 1
       Next Cel
     
     '*************************************Figure en test2 et non en Test2 *********************************
     Lig = 2
      For Each Cel In plage2
       C = WorksheetFunction.CountIf(plage1, Cel.Value)
       If C = 0 Then f3.Cells(Lig, 3) = f1.Cells(Cel.Row, 1)
       If f3.Cells(Lig, 3) <> "" Then Lig = Lig + 1
       Next Cel
     
    MsgBox ("Controle effectué")
     
    Application.ScreenUpdating = True
    f3.Select
    End Sub
    un fichier comme test
    Fichiers attachés Fichiers attachés
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur Méthodes Industrialisation
    Inscrit en
    Octobre 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Méthodes Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2020
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par MamaB Voir le message
    Bonjour,
    impossible pour moi de vous donner une copie d'écran, sachant que les données sont confidentiel.
    Dans l'onglet Test1, les donner ce trouvent dans la colonne E et pour Test2 colonne la colonne B
    Bien cordialement.
    Bonjour MamaB,

    Joelevrai ne demande évidement pas les données confidentielles mais un exemple anonymisé de ta demande.

    Un peu comme dans ton premier message mais plus explicite.

    Comme ci-dessous si j'ai bien compris :

    Test1 :
    Nom : Capture.PNG
Affichages : 132
Taille : 2,6 Ko

    Test2 :
    Nom : Capture2.PNG
Affichages : 132
Taille : 2,3 Ko

    Résultat : 2 (OPEN VMS 8 et Microsoft Windows Server 2012)

    Zeabon

  6. #6
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Le résultat est 10 mots OU 2 chaines complètes de cellule

    Mais ça peut également être tout autre chose ! 11 mots car 2 fois 2012 ?

    D'où la nécessité de bien poser la définition de "mot"

  7. #7
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2018
    Messages : 50
    Points : 63
    Points
    63
    Par défaut Comparaison de deux chaines de caractères
    Bonjour,
    Merci pour votre aide et quelque explication sur ma demande:

    Je dois tester a partir de TEST1 les données dans TEST2.
    cad dans TEST1, j'ai deux fois la notion de Windows serveur 2012 et comparer avec TEST2 que les mots de TEST1 sont bien présent dans TEST2.
    le résultat doit être
    TEST1
    Windows server 2012 ok trouver
    Microsoft Windows Server 2012 ok trouver
    OPEN VMS 8 ok trouver
    Red Hat 5 ok trouver
    Merci de votre collaboration et de vos retour.
    Bien cordialement.
    MamaB

  8. #8
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Réponse en poste 4 faite hier le jeudi 22/10/2020 à 11h 01 minute reste sans suite ni aucune réaction mamaB !!!
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  9. #9
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2018
    Messages : 50
    Points : 63
    Points
    63
    Par défaut Comparaison de deux chaines de caractères
    Bonjours,
    Désoler pour le retard, j'ai été hospitaliser pour un problème de santé.
    Par rapport à ma demande, je voudrais savoir combien de mot sont identique entre Test1 et Test2.
    Merci de votre collaboration et de vos retours.
    Bien cordialement.
    MamaB

  10. #10
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    bonjour
    bonne rétablissement
    une tentative d'un autodidacte
    comparaison selon le pourcentage des ressemblance des lettres entre les deux chaines...j'espère que ça t'aide à avancer
    (fonction personnalisée trouvée sur ce super site)
    * fonction personnalisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function CompareMot(a As String, b As String) As Double
     Dim min As Long, max As Long, i As Long
     If Len(a) > Len(b) Then min = Len(b): max = Len(a) Else min = Len(a): max = Len(b)
     n = 0
     For i = 1 To min
      If Mid$(a, i, 1) = Mid$(b, i, 1) Then n = n + 1
     Next i
    If max <> 0 Then CompareMot = n / max * 100
    End Function
    code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub testtt()
    Application.ScreenUpdating = False
    Dim F1 As Worksheet
    Dim F2 As Worksheet
    Dim derlig As Long
    Dim derlig2 As Long
    Set F1 = Sheets("Test1")
    Set F2 = Sheets("Test2")
    derlig = F1.Cells(Rows.Count, 1).End(xlUp).Row
    derlig2 = F2.Cells(Rows.Count, 1).End(xlUp).Row
        Dim i As Long
        For i = 2 To derlig
        For J = 2 To derlig2
        If CompareMot(Trim(F1.Cells(i, 1).Text), Trim(F2.Cells(J, 1).Text)) > 15 Then
        F1.Cells(i, 2) = F2.Cells(J, 1)
        F1.Cells(i, 3) = CompareMot(Trim(F1.Cells(i, 1)), Trim(F2.Cells(J, 1)))
        End If
       Next J
        Next i
      Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  11. #11
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2018
    Messages : 50
    Points : 63
    Points
    63
    Par défaut Comparaison de deux chaines de caractères
    Bonjour et merci de ta réponse, je vais m'en inspirer pour l'intégrer dans ma procédure et te ferais un retour.
    Cordialement.
    MamaB

  12. #12
    Membre du Club
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juillet 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2018
    Messages : 50
    Points : 63
    Points
    63
    Par défaut Comparaison de deux chaines de caractères
    Bonjour,
    Je viens de tester la procédure mise à disposition et je ne comprends pas pourquoi la ligne 2 de Test1 n'ai pas été prise en considération dans les résultats :
    Test1
    Windows Server 2012
    Test2
    Microsoft Windows Sever 2012.
    Il y a trois mots identiques.
    Merci de ta collaboration et de ton retour.
    Biens cordialement.
    MamaB

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparaison de deux chaines de caractères
    Par khaled.mann dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/06/2009, 11h00
  2. Problème de Comparaison de deux chaines de caractéres
    Par developppez dans le forum Requêtes
    Réponses: 10
    Dernier message: 16/03/2009, 16h21
  3. comparaison de deux chaines de caractères
    Par Toomaaaaa dans le forum Langage
    Réponses: 2
    Dernier message: 29/10/2008, 18h03
  4. comparaison de deux chaines de caractères en asp
    Par MortDansLAme dans le forum ASP
    Réponses: 7
    Dernier message: 10/01/2008, 12h36
  5. comparaison de deux chaines de caractères
    Par zazou41 dans le forum C++
    Réponses: 6
    Dernier message: 27/02/2006, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo