Erreur d'exécution 9 l'indice n'appartient pas à la sélection

Bonjour à tous,

J'ai créé une macro pour un de mes classeurs, qui me permet d'ouvrir un autre fichier (qui se trouve dans le même répertoire), d'y filtrer et récupérer des données afin de les coller dans mon classeur d'origine.

L'éxécution de ma macro se passe bien jusqu'au collage dans mon classeur d'origine. VBA me renvoie une "erreur d'exécution 9 l'indice n'appartient pas à la sélection".

Voici mon code :

Option Explicit
Sub Export()
    Dim Chemin As String, DocActuel As String, CellPleine As Integer, MyRangeProduit As String, i As Integer, MyRange As String, cell As Range, MoisEnCours As String, MyRangeConsoR As String, MyRangeConsoT As String, MyRangePeQ As String, MyRangePeT As String, MyRangeEcQ As String, MyRangeEcT As String

    MoisEnCours = ActiveSheet.Name
    DocActuel = ActiveWorkbook.Name

    Select Case MoisEnCours
        Case "Janvier"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_01-2021.xls"
        Case "Février"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_02-2021.xls"
        Case "Mars"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_03-2021.xls"
        Case "Avril"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_04-2021.xls"
        Case "Mai"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_05-2021.xls"
        Case "Juin"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_06-2021.xls"
        Case "Juillet"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_07-2021.xls"
        Case "Août"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_08-2021.xls"
        Case "Septembre"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_09-2021.xls"
        Case "Octobre"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_10-2021.xls"
        Case "Novembre"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_11-2021.xls"
        Case "Décembre"
            Chemin = ThisWorkbook.Path & "/Export_consolidé_12-2021.xls"
    End Select

    Application.ScreenUpdating = False

    Workbooks.Open Filename:=Chemin

    CellPleine = 0

    For Each cell In ActiveSheet.Range("A:A")
        If Not IsEmpty(cell) Then
        CellPleine = CellPleine + 1
        ElseIf IsEmpty(cell) Then
        Exit For
        End If
    Next cell

    CellPleine = CellPleine - 1

    MyRange = "$A$2:$AN$" & CellPleine
    MyRangeProduit = "$K$2:$K$" & CellPleine
    MyRangeConsoR = "$U$2:$U$" & CellPleine
    MyRangeConsoT = "$AD$2:$AD$" & CellPleine
    MyRangePeQ = "$AF$2:$AF$" & CellPleine
    MyRangePeT = "$AG$2:$AG$" & CellPleine
    MyRangeEcQ = "$AL$2:$AL$" & CellPleine
    MyRangeEcT = "$AM$2:$AM$" & CellPleine

    ActiveSheet.Range(MyRange).AutoFilter Field:=8, Criteria1:="FOOD"
    ActiveSheet.Range("A:J, L:T, V:AC, AE:AE, AH:AK, AN:AN").EntireColumn.Hidden = True

    ActiveSheet.Range(MyRangeProduit).SpecialCells(xlCellTypeVisible).Copy
    Workbooks(DocActuel).Sheets(MoisEnCours).Range("A3").Paste
    ActiveSheet.Range(MyRangeConsoR).SpecialCells(xlCellTypeVisible).Copy
    Workbooks(DocActuel).Sheets(MoisEnCours).Range("E3").Paste
    ActiveSheet.Range(MyRangeConsoT).SpecialCells(xlCellTypeVisible).Copy
    Workbooks(DocActuel).Sheets(MoisEnCours).Range("D3").Paste
    ActiveSheet.Range(MyRangePeQ).SpecialCells(xlCellTypeVisible).Copy
    Workbooks(DocActuel).Sheets(MoisEnCours).Range("G3").Paste
    ActiveSheet.Range(MyRangePeT).SpecialCells(xlCellTypeVisible).Copy
    Workbooks(DocActuel).Sheets(MoisEnCours).Range("H3").Paste
    ActiveSheet.Range(MyRangeEcQ).SpecialCells(xlCellTypeVisible).Copy
    Workbooks(DocActuel).Sheets(MoisEnCours).Range("I3").Paste
    ActiveSheet.Range(MyRangeEcT).SpecialCells(xlCellTypeVisible).Copy
    Workbooks(DocActuel).Sheets(MoisEnCours).Range("J3").Paste

    Workbooks(Chemin).Close

    Application.ScreenUpdating = True
End Sub

L'erreur se passe sur cette ligne (et sur toutes celles identiques après si le code continue je suppose) et je ne comprends d'où elle peut bien venir malgré mes nombreuses recherches.

Workbooks(DocActuel).Sheets(MoisEnCours).Range("A3").Paste

Merci d'avance pour vos réponses.

bonjour,

le .paste n'est pas correct mais devrait donner une erreur 438 (méthode n'existe pas pour cet objet) et non une erreur 9. Sans des fichiers avec lesquels on peut reproduire l'erreur, je n'ai pas d'explication.

Bonjour h2so4,

Quelle serait la syntaxe correcte pour le collage ? Parce que j'ai déjà eu l'erreur 438 en changeant la syntaxe des autres fonctions de la ligne.

bonsoir,

la syntaxe correcte devrait être celle-ci (sur une ligne)

ActiveSheet.Range(MyRangeConsoT).SpecialCells(xlCellTypeVisible).Copy Workbooks(DocActuel).Sheets(MoisEnCours).Range("D3")

D'accord merci. Mais il n'y a pas besoin de mettre

Copy Destination:= ?

bonsoir,

Mais il n'y a pas besoin de mettre

Copy Destination:= ?

ce n'est pas nécessaire si tu respectes l'ordre des paramètres, et destination:= est le seul paramètre de la méthode range.copy. Mais tu peux le mettre.

Merci ça marche, mais j'ai maintenant l'erreur 9 sur la ligne

Workbooks(Chemin).Close

Saurais-tu d'où elle vient ?

Merci h2so4, problème résolu, ma macro fonctionne nickel.

Pour le workbooks.close j'avais oublié le paramètre de sauvegarde.

Rechercher des sujets similaires à "erreur execution indice appartient pas selection"