MISE A JOUR AUTOMATIQUE ENTRE DES FEUILLES EXCEL

HANN1111 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour à tous,

je suis confronter à un problème au niveau de ma macro. J'ai fais une macro pour mettre à jour automatiquement des données entre des fichiers Excel. Le souci est qu'elle ne prend pas en compte les doublons. 

A toute personne qui pourrait bien m'aider. Je vous remercie d'avance.

- Fichier 1 (qui est une consolidation des fichiers 2 et 3) contient la liste globale de clients : colonne A (Identifiant du client), colonne B (Nom du client), colonne C (Région), colonne D (Date), colonne E (Article), colonne F (Quantité).
- Fichier 2 contient la liste des clients de la région 1: colonne A (Identifiant du client), colonne B (Nom du client), colonne C (Région), colonne D (Date), colonne E (Article), colonne F (Quantité).
- Fichier 2 contient la liste des clients de la région 2: colonne A (Identifiant du client), colonne B (Nom du client), colonne C (Région), colonne D (Date), colonne E (Article), colonne F (Quantité).

Un même client peut acheter plusieurs articles différents. Et donc avoir plusieurs lignes dans une feuille.
L'idée est que lorsque je mets à jour le Fichier 1 et si l'identifiant du client (d'une région donnée) n'existait pas dans la Feuille 2 ou 3, alors la macro rajoute une ligne dans la feuille de la région concernée (Feuille 2 ou 3), dans le cas contraire, que la ligne se mette à jour en fonction des nouvelles données qui seront renseignées dans la feuille principale.

Et donc mon problème est qu'avec ma macro, c'est que lorsque je mets à jour le Fichier 1 pour un ancien client qui achète un nouvel article (donc rajout d'une nouvelle ligne) ou que je modifie la quantité d'un article d'un client, la macro ne rajoute pas de nouvelle ligne mais modifie l'ancienne donnée qui est dans la Feuille 2 ou 3.



_ CODE VBA

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Dim REGION1 As Worksheet
Dim REGION2 As Worksheet

If Sh.Name = "Feuil1" And Sh.Range("A" & Target.Row) <> "" And Sh.Range("C" & Target.Row) = "REGION 1" Then
Set REGION1 = ThisWorkbook.Worksheets("Feuil2")
With REGION1
Set ID = .Columns("A").Find(Sh.Range("A" & Target.Row).Value, LookIn:=xlValues, lookat:=xlWhole)
If ID Is Nothing Then
Lastlig = .Cells(999999, 1).End(xlUp).Row
Sh.Range("A" & Target.Row & ":F" & Target.Row).Copy .Range("A" & Lastlig + 1)
Else
Sh.Range("A" & Target.Row & ":F" & Target.Row).Copy ID
End If
End With
End If
If Sh.Name = "Feuil1" And Sh.Range("A" & Target.Row) <> "" And Sh.Range("C" & Target.Row) = "REGION 2" Then
Set REGION2 = ThisWorkbook.Worksheets("Feuil3")
With REGION2
Set ID = .Columns("A").Find(Sh.Range("A" & Target.Row).Value, LookIn:=xlValues, lookat:=xlWhole)
If ID Is Nothing Then
Lastlig = .Cells(999999, 1).End(xlUp).Row
Sh.Range("A" & Target.Row & ":F" & Target.Row).Copy .Range("A" & Lastlig + 1)
Else
Sh.Range("A" & Target.Row & ":F" & Target.Row).Copy ID
End If
End With
End If

End Sub
 

A voir également:

1 réponse

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 

Bonjour,

Un fichier avec des donnees non confidentielles serait plus opportun que du code

Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : http://cjoint.com
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...

1