rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Macro VBA Excel comparer colonneA de 2fichier

  Posté par techneric, le mercredi 10 janvier 2007 à 18:08:18
Bonjour,

Voici ce que je cherche à faire :

Je veux comparer la ligne A de la feuille 1 avec la ligne A de la feuille 2, la ligne est la mçeme, de 1 à x sauf que dans la feuille 1, la ligne est dans l'ordre croissant, dans la feuille 2, les numéros sont dans le désordre, quand je retrouve le numéro de ligne de la feuille 1 dans la feuille 2, j'écrase la ligne B de la feuille 1 par la ligne B de la feuille 2.
(En fait, ce sont mêmes deux fichiers différents, et la première feuille de chaque classeur que je classe).
Afin de faire un test sans me préoccuper des autres colonnes, j'ai tout collé dans la feuille 3 d'un nouveau classeur, la ligne A du 1er fichier est dans la colonne A, la colonne A du second fichier est dans la colonne B, la colonne B du second fichier est dans la colonne C et la colonne B du 1er fichier est dans la colonne D, c'est là où je fais le test, la syntaxe est bonne, mais, quand je lance la macro, pour l'instant, VB reste en cours d'exécution et ne répond pas, j'imagine que la boucle tourne à l'infini ou que VB n'arrive pas à exécuter une instruction.
C'est là où je coince.

Mais, si quelqu'un a déjà écrit une macro de ce style, peut-être plus simple ou connait mon erreur, je suis intéressé.



En fait, mon problème était la boucle, j'ai trouvé, je n'étais pas dans la bonne feuille de test : Feuil3, c'est erreur est surmontée, maintenant, c'est .Cells(Lig, Col).Range("E1").Paste que Vb n'accèpte pas.

Le problème est que je ne peux pas trier la colonne B, des tris dans les autres cellules F, G, H doivent rester les mêmes.
Par ailleurs, les fichiers se succèdent, mais, bien souvent de nombreuses lignes ont été rajoutées, je dois faire une boucle sur m lignes dans la colonne A et n lignes sur la colonne B, mais, pour mon test, on ne se préoccupe pas de ces lignes, seules les 4 colonnes de A à D comptent ici.

Exemple :
Colonne A
1
2
3
4
5
6
etc...

liée à A
Colonne D
accepter
voir
faire
surveiller
compter
aller
etc...

Colonne B
5
2
3
1
4
6
etc...

liée à B
Colonne C
compter
voir
faire
accepter
surveiller
aller
etc...

sauf que cette colonne B est mise à jour, on peut donc avoir ceci :
liée à B
Colonne C
clôturer
voir
faire
trouver
surveiller
aller
etc...

Une fois que j'ai fait correspondre le numéro 6 de la colonne A au numéro 6 de la colonne B, je ne me pose pas de question, les informations de la colonne C mis à jour, je les copie et les colonnes dans la colonne D, j'écrase la colonne D entièrement en respectant le numéro de la colonne A, de 1 à 6, ici.


Ma macro :

Sub Offset()
'
' Offset Macro
' Macro enregistrée le 10/01/2007 par laurenterc
' transfert Macro
' Macro enregistrée le 09/01/2007 par laurenterc
'
Dim ObjetClasseur As Workbook
Dim Lig As Long
Dim Lign As Long
Dim Col As String
Dim Colonn As String
Dim NbrLig As Long
Dim NumLig As Long
Dim NombLig As Long
Dim NbsupLig As Long
Dim Val As Long

' ("D:\Donnees\DossierEric\Bilan_Annuel.xls")
' Set ObjetClasseur = GetObject("D:\An2007\Eric\Total.xls")
Sheets("Feuil3").Activate ' feuille de destination
Col = "A" ' Colonne à tester
Colonn = "B" ' Colonne de référence
NumLig = 0
NbsupLig = 0
With Sheets("Feuil3") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
NombLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
ActiveCell.Offset(1, 0).Range("A1").Select
If .Cells(Lig, Col).Value <> "" Then
Val = .Cells(Lig, Col).Range("A1")
For Lign = 1 To NombLig
If .Cells(Lign, Colonn).Value <> "" Then
.Cells(Lign, Colonn).Range("B1").Select
If Val = .Cells(Lign, Colonn).Value Then
.Cells(Lign, Colonn).Range("C1").Copy
Cells(Lign, 6).Select
ActiveSheet.Paste
' Destination:=Worksheets("Feuil3").Range("E1&q­uot;)
End If
NombLig = NombLig + 1
Cells(NombLig, 1).Select
End If
Next
End If
NumLig = NumLig + 1
Cells(NumLig, 1).Select
Next
End With

'
End Sub
Configuration: Windows XP
Internet Explorer 6.0
Répondre à techneric  Signaler ce message aux modérateurs
Logiciels pertinents trouvés dans les téléchargements
Télécharger Excel Viewer 2003Excel Viewer - Avec Microsoft Office Excel Viewer 2003, vous pouvez ouvrir, afficher et imprimer des classeurs Excel (fichiers XLS ), même...Catégorie: Tableur
Licence: Freeware/gratuit
Télécharger Super Macro  1Super Macro - Super Macro est un logiciel gratuit qui permet de créer des macros sous Windows afin de déclencher diverses actions...Catégorie: Bureautique
Licence: Freeware/gratuit
Télécharger OpenOffice.org 2.4.1OpenOffice.org - OpenOffice est une suite bureautique complète entièrement gratuite, compatible avec la suite Microsoft Office. Elle...Catégorie: Suite bureautique
Licence: Open Source
Télécharger GANTT Project 2.0.7GANTT Project - GanttProject est un outil de gestion de projet libre, permettant de réaliser des diagrammes de GANTT afin de planifier un...Catégorie: Gestion de projet
Licence: Open Source
Plus de logiciels gratuits sur « Macro VBA Excel comparer colonneA de 2fichier »