Bonjour,
Depuis maintenant quelques jours, je me heurte à un problème. J'ai beaucoup cherché mais, malgré le fait qu'il y ait beaucoup de cas similaires sur le web, je n'ai rien trouvé... Voici les faits :
Je cherche à faire une sélection de cellules afin de les couper et les déplacer. Malheureusement, une erreur apparaît et je n'arrive vraiment pas à comprendre pourquoi... (1004 : Erreur définie par l'application ou par l'objet).
Voici mon code :
Sub ajoutMois(feuille, nbMois, numeroLigne, numeroColonne)
Sheets(feuille).Activate
' On déplace la colonne Production
ActiveSheet.Range(Cells(7, numeroColonne), Cells(10, numeroColonne + 1)).Select ' L'erreur arrive ici
Selection.Cut
ActiveSheet.Cells(7, numeroColonne + 3).Select
ActiveSheet.Paste
MsgBox ("Colonne prod")
' On copie/colle la colonne du mois précédent
ActiveSheet.Range(Cells(7, (numeroColonne - 3)), Cells(numeroLigne, (numeroColonne - 1))).Select
Selection.Copy
ActiveSheet.Cells(7, numeroColonne).Select
ActiveSheet.Paste
MsgBox ("Mois précédent")
' On grise le mois d'avant
ActiveSheet.Range(Cells(9, numeroColonne - 3), Cells(numeroLigne, numeroColonne - 1)).Style = "Grisé"
MsgBox ("Grisé")
' On modifie le texte et on supprime les contenus
mois = Worksheets("Données").Range("E" & nbMois + 1).Value
ActiveSheet.Cells(7, numeroColonne).Value = "Production du mois de " & mois
MsgBox ("Modification texte")
ActiveSheet.Range(Cells(9, (numeroColonne)), Cells(numeroLigne, (numeroColonne + 2))).Select
Selection.ClearContents
MsgBox ("Clear")
End Sub
Et j'appelle la macro plusieurs fois dans une boucle :
' Quelques données
nbFeuilles = ActiveWorkbook.Sheets.Count
numeroLigne = Sheets(1).Range("J" & Rows.Count).End(xlUp).Row
numeroColonne = 10 + (nbMois * 3)
For i = 1 To nbFeuilles - 1 ' On ne prend pas la feuille Données
Call ajoutMois(2, nbMois, numeroLigne, numeroColonne)
Next
Voilà... Donc à priori l'erreur apparaît à partir du ActiveSheets....Select.
Si quelqu'un a une idée, je suis preneur...
Merci d'avance !