problème de boucle

  • Initiateur de la discussion daniel
  • Date de début
D

daniel

Guest
Bonjour le forum !

Je deviens fou :woohoo: avec ma boucle... Voilà :

J'ai deux feuilles

Feuille 1 =NouveauxCodes
Feuille2 = AnciensCodes.

Dans chacune, une colonne (disons A1:A100) comporte des codes. Certains codes sont identiques dans les deux feuilles.

Je n'arrive pas à créer une boucle qui me permettrait d'extraire et de coller dans la feuille 2 (à la suite des anciens codes existants), tous les codes de la feuille 1 qui ne sont pas dans la colonne de la feuille2...

Je ne sais pas si je suis assez clair...mais j'avoue avoir du mal avec les boucles !

Merci pour votre aide

Daniel
 

CBernardT

XLDnaute Barbatruc
Bonjour Daniel et le forum,

Une macro qui ajoute à la colonne en feuillle 2 les codes absents par rapport à la liste en feuille 1.

Sub Ajouter()
Dim Lig As Integer, i As Integer
Dim Plage As Range, Table As Range, Cell As Range
Application.ScreenUpdating = False
Set Plage = Sheets('Feuil1').Range('A2:A' & Sheets('Feuil1').Range('A1000').End(xlUp).Row)
For Each Cell In Plage
Set Table = Sheets('Feuil1').Range('A2:A' & Sheets('Feuil2').Range('A1000').End(xlUp).Row)
If Application.CountIf(Table, Cell) = 0 Then
Sheets('Feuil2').Range('A1000').End(xlUp).Offset(1, 0) = Cell
End If
Next Cell
Sheets('Feuil2').Activate
Range('A1').Select
Application.ScreenUpdating = True
End Sub

Cordialement

CBernardT
 
D

daniel

Guest
Merci pour ton code...

...mais je n'arrive bien à m'en servir ! Il me copie des codes en doublon, et il en oublie certains. De plus si ma plage de données est trop grande (en fait ma colonne de codes en feuille 2 comporte près de 900 codes), il ne me trouve pas les nouveaux codes mis en feuille1...

Je vais encore essayer !

Daniel
 

CBernardT

XLDnaute Barbatruc
Re Daniel,

Je pensais les plages assez courtes, 100 lignes, alors voici la macro modifiée :
Sub Ajouter()
Dim Lig As Integer, i As Integer
Dim Plage As Range, Table As Range, Cell As Range
Application.ScreenUpdating = False
Set Plage = Sheets('Feuil1').Range('A2:A' & Sheets('Feuil1').Range('A65000').End(xlUp).Row)
For Each Cell In Plage
Set Table = Sheets('Feuil1').Range('A2:A' & Sheets('Feuil2').Range('A65000').End(xlUp).Row)
If Application.CountIf(Table, Cell) = 0 Then
Sheets('Feuil2').Range('A65000').End(xlUp).Offset(1, 0) = Cell
End If
Next Cell
Sheets('Feuil2').Activate
Range('A1').Select
Application.ScreenUpdating = True
End Sub

Cordialement

CBernardT
 
D

daniel

Guest
Bonsoir,

Désolé, Bernard, mais ta macro ne fonctionne plus sur ma plage de données (j'ai quelque 900 codes !). De plus, si j'insère un code de la feuille 1 dans la liste de codes de la feuille 2, la macro ne le 'détecte' pas et le copie...du coup, j'ai des doublons.

Je vais essayer de creuser...

Merci de ton aide, en tout cas,

Bonne soirée

Daniel

PS pour patrick : comme tu l'auras compris, je cherche à faire ma boucle par macro
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 347
Membres
103 526
dernier inscrit
HEC