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

MACx

XLDnaute Occasionnel
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 :

Code:
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 !
 

Pièces jointes

  • XLD_MACxValFA.xlsm
    60.7 KB · Affichages: 55
  • XLD_MACxValFA.xlsm
    60.7 KB · Affichages: 54
  • XLD_MACxValFA.xlsm
    60.7 KB · Affichages: 62

Pierrot93

XLDnaute Barbatruc
Re : Décalage de ma formule VBA après incrémentation de lignes

Bonjour,

pas ouvert ton fichier, mais déjà pour éviter que ta macro boucle, utilise ceci :

Code:
Application.EnableEvents = False
'ton code
Application.EnableEvents = True

bon après midi
@+
 

MACx

XLDnaute Occasionnel
Re : Décalage de ma formule VBA après incrémentation de lignes

Désolé mais tu parles à un méga débutant en VBA, et je n'ai pas trop compris ce que tu veux dire... :(
Par ailleurs est ce que le code que tu m'a proposé je dois le mettre à l'intérieur de mon Private Sub ou pas besoin ?
Merci de ton aide
 

Pierrot93

XLDnaute Barbatruc
Re : Décalage de ma formule VBA après incrémentation de lignes

Re,

comme ceci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False

 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
Application.EnableEvents = True

End Sub
 

MACx

XLDnaute Occasionnel
Re : Décalage de ma formule VBA après incrémentation de lignes

En fait ta formule ne change rien à mon bug :/

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 nouvelles factures incrémentées.

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.
J'espère cette fois-ci être plus clair, et merci de ton aide :)
 

MACx

XLDnaute Occasionnel
Re : Décalage de ma formule VBA après incrémentation de lignes

PLOP PLOP PLOP !!! Mais oui!!! il suffisait juste de faire ça !!!
Mes premiers essais sont satisfaisants !
Vraiment Merci beaucoup !
Si finalement ça ne s'avère pas concluant je reviendrai t'embêter ;) mais je crois que ça ne risque pas d'arriver ;)
 

MACx

XLDnaute Occasionnel
Re : Décalage de ma formule VBA après incrémentation de lignes

Par contre est-ce qu'il y aurait un code VBA qui me dirigerai directement vers la dernière ligne de mon tableau dès l'ouverture du fichier ?
ça, ce serait vraiment parfait.
Merci encore
 

Pierrot93

XLDnaute Barbatruc
Re : Décalage de ma formule VBA après incrémentation de lignes

Re,

dans le module "thisworkbook" :
Code:
Option Explicit
Private Sub Workbook_Open()
With Application
    .EnableEvents = False
    .Goto Sheets("Validation").Cells(Rows.Count, 1).End(xlUp)(2)
    .EnableEvents = True
End With
End Sub

en fait la première vide (apès la dernière renseignée) de ta colone, pour la dernière remplie enlève le (2)
 
Dernière édition:

MACx

XLDnaute Occasionnel
Re : Décalage de ma formule VBA après incrémentation de lignes

Bonjour Pierrot93,
Je reviens t'embêter toujours sur mon même fichier mais un autre problème... facile pour toi celui là j'en suis sûr! :)
Il s'agit de la colonne K de mon fichier où on peut choisir un libellé parmi une liste.
Mon problème arrive lorsque j'actualise mon tableau (donc, bouton actualiser de l'onglet Données") et bien tout s'efface et se remets par défaut, en "Non Envoyée". Du coup je perds tout l'historique de cette colonne :/ (pas cool!)

A savoir, sur chaque cellule de cette colonne ("K") il y a la formule suivante :
=SI([@Etat]="Validée";"A Envoyer";"Non Envoyée")

Je ne comprends pas pourquoi tout se mets en Non Envoyée dès que je clique sur Actualiser ! :(

Merci de ton aide ou celle de quelqu'un d'autre !
 

MACx

XLDnaute Occasionnel
Re : Décalage de ma formule VBA après incrémentation de lignes

Salut,
C'est le même fichier en fait, j'ai juste modifié l'ordre croissant de la colonne A.
Le nouveau problème se situe en colonne L
Merci beaucoup :)
 

Pièces jointes

  • XLD_MACxValFA.xlsm
    56.5 KB · Affichages: 43
  • XLD_MACxValFA.xlsm
    56.5 KB · Affichages: 48
  • XLD_MACxValFA.xlsm
    56.5 KB · Affichages: 51

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 079
Membres
103 112
dernier inscrit
cuq-laet