Bonjour,
Je travaille sur une macro qui a pour but de mettre à jour une base de donnée à partir d'une liste de lignes sur un autre classeur. Les fichiers étant un peu long ( environ 10 000 lignes), je suis passé par des variables tableaux pour éviter l'activation des classeurs / la sélection de cellules, et tout fonctionne nickel sauf pour la dernière étape : réintroduire la variable tableau de la base dans la feuille de calcul dédiée. L'erreur 1004 : "Erreur définie par l'application ou par l'objet" apparaît sans que je puisse trouver de solutions.
Le classeur base de donnée est protégé, donc je lève la protection en début de macro. La syntaxe est censée être bonne puisque je l'ai récupéré d'une macro qui fonctionne. Le tableau que je cherche à transférer est de la même taille que la plage de cellule de destination. J'ai essayer différentes approches de contournement : créer une variable range pour y affecter le tableau, utiliser un With-end With, etc, rien ne marche.
Je vous transmet le fichier de la macro ainsi que le passage ou ça bloque ( ligne surlignée), merci d'avance pour votre aide.
' TRANSFERER LES LIGNES DES TABLEAUX SUR LES CLASSEURS
ReDim tab_base_final(1 To c_base - 2, 1 To 29)
For i = 1 To c_base - 2
For j = 1 To 29
tab_base_final(i, j) = tab_base(i, j)
Next
Next
wb_base.Activate
Sheets(1).Select
Range("A2:AC" & c_base - 1).Value = tab_base_final 'je colle "c_base - 2 lignes à partir de la ligne 2 --> dernière ligne = c_base - 1
Range("A2:AC" & c_base - 1).Value = tab_base_final
- tab_base est la variable tableau que j'utilise pour récupérer toutes les lignes de la base de données mise à jour,
volontairement trop grande car le nombre de lignes final n'est pas connu à l'avance;
- c_base - 2 correspond au nombre de lignes de la base de donnée mise à jour, contenant 29 colonnes;
- tab_base_final est une variable tableau que je crée une fois que la base de donnée est mise à jour dans la variable tableau tab_base, et qui a exactement le nombre de lignes de la nouvelle base.
- wb_base est le workbook dans lequel se trouve la base de donnée, qui est sur la feuille 1.