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:=xlFillDefault
Private 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 Sub

Merci

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.

5fichier.zip (177.67 Ko)

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:=xlFillDefault

pour 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

Rechercher des sujets similaires à "vba erreur execution 1004"