VBA - Erreur d'exécution 1004
Bonjour,
J'ai un problème d'exécution lorsque que je lance la macro écrit ce dessous de type : Erreur d'exécution '1004' : Erreur définie par l'application ou par l'objet
L'erreur correspond à la ligne
Sheets("feuil1").Range("A5:V5").AutoFill Destination:=Sheets("feuil1").Range(Cells(5, 1), Cells(n + 4, 22)), Type:=xlFillDefaultPrivate Sub Init()
'
' Initialise les plages de données
'
Application.Calculation = xlCalculationManual
Dim n As Integer
Dim p As Integer
If MsgBox("Are you sure you want to RESET the file ?", vbYesNo, "Initialization Confirmation") = vbYes Then
'Actualisation de la feuille feuil1
Sheets("feuil1").Range("G2:G3").Calculate
Sheets("feuil1").Range("H2").Calculate
If (Sheets("feuil1").Range("H2").Value = False) Then
n = Sheets("feuil1").Range("G2").Value
p = Sheets("feuil1").Range("G2").Value
Sheets("feuil1").Range("A5:V5").AutoFill Destination:=Sheets("feuil1").Range(Cells(5, 1), Cells(n + 4, 22)), Type:=xlFillDefault
If p > n Then
Sheets("feuil1").Range(Cells(n + 5, 1), Cells(p + 4, 22)).Delete Shift:=xlUp
End If
End If
Sheets("feuil1").Calculate
'Actualisation de la feuille feuil2
Sheets("feuil2").Range("C1:C2").Calculate
Sheets("feuil2").Range("D1").Calculate
If (Sheets("feuil2").Range("D1").Value = False) Then
n = Sheets("feuil2").Range("C1").Value
p = Sheets("feuil2").Range("C2").Value
Sheets("feuil2").Range(Cells(4, 1), Cells(4, 23)).AutoFill Destination:=Sheets("feuil2").Range(Cells(4, 1), Cells(n + 3, 23)), Type:=xlFillDefault
Sheets("feuil2").ListObjects("T_feuil2").Resize Range(Cells(3, 1), Cells(n + 3, 23))
If p > n Then
Sheets("feuil2").Range(Cells(n + 4, 1), Cells(p + 3, 23)).Delete Shift:=xlUp
End If
Sheets("feuil2").Calculate
ActiveWorkbook.Connections("Requête - T_Supplier").Refresh
End If
'Actualisation de la feuille feuil3
Sheets("feuil3").Range("C1:D1").Calculate
If (Sheets("feuil3").Range("D1").Value = False) Then
n = Sheets("feuil3").Range("B1").Value
p = Sheets("feuil3").Range("C1").Value
Sheets("feuil3").Range(Cells(3, 2), Cells(3, 22)).AutoFill Destination:=Sheets("feuil3").Range(Cells(3, 2), Cells(n + 2, 22)), Type:=xlFillDefault
If p > n Then
Sheets("feuil3").Range(Cells(n + 3, 2), Cells(p + 2, 22)).Delete Shift:=xlUp
End If
End If
'Actualisation de la feuille feuil4
Sheets("feuil4").Range("AD1:AD2").Calculate
Sheets("feuil4").Range("AE1").Calculate
If (Sheets("feuil4").Range("AE1").Value = False) Then
n = Sheets("feuil4").Range("AD1").Value
p = Sheets("feuil4").Range("AD2").Value
Sheets("feuil4").Range(Cells(4, 28), Cells(4, 36)).AutoFill Destination:=Sheets("feuil4").Range(Cells(4, 28), Cells(n + 3, 36)), Type:=xlFillDefault
If p > n Then
Sheets("feuil4").Range(Cells(n + 4, 28), Cells(p + 3, 36)).Delete Shift:=xlUp
End If
End If
'Actualisation de la feuille feuil5
Sheets("feuil5").Range("G1:G3").Calculate
n = Sheets("feuil5").Range("G1").Value
p = Sheets("feuil5").Range("G2").Value
If (Sheets("feuil5").Range("G3").Value = False) Then
Sheets("feuil5").Range(Cells(3, 2), Cells(3, 5)).AutoFill Destination:=Sheets("feuil5").Range(Cells(3, 2), Cells(n + 2, 5)), Type:=xlFillDefault
If p > n Then
Sheets("feuil5").Range(Cells(n + 3, 2), Cells(p + 3, 5)).Delete Shift:=xlUp
End If
End If
Application.Calculation = xlCalculationAutomatic
MsgBox ("Fichier Actualisé")
End If
End SubMerci
bonjour,
peux-tu mettre ton fichier (anonymisé si besoin) ?
Voilà donc mon fichier. Ce que je veux faire avec la macro est que lorsque j'importe mes données (feuille data 1 et data 2), les plages des autres feuilles s'adaptent pour avoir pile poil le bon nombre de colonne. Le fichier partager est déjà initialisé. Le fichier avant initialisation contiendrait uniquement 1 ligne contenant les formules et le but est de simplement les faires défiler jusqu'à la bonne ligne.
bonsoir,
remplace cette instruction
Sheets("feuil1").Range("A5:V5").AutoFill Destination:=Sheets("feuil1").Range(Cells(5, 1), Cells(n + 4, 22)), Type:=xlFillDefaultà corriger ainsi (à faire plusieurs fois dans ton code)
Sheets("feuil1").Range("A5:V5").AutoFill Destination:=Range(Sheets("feuil1").Cells(5, 1), Sheets("feuil1").Cells(n + 4, 22)), Type:=xlFillDefaultpour définir un range à partir de cells il faut qualifier les cells et non le range (sauf dans un module de feuille où il faut aussi qualifier le range)
Bonjour,
Ok super ça marche! Merci pour votre aide