1 votes

Comparer les cellules de données de deux fichiers indépendants

Je voudrais comparer les valeurs des cellules de deux fichiers Excel différents.

J'ai déjà fait un programme qui fonctionne si c'est sur la même feuille. Maintenant, je voudrais "externaliser" la première cellule. Le programme doit comparer chaque ligne d'une colonne à celle de l'autre feuille de calcul.

Sub Update_production()
    Dim i As Integer, j As Integer, refmiss As Integer, comments As String
    i = 5
    j = 15
    refmiss = 0

    Do while '[Production pallet.xlsx]September'!$A$i.Value <> ""          

        Do While Cells(j, 1).Value <> ""
            If (Cells(i, 1).Value <> Cells(j, 1).Value) Then
                j = j + 1
            Else
                Cells(j, 3).Value = Cells(j, 3).Value + Cells(i, 3).Value
                Cells(j, 4).Value = Cells(j, 4).Value + Cells(i, 4).Value
                j = j + 1
                refmiss = 1
            End If
        Loop
        If (refmiss = 0) Then
            comments = Cells(i, 1).Value
            Range("A15").Select
            ActiveCell.End(xlDown).Select
            ActiveCell.Offset(1, 0).Select
            ActiveCell.Value = comments
            ActiveCell.Offset(0, 2).Value = Cells(i, 3).Value
            ActiveCell.Offset(0, 3).Value = Cells(i, 4).Value
        End If
        refmiss = 0
        i = i + 1
        j = 15
    Loop
End Sub

Merci d'avance pour votre aide (s'il est possible de conserver le faire tout en, ce serait vraiment bien car je ne sais pas combien de ligne il y aura dans les deux feuilles de calcul).

0voto

Raystafarian Points 21292

Vous voudrez utiliser le application.worbook.open Methode.

Sub Openfilemacro()
Dim myfile As String

myfile = "Path\to\file"

Application.Workbooks.Open Filename:=myfile

End Sub

Vous pouvez alors faire référence entre les classeurs pour les comparer, en spécifiant simplement le WB et le WS, comme vous l'avez déjà fait.

Quelque chose comme ça, mais adapté pour vous -

Sub Openfilemacro()
Dim myfile As String
Dim workbookA As Workbook
Dim workbookB As Workbook
myfile = "Path\to\file"
workbookA = ThisWorkbook
workbookB = Application.Workbooks.Open(Filename:=myfile)

Dim c As Range
For Each c In Workbooks(workbookA).Range("A:A")
    If c = "" Then Exit Sub
        'search workbookB for c.value
        'do stuff

Next

End Sub

Une remarque rapide - vous voudrez probablement éviter d'utiliser l'option .select et activecell les propriétés car cela peut devenir désordonné. Essayez de toujours faire référence à la cellule réelle, et il n'est pas nécessaire de sélectionner une cellule. Vous aurez peut-être besoin d'un workbook.activate mais, en général, il n'est pas souhaitable d'avoir à sélectionner quoi que ce soit ou à faire référence à une cellule active, en particulier avec un fichier de type for loop déjà.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X