Problème avec une macro assez simple

  • Initiateur de la discussion Initiateur de la discussion WUTED
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
 
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
 
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.
 
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+
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
211
Réponses
5
Affichages
287
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
532
Réponses
2
Affichages
162
Réponses
10
Affichages
298
Réponses
4
Affichages
478
Retour