Décalage de ma formule VBA après incrémentation de lignes

Bonjour à vous,

SVP j'ai un méga problème que je n'arrive pas à résoudre, et je vous avoue ne pas avoir su comment chercher sur le site si mon problème avait déjà été posé auparavant.

Voilà, donc ci-joint un fichier avec plusieurs feuilles, mais seule la feuille VALIDATION nous intéresse ici:

Il y a un code VBA sur la feuille Validation que voici :

Private Sub Worksheet_Change(ByVal Target As Range)

 If Target.Column = 11 Then
    If Target = "Non Envoyée" Or Target = "A Envoyer" Or Target = " -" Then
             Cells(Target.Row, "L").ClearContents
         Else
             Cells(Target.Row, "L") = Date
    End If
 End If

 If Target.Column = 9 Then
     If Target = "Validée" Then
            Cells(Target.Row, "J") = Date
        Else
            Cells(Target.Row, "J").ClearContents
    End If
 End If

 If Target.Column = 5 Then
     If Target = 0 Then
            Cells(Target.Row, "I") = "Facture à 0"
            Cells(Target.Row, "K") = " -"
         Else
            Cells(Target.Row, "I").ClearContents
     End If
 End If
End Sub

Selon le libellé de la colonne I sélectionné, il y aura des petits changements sur la colonne K (au niveau du libellé) et de couleur sur les colonnes A, B & I comme vous pourrez le constater.

Je suis amateur en VBA alors je ne sais pas si par rapport à ce que j'ai fait, il y'a plus simple ou plus intelligent mais en tous cas le résultat fonctionne comme je le désire... enfin presque !

Mon problème est que au fur et à mesure que des lignes s'incrémentent (en ligne 2 uniquement) dans la feuille Validation, les valeurs des colonnes I à L ne suivent plus (vers le bas).

Comment puis-je faire pour que ce décalage se fasse de manière "régulière".

Je ne comprends pas pourquoi l'incrémentation de ligne décale mon code et donc mes valeurs des cellules de I à L.

J'espère avoir été assez clair, et merci d'avance à ceux qui pourront m'aider !

14xld-macxvalfa.xlsm (60.58 Ko)

Bonjour,

Tu pourrais tester le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)

 If Target.Column = 11 Then
    If Target = "Non Envoyée" Or Target = "A Envoyer" Or Target = " -" Then
             Cells(Target.Row, 12).ClearContents
         Else
             Cells(Target.Row, 12) = Date
    End If
 End If

 If Target.Column = 9 Then
     If Target = "Validée" Then
            Cells(Target.Row, 10) = Date
        Else
            Cells(Target.Row, 10).ClearContents
    End If
 End If

 If Target.Column = 5 Then
     If Target = 0 Then
            Cells(Target.Row, 9) = "Facture à 0"
            Cells(Target.Row, 11) = " -"
         Else
            Cells(Target.Row, 9).ClearContents
     End If
 End If
End Sub

Salut James007,

Merci de ta réponse... ça ne fonctionne pas. LE "bug" est toujours le même.

Re,

En relisant ton message initial ... je me rends compte que je n'ai pas compris ce que tu décris comme le décalage de ta formule

Dans mes tests ... tout se passe normalement ... sans décalage ...

Si tu regardes dans mon fichier, ligne 5 et ligne 8. Les deux lignes sont en état "Validée"

Donc lorsque j'aurais de nouvelles factures (9576,9577,9778...) les lignes vont donc se décaler vers la bas (puisque c'est trié par défaut par ordre décroissant de la colonne A). en toute logique les factures 9570 et 9573 devraient continuer à garder leur état "Validée" mais ce n'est hélas pas le cas. La valeur validée reste figée en ligne 5 et 8 au lieu de descendre d'autant de lignes que de novuelles factures incrémentées.

J'espère cette fois-ci être plus clair, et merci de ton aide


Re,

En réalité je me rends compte que le bug se produit lorsque je clique sur Actualiser de l'onglet Données (Excel 2013)

NB: Les colonnes A à H s'alimentent automatiquement à partir d'un BDD SQL.

Re,

D'après ton dernier commentaire, c'est le fait que la table soit rafraichie qui serait la cause de ton décalage ...

J'ai l'impression que ce sont les MFC qui s'entremêlent ... si un tri est appliqué ... me trompe-je ...???

Qu'est ce que c'est MFC et tri appliqué ?


Quelque chose me dit que tu vas réussir à trouver la solution à mon Bug

En effet oui c'est le rafraîchissement de ma feuille qui provoque ce bug et non l'incrémentation (qui pourrait être manuelle)

Au moins j'ai déjà compris ça

Re,

Tu devrais prendre le temps de revoir toutes tes MFC ... ( mises en forme condtionnelles ... pour appliquer couleurs ...)

https://www.excel-pratique.com/fr/cours/excel_mises_en_forme_conditionnelles_sur_mesure.php

En attendant ta réponse je suis allé chercher un peu ce que tu as voulu dire et je pense aussi que le bug vient du MFC 5Mise en forme conditionnelle)

Par contre pour le tris appliqué... En fait c'est lors de l'extraction des données que je demande dans le Query à ce que le résultat me soit renvoyé trié par ordre décroissant des numéro de factures.

Merci

Re,

En faisant une copie de ton propre fichier ... dans laquelle tu supprimes toutes les MFC ... je pense que tout fonctionnera normalement.

Si c'est le cas, il te faudra simplement re-construire proprement tes mises en forme condtionnelles ...

Rechercher des sujets similaires à "decalage formule vba incrementation lignes"