Aide pour macro VBA

Bonjour à tous,

Le but ici, c'est que pour un même numéro de sinistre ( colonneK) et si il y a un montant identique parmi ce numéro de sinistre alors il met un commentaire en colonne M " ATTENTION A REVOIR".

J'ai essayer de coder ça, sauf que sa fonctionne pas vraiment, il me met pas le commentaire ou il faut.

Voici un exemple du résultat attendu en colonne M, sur le fichier Excel en pièce jointe.

Sub Macro6()

With Sheets("SUIVTRANS EN COURS")
    Derligne = .Range("A" & Rows.Count).End(xlUp).Row

For j = 3 To Derligne
For jj = j + 1 To Derligne

       'ATTENTION A REVOIR (5)
        If .Cells(j, 10).Value = .Cells(jj, 10).Value And .Cells(j, 11).Value = .Cells(jj, 11).Value Then
        .Cells(j, 13).Value = "ATTENTION A REVOIR"
        .Cells(jj, 13).Value = "ATTENTION A REVOIR"

       End If
       Next jj
       Next j

       End With
End Sub

Bonjour,

après avoir copier la macro dans le classeur ( et modifier le nom de la feuille), le résultat obtenu correspond à celui attendu ???

Soit je n'ai rien compris, soit il manque des précisions ...

Bonjour,

Chez moi ton code fonctionne parfaitement !

J'ai simplement renommé l'onglet "SUIVTRANS EN COURS" comme écrit dans la macro.

Le commentaire s'écrit à quel endroit chez toi ?

Cordialement,

Effectivement ça fonctionne car j'ai j'ai 6000 lignes à comparer donc parfois il donne pas le bon résultat.

Les amis je voudrais savoir aussi, si c'est possible de faire : si il trouve le même montant un en positif et un en négatif et que ça fait 0 alors je mets une commentaire "ANNULATION TECHNIQUE".

Exemple dans le fichier :

71,18 et -71,18 ça fait 0 donc sur ces 2 lignes on mettra le commentaire "ANNULATION TECHNIQUE". Attention il faut bien que ce soit le même montant et non plusieurs montants qui font = à 0.

Je n'ai pas trop creusé mais tu peux faire une comparaison de ce type

Sub Test()
    Dim Resultat As String
    Dim A As Integer
    Dim B As Integer
    A = -12
    B = 12

    If B = -A Then 'faire précéder la variable ou la référence de cellule par le signe moins
        Resultat = "ANNULATION TECHNIQUE"
    End If

    Debug.Print Resultat

End Sub

Oui mais la je peux pas lui mettre tous les montants, c'est a lui de les trouver parmi mes 6000 lignes. Donc pour la variable A et B comment je peux faire ?

Sur le principe, ça ressemble étrangement à la macro6!

Sub Macro6()

With Sheets("SUIVTRANS EN COURS")
    Derligne = .Range("A" & Rows.Count).End(xlUp).Row

For j = 3 To Derligne
For jj = j + 1 To Derligne

       'ATTENTION A REVOIR (5)
        If .Cells(j, 10).Value = .Cells(jj, 10).Value And .Cells(j, 11).Value = .Cells(jj, 11).Value Then
        .Cells(j, 13).Value = "ATTENTION A REVOIR"
        .Cells(jj, 13).Value = "ATTENTION A REVOIR"

       End If
       Next jj
       Next j

       End With
End Sub

Juste modifier And .Cells(j, 11).Value = .Cells(jj, 11).Value puisqu'on veut les valeurs identiques au signe près.

et modifier le message affiché.

Par contre les informations écrites par la macro6 d'origine risquent d'être écrasées par ce nouveau traitement.

A+

Bonjour,

surtout, pourquoi s'embêter à faire tout ça, là où quelques MFC suffisent à mettre en évidence les différentes erreurs possibles... ?

Exact !

Il faut tester les valeurs dans la boucle FOR NEXT.

L'idée serait de faire 2 passages successifs afin de traiter en premier les sommes qui s'annulent + et - du même montant.

Lors du second passage on peut alors traiter les lignes A REVOIR.

Pour éviter que les lignes déjà traitées lors du premier passage, il faut tester (à mon sens) que la ligne concernée de la colonne M est vide (Fonction ISEMPTY)

Je te propose donc ceci: (Peut-être que d'autres contributeurs trouveront le moyen d'éviter deux passages, je n'ai pas trop le temps de chercher, désolé).

Sub TEST()

With Sheets("Feuil2") 'ATTENTION: NOM DE L'ONGLET MODIFIÉ
    Derligne = .Range("A" & Rows.Count).End(xlUp).Row

For j = 3 To Derligne
For jj = j + 1 To Derligne

       'Annulation technique (SIGNE MOINS sur -.cells(jj,11).Value)
        If IsEmpty(.Cells(j, 13)) And IsEmpty(.Cells(jj, 13)) And .Cells(j, 10).Value = .Cells(jj, 10).Value And .Cells(j, 11).Value = -.Cells(jj, 11).Value Then
        .Cells(j, 13).Value = "ANNULATION TECHNIQUE"
        .Cells(jj, 13).Value = "ANNULATION TECHNIQUE"
        End If
       Next jj
       Next j

'2ème passage pour A REVOIR
For j = 3 To Derligne
For jj = j + 1 To Derligne

       'A REVOIR
        If IsEmpty(.Cells(j, 13)) And IsEmpty(.Cells(jj, 13)) And .Cells(j, 10).Value = .Cells(jj, 10).Value And .Cells(j, 11).Value = .Cells(jj, 11).Value Then
        .Cells(j, 13).Value = "ATTENTION A REVOIR"
        .Cells(jj, 13).Value = "ATTENTION A REVOIR"
        End If
       Next jj
       Next j

       End With
End Sub
Rechercher des sujets similaires à "aide macro vba"