Comparer 2 cellules identiques sur 2 classeurs

Bonjour,

Je cherche à comparer 2 cellules (avec texte identique) et en fonction de la vérification j'affiche dans un msgbox "ok" ou" nok"

Pour les cellules qui contiennent du texte sans espace ça affiche bien "ok" dans le msgbox. Par contre dès qu'il y a un espace dans le texte, EXCEL dit que les cellules sont différentes et affiche "nok" (Ex: "NIVEAU BAS")

Malheureusement je ne peux pas m'affranchir des espaces dans les cellules car le fichier est protégé par un autre utilisateur.

Je sais que dans certains cas on peut utiliser "_" pour s’affranchir des espaces mais je ne sais pas comment modifier mon code :(

Pourriez-vous me venir en aide svp ?

Voici un exemple de code:

Sub comparaison_cellules()

Dim myfile As String, 
Dim REP As FileDialog

myfile = Application.GetOpenFilename(, , "Sélectionnez le fichier")

     Set wbks = Workbooks.Open(myfile)
    Set Ws = wbks.Sheets("Feuil1")
    Set wbkc = ThisWorkbook

    If  wbkc.ActiveSheet.Range("G18") = Ws.Range("G52") Then
    MsgBox "ok"
    Else
    MsgBox "nok"
    End If

End Sub

Les cellules G18 et G52 contiennent "NIVEAU BAS" toutes les 2 et pourtant la vérification donne "nok" dans le msgbox...

Bonne soirée

JB

Bonjour,

Essayez cette fonction :

Function TestCellule2(ByVal Contenu1 As String, ByVal Contenu2 As String) As String

Dim I As Integer, NbMots As Integer, MotsTrouves As Integer
Dim Tab1 As Variant, Tab2 As Variant
Dim CaractereATester As String

    TestCellule2 = "Nok"
    If Len(Trim(Contenu1)) <> Len(Trim(Contenu2)) Then Exit Function

    Tab1 = Split(Trim(Contenu1), " ")

    ' Cas où il n'y aurait pas d'espace
    If UBound(Tab1) = 0 Then
      If Contenu1 = Contenu2 Then
         TestCellule2 = "Ok"
         Exit Function
      End If
    End If

    ' Sinon
    CaractereATester = Mid(Trim(Contenu2), Len(Tab1(0)) + 1, 1) ' On prend le caractère de Contenu2 dont la position correspond à celui suivant le    'premier mot dans Contenu1
    ' CaractereATester, s'il est différent, est implicitement le séparateur de mots dans Contenu2
    Tab2 = Split(Trim(Contenu2), CaractereATester)

    If UBound(Tab1) <> UBound(Tab2) Then Exit Function

    NbMots = UBound(Tab1) + 1
    MotsTrouves = 0

    For I = LBound(Tab1) To UBound(Tab1)
        If Tab1(I) = Tab2(I) Then MotsTrouves = MotsTrouves + 1
    Next I

    If MotsTrouves = NbMots Then TestCellule2 = "Ok"

End Function

Pour tester :

    Debug.Print TestCellule2(Sheets("Feuil2").Range("G18"), Sheets("Feuil1").Range("G52"))

Bonjour Eric,

Merci beaucoup pour votre retour. Malheureusement je suis trop peu à l'aise avec VBA pour analyser votre code

Où dois-je placer ces codes ? Dans un module ?

Merci encore !

JB

Bonjour Eric,

Merci beaucoup pour votre retour. Malheureusement je ne peux pas tester votre code car je n'ai pas la fonctionnalité ActiveX sur la suite Office 2016 de mon entreprise :(

Existe t-il une alternative ou est-ce impossible de faire ce genre de comparaison sans Active X ?

Très bonne journée

JB

Rechercher des sujets similaires à "comparer identiques classeurs"