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 SubL'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.