Probleme de comparaison

Bonjours à tous,

J'ai actuellement un programme qui compare 2 valeurs ( une tirer d'un document extérieur qui a été taper à la main et l'autre directement taper à la main) dans des cases afin d'associer une ligne d'un document à une autre ligne d'un autre document,le problème étant que ma comparaison m'indique toujours vrai... même en passant sur la bonne ligne.

j'ai donc fait afficher via une msgbox les deux valeur lu par excel mais (de ce que je vois) ce sont les mêmes

j'ai aussi vu que le problème pouvait venir d'une comparaison non précise, càd que les chiffres pouvait être différent mais sur le bit le plus faible et non afficher, cependant les valeur ne sont pas issues de calculs donc je ne pense pas que ce pourrait être la cause de mon problème.

dans mon cas la premiere valeur comparé vient de cette formule :

=SI(A3="";"";INDEX('O:\Fichiers\Suivi cde\2018\[Suivi cde 2018.xlsm]cde en cours'!D:D;EQUIV(A3;'O:\Fichiers\Suivi cde\2018\[Suivi cde 2018.xlsm]cde en cours'!W:W;0)))

et me donne 32, cette valeur est stocké dans la case K3 (cells3,11)

ma deuxieme valeur est directement 32 stocké dans la case A23 (cells23,1)

or avec la comparaison suivant cela ne fonctionne pas :

                    While Workbooks(client).Sheets("C").Cells(ligne_conf, 1).Value <> Workbooks("Facturation.xlsm").Sheets("Facturation").Cells(i, 11).Value 
                        ligne_conf = ligne_conf + 1
                    Wend

"client" correspond au fichier client qui vient d’être ouvrir précédemment par la même macro

"ligne_conf" est la ligne que l'on cherche

"i" est la ligne actuelle de l'autre fichier.

Toute solution est bonne à prendre donc n'hésité pas à proposer les vôtres.

Cordialement

Arthur

Bonjour,

Peux-tu joindre tes 2 fichiers?

cela permettra au forum de t'apporter une aide adaptée.

Cdlt.

bonjour,

comme mon document contient des données confidentielles j'ai essayer de reproduire le même cas avec des fichiers tests, malheureusement je n'ai pas réussi à retrouver ce problème.

Je ne peux donc que te donné des descriptions de mes fichiers.

Si tu as des question sur ce qui concerne mes fichiers n'hésite pas

Bien cordialement.

Arthur

Re,

Pas de bras pas de chocolat.

Cdlt.

Re,

peux tu faire qq chose avec juste le code de ma feuille ?

dans le doute je te joint ça

(le programme principal n'est pas encore fini)

Public Sub MAJ_flag()

MsgBox "Cette opération peut prendre un certain temps." & vbLf & "Veuillez patienter", vbInformation

    Application.ScreenUpdating = False
'    Application.DisplayAlerts = False
    Application.EnableEvents = False

    Windows("Facturation.xlsm").Activate
    Workbooks("Facturation.xlsm").Sheets("Facturation").Select
    Workbooks("Facturation.xlsm").Sheets("Facturation").Copy Before:=Sheets(1)

CHEMIN = "F:\Fichiers\Arthur\2018\"

no_der_ligne_prec = 1
Do
no_der_ligne_prec = no_der_ligne_prec + 1
Loop While (Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Cells(no_der_ligne_prec, 13).Value <> "")

    no_der_ligne = Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Range("A" & Rows.Count).End(xlUp).Row
    verr1 = 0
    For i = no_der_ligne_prec To no_der_ligne
        If Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Cells(i, 13) <> "x" Then
            If Left(Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Cells(i, 1).Value, 3) = "CPC" Then
                If Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Cells(i, 3).Value <> "#N/A" Then

'                    On Error GoTo erreur

                    If verr1 = 0 Then
                    tableau
                    verr1 = 1
                    End If
                    client = Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Cells(i, 10).Value & ".xls"
                    If Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Cells(i, 3).Value <> Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Cells(i - 1, 3).Value Or i = no_der_ligne_prec Then
                        Workbooks.Open (CHEMIN & client)
                    End If
                    ligne_conf = 20
                    While Workbooks(client).Sheets("C").Cells(ligne_conf, 1).Value <> Workbooks("Facturation.xlsm").Sheets("Facturation").Cells(i, 11).Value ' ERREUR ICI
                        ligne_conf = ligne_conf + 1
                    Wend
                    Range("A" & ligne_conf & ":C" & ligne_conf).Copy
                    Range("E" & ligne_conf & ":G" & ligne_conf).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                    Application.CutCopyMode = False
                    Range("A" & ligne_conf & ":C" & ligne_conf).ClearContents
                    Workbooks(client).Sheets("C").Cells(ligne_conf, 6).Value = Workbooks("Facturation.xlsm").Sheets("Facturation").Cells(i, 6).Value
                    Workbooks(client).Save
                    If Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Cells(i + 1, 3).Value <> Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Cells(i, 3).Value Then 'si la prochaine ligne ne traite pas le meme client alors on ferme le fichier du client
                        Workbooks(client).Close
                    End If

                    j = 1
                    While (Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Cells(i, 1).Value <> Workbooks("Facturation.xlsm").Sheets("Facturation").Cells(j, 1).Value)
                        j = j + 1
                    Wend
                    Workbooks("Facturation.xlsm").Sheets("Facturation").Cells(j, 13).Value = "x"

                End If
            End If

        Workbooks.Open (CHEMIN & "Suivi cde 2018_arthur.xlsm")

        ligne_cde = 20
        While Workbooks("Suivi cde 2018_arthur.xlsm").Sheets("cde en cours").Cells(ligne_cde, 23).Value <> Workbooks("Facturation.xlsm").Sheets("Facturation").Cells(i, 1).Value
            ligne_cde = ligne_cde + 1
        Wend
        Workbooks("Suivi cde 2018_arthur.xlsm").Sheets("cde en cours").Cells(ligne_cde, 49).Value = "x"
        Workbooks("Suivi cde 2018_arthur.xlsm").Sheets("cde en cours").Cells(ligne_cde, 50).Value = Workbooks("Facturation.xlsm").Sheets("Facturation").Cells(i, 2).Value

erreur:
            On Error GoTo -1
        End If
    Next

    Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Delete

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.EnableEvents = True

End Sub

MsgBox Workbooks("Facturation.xlsm").Sheets("Facturation (2)").Cells(no_der_ligne_prec, 11).Value
ligne_conf = 23
MsgBox Workbooks(client).Sheets("C").Cells(ligne_conf, 1).Value
MsgBox Workbooks(client).Sheets("C").Cells(ligne_conf, 1).Value <> Workbooks("Facturation.xlsm").Sheets("Facturation").Cells(i, 11).Value

MsgBox 32 <> Workbooks("Facturation.xlsm").Sheets("Facturation").Cells(i, 11).Value
MsgBox 32 <> Workbooks(client).Sheets("C").Cells(ligne_conf, 1).Value
Sub tableau()

    der_ligne = Workbooks("Facturation.xlsm").Worksheets("Facturation (2)").Range("A" & Rows.Count).End(xlUp).Row

    Workbooks("Facturation.xlsm").Worksheets("Facturation (2)").ListObjects.Add(xlSrcRange, Workbooks("Facturation.xlsm").Worksheets("Facturation (2)").Range("$A$1:$M" & der_ligne), , xlYes).Name = "tableau"

    For i = 2 To der_ligne
        If Cells(i, 13) <> "" Then
            Workbooks("Facturation.xlsm").Worksheets("Facturation (2)").ListObjects("tableau").Range.AutoFilter Field:=13, Criteria1:="="
            Exit For
        End If
    Next

    ActiveWorkbook.Worksheets("Facturation (2)").ListObjects("tableau").Sort. _
        SortFields.Clear
    ActiveWorkbook.Worksheets("Facturation (2)").ListObjects("tableau").Sort. _
        SortFields.Add Key:=Range("tableau[[#All],[Nom client]]"), SortOn:= _
        xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Facturation (2)").ListObjects("tableau").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Re,

C'est une question à poser à Merlin.

Tu souhaites une aide du forum, mais tu ne fournis pas les éléments utiles pour que nous puissions de répondre favorablement.

Alors, que fait-on?

Cdlt.

Re,

merci de t'investir dans ma galère,pour l'instant je regarde pour censurer les 3 documents nécessaires, et modifier les formules afin qu'elle corresponde au changements effectués.

Dès que ces changements seront fait je t'envoie les fichiers.

Je te tiens au courant si tu veux.

Cordialement

Arthur

Re,

Je rectifie un point : Tu envoies tes fichiers au forum.

Le forum se fera alors une joie de répondre à tes besoins (moi ou un autre intervenant).

Cdlt.

Re,

oui bien sur, scuse faute de langage

Re,

Après quelques modifications voici un zip contenant 3 fichiers qui sont relier par des liens, dans le code du fichier facturation la variable CHEMIN doit être changé avec le bon chemin du fichier.

le lien :

Cordialement.

Arthur.

petit up

Bonjour à tous,

J'ai trouver la solution à mon problème, le format de l'une des cellule était en texte ce qui faisait qu'elle n'était pas égal car selon moi(à débattre ou approuvé) une chaîne de texte (en C et je pense ici aussi) se fini par un "\0" afin de marquer la fin de la chaine, ainsi "32" <> "32\0" d'ou l’inégalité sortie par excel.

Je tien tout de même à remercier Jean-Eric pour sa tentative sont aide

Cordialement.

Arthur.

Rechercher des sujets similaires à "probleme comparaison"