Error 1004: Application-defined or object-defined error
Bonjour la communauté,
J'ai un petit problème dans un macro, ene général j'essaie d'éviter les forums mais là c'est bien au-dessus de mes connaissance. Celui-ci est censé d'abord comparé des données du "transac2.xlsm" avec un autre workbook "Suivi CS_TEST.xlsx" qui lui est partagé et puis rajouter une date dans ce même dossier partagé. L'erreur que je trouve est la suivante:
Error 1004:
Application-defined or object-defined error.
Le Workbooks("transac2.xlsm") a trois colonnes de base:
Data (A:A), Date (B:B) et Entreprise (C:C).
Le Workbooks("Suivi CS_TEST.xlsx") en a plein, dont:
Data (+ stuff) (E:E), Date (S:S).
Le code est très brut, car je n'ai pas d'expérience, encore moins de fichier partagé. J'avais fait des tests entre deux fichiers, d'une feuille chacun, non-partagés et ça marchait...
Sub TransacJulien()
On Error GoTo Errorcatch
Dim wCPMF2018 As Workbook
Dim wtransac2 As Workbook
Set wCPMF2018 = GetObject("G:\Suivi CS_TEST.xlsx")
Set wtransac2 = Workbooks("transac2.xlsm")
wCPMF2018.Windows(1).Visible = True
wCPMF2018.Worksheets("Julien").Select
Dim a As Integer
Dim i As Integer
Dim j As Integer
a = wtransac2.Worksheets("Macro").Range("a1", Range("a1").End(xlDown)).Count
'compte le nombre de ligne dans le fichier transac2
For i = 1 To a
For j = 1 To 100
wtransac2.Worksheets("Macro").Cells(j + 1, 20) =Right(Replace(wCPMF2018.Worksheets("Julien").Cells(j + 1, 5), " ", ""), 15)
'crée une copie des Data du fichier CS_TEST épuré du texte inutile
Next j
Next i
For i = 1 To a
For j = 1 To 100
If wtransac2.Worksheets("Macro").Cells(i + 1, 1) = wtransac2.Worksheets("Macro").Cells(j + 1, 20) Then
'teste les Data ainsi récolté du fichier CS_TEST face aux Data disponible à la base dans le fichier transac2
wtransac2.Worksheets("Macro").Cells(j + 1, 21) = wtransac2.Worksheets("Macro").Cells(i + 1, 1)
'si ces données sont identiques, les Data transac2 sont copiées en laissant les espaces adéquats vis-à-vis des données épurées.
If IsEmpty(wCPMF2018.Worksheets("Julien").Cells(j + 1, 19)) = True And IsEmpty(wtransac2.Worksheets("Macro").Cells(j + 1, 21)) = False Then
wCPMF2018.Worksheets("Julien").Cells(j + 1, 19) = wtransac2.Worksheets("Macro").Cells(i + 1, 2)
'copie ainsi la date en fonction de l'ordre ainsi trouvé plus haut en faisant attention que la cellule Date dans CS_TEST soit au préalable vide.
wtransac2.Worksheets("Macro").Cells(i + 1, 4) = "La date de la première transaction de " & wtransac2.Worksheets("Macro").Cells(i + 1, 3) & " a été copiée dans la feuille de Julien."
'Un message qui s'affiche pour expliciter quelle feuille a reçu une Date (normalement plusieurs feuilles sont à prévoir.
Else
If IsEmpty(wtransac2.Worksheets("Macro").Cells(i, 6)) = True And IsEmpty(wCPMF2018.Worksheets("Julien").Cells(j + 1, 19)) = False Then
wtransac2.Worksheets("Macro").Cells(i + 1, 4).Value = "La cellule n'est pas vide"
'ce qui est écrit dans un cas contraire
End If
End If
End If
Next j
Next i
Errorcatch:
MsgBox Err.Description
End SubJ'ai déjà essayé d'obtenir de l'aide sur un autre fofo, pas de jaloux s'il vous plaît.
Le problème se situait sur un mauvais pointage:
Pas
a = wtransac2.Worksheets("Macro").Range("a1", Range("a1").End(xlDown)).CountMais plutôt
a = wtransac2.Worksheets("Macro").Range("a1", wtransac2.Worksheets("Macro").Range("a1").End(xlDown)).Count