Problème avec une macro assez simple

WUTED

XLDnaute Occasionnel
Bonjour le forum,

J'ai fait une macro pour répondre à ce post https://www.excel-downloads.com/thr...n-transfert-ligne-feuille-a-une-autre.184479/, et je ne comprends pas son étrange comportement. Je m'explique : le code de ma macro est censé parcourir la première feuille, récupérer le statut de chaque ligne et les copier selon leur statut dans la feuille 2 ou la feuille 3. De plus, je me contente de colorer la ligne en rouge dans un cas, et en vert dans l'autre. Tout se passe bien pendant la première exécution, seulement quand je veux, ensuite, rajouter un ligne dans ma feuille 1, elle se colore au fur et à mesure sans raison apparente, et j'arrive vraiment pas à comprendre pourquoi, j'ai commenté ma macro en espérant que cela me permettrait de trouver le problème, en vain.

Voici ma macro :

VB:
Sub Tri()
    Dim dernLigneAcc As Integer
    Dim dernLigneRefus As Integer
    'Parcours la feuille jusqu'à la dernière ligne
    For j = 1 To Sheets("analyse").Range("A65536").End(xlUp).Row
        'Si le statut est "Accepté" et que la ligne n'est pas verte alors
        If Sheets("analyse").Range("G" & j).Value = "Accepté" And Sheets("analyse").Range("A" & j).Interior.ColorIndex <> 4 Then
            'On récupère le numéro de la dernière ligne de la feuille "accepter"
            dernLigneAcc = Sheets("accepter").Range("A65536").End(xlUp).Row
            For i = 0 To 6
                'On ajoute à la feuille "accepter" la ligne
                Sheets("accepter").Range("A" & dernLigneAcc + 1).Offset(0, i).Value = Sheets("analyse").Range("A" & j).Offset(0, i).Value
                'On colore la ligne en vert sur la feuille "analyse"
                Sheets("analyse").Range("A" & j).Offset(0, i).Interior.ColorIndex = 4
            Next
            'On ajoute la date de l'opération dans la feuille "accepter"
            Sheets("accepter").Range("A" & dernLigneAcc + 1).Offset(0, 6).Value = Now()
        'Sinon si le statut est "Refusé" et que la ligne n'est pas rouge alors
        ElseIf Sheets("analyse").Range("G" & j).Value = "Refusé" And Sheets("analyse").Range("A" & j).Interior.ColorIndex <> 3 Then
            'On récupère le numéro de la dernière ligne de la feuille "refuser"
            dernLigneRefus = Sheets("refuser").Range("A65536").End(xlUp).Row
            For i = 0 To 6
                'On ajoute la ligne à la feuille "refuser"
                Sheets("refuser").Range("A" & dernLigneRefus + 1).Offset(0, i).Value = Sheets("analyse").Range("A" & j).Offset(0, i).Value
                'On colore la ligne en rouge sur la feuille "analyse"
                Sheets("analyse").Range("A" & j).Offset(0, i).Interior.ColorIndex = 3
            Next
            'On ajoute la date de l'opération dans la feuille "refuser"
            Sheets("refuser").Range("A" & dernLigneRefus + 1).Offset(0, 6).Value = Now()
        End If
    Next
End Sub

Et je joins également le fichier.
Merci d'avance pour votre aide,
Bonne journée,
WUTED
 

Pièces jointes

  • bugCouleur.xlsm
    21.7 KB · Affichages: 49

frangy

XLDnaute Occasionnel
Re : Problème avec une macro assez simple

Bonjour,

J'ai fait l'essai avec Excel 2007 (PC) et je n'ai rencontré aucun problème.
Le programme se déroule correctement et je ne constate pas d'anomalie lors de l'ajout d'une ligne.

Cordialement.
 

WUTED

XLDnaute Occasionnel
Re : Problème avec une macro assez simple

Bonjour frangy,

J'ai ressayé dans le doute, et après exécuté ma macro, si j'ajoute à la main "TEST" par exemple dans la première colonne, ma cellule se colore automatiquement en vert, merci d'avoir regardé dans tous les cas.

WUTED
 

WUTED

XLDnaute Occasionnel
Re : Problème avec une macro assez simple

Bonjour néné06,

Tout d'abord, merci pour ta réponse, c'est en effet une solution qui fonctionne même si ça implique quelques restrictions pour l'utilisateur.

Je reste cependant très curieux de connaitre la raison de mon problème, j'ai beau examiner mon code depuis hier, j'ai forcément dû passer à côté de quelque chose.
 

néné06

XLDnaute Accro
Re : Problème avec une macro assez simple

Re,
Je pense que la couleur est mémorisée donc en mémorisant la couleur à blanc, cela devrait convenir.

Next
Sheets("analyse").Range("A" & j).Offset(1, 1).Interior.ColorIndex = 2
End Sub

A+
 

frangy

XLDnaute Occasionnel
Re : Problème avec une macro assez simple

Re,

Je pense tenir une explication :
Options Excel / Options avancées / Options d’édition / Etendre les formules et formats de plage de données
Par défaut, Excel met automatiquement en forme les nouvelles données tapées à la fin d’une plage (plage : deux cellules au minimum d’une feuille de calcul. Une plage peut contenir des cellules adjacentes ou non adjacentes.) pour les faire correspondre aux lignes précédentes, à condition que ces mises en forme apparaissent dans au moins trois des cinq dernières lignes précédant la nouvelle. Excel copie aussi automatiquement les formules répétées dans au moins trois des cinq dernières lignes précédant la nouvelle et les étend à celle-ci.

Cordialement.
 

Discussions similaires

Réponses
0
Affichages
175

Statistiques des forums

Discussions
312 429
Messages
2 088 351
Membres
103 824
dernier inscrit
frederic.marien@proximus.