MISE A JOUR AUTOMATIQUE ENTRE DES FEUILLES EXCEL
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
- MISE A JOUR AUTOMATIQUE ENTRE DES FEUILLES EXCEL
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise en forme conditionnelle excel - Guide
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Comment faire un livret avec des feuilles a4 - Guide
1 réponse
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...