Bonjour,
Je ne parviens pas à mes fins alors j'en appel à votre science. Je suis en train d'automatiser l'import de données depuis un fichier Excel vers un autre. Ma première étape était d'ouvrir une boite de dialogue, de sélectionner un fichier contenant la feuille à importer et la copier dans l'onglet "import" de ma base, ce que je suis parvenu à faire. L'étape 2 est plus délicate, je tente de comparer les codes uniques qui figurent dans la colonne A de ma base avec ceux de mon import (même format) et si l'import possède un code qui n'est pas déjà dans ma base, je voudrais COPIER/COLLER la ligne à la suite de ma base.
Je suis parvenu à récupérer une macro qui compare les colonnes mais qui ne copie que la donnée comparée dans un autre onglet, pas la ligne entière. Après moult essais, j'échoue encore et toujours à obtenir ce que je souhaite !
Voilà mon code pour le moment :
Je souhaiterais modifier la fin du code pour que lorsqu'un import ne figure pas dans la base, sa ligne entière y soit copiée à sa dernière ligne vide....J'ai tenté pas mal de façon différentes mais aucune ne semble fonctionner car je maitrise mal la manipulation des objets row
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 Sub Copie() Dim TabloBase Dim TabloImp Dim i As Integer Dim j As Integer Dim Lig As Long Dim Trouve As Boolean ' la base de référence With Sheets("Base") TabloBase = .Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count, 1)) End With ' les données importées With Sheets("import") TabloImp = .Range(.Cells(2, 1), .Cells(.UsedRange.Rows.Count, 1)) End With Lig = 2 ' boucle sur l'import For i = LBound(TabloImp) To UBound(TabloImp) Trouve = False ' boucle sur la base For j = LBound(TabloBase) To UBound(TabloBase) ' si l'import est présent dans la base If TabloEff(i, 1) = TabloForm(j, 1) Then ' on passe au suivant Trouve = True Exit For End If Next j ' si on a pas trouvé l'import dans la base If Trouve = False Then With Sheets("comparatif") ' on le liste dans un autre onglet appelé comparatif parce que je ne parviens pas à obtenir un meilleur résultat .Cells(Lig, 2) = TabloImp(i, 1) End With Lig = Lig + 1 End If Next i End Sub
Merci de votre aide !!!
Partager