Problème lien Code-Module
Bonjour,
Je construis actuellement un fichier. Aujourd'hui, il contient deux fiches mais devrait en contenir plus de 100 lorsqu'il sera finalisé. Sur les bons conseils d'un internaute, j'ai placé ma macro sur un module pour éviter le travail fastidieux de copier-coller.
Voici ce à quoi je suis arrivé:
Dans mon module1, j'ai inscrit ceci:
Sub macro_1(ByVal nom_feuille As String)
' Copie de la feuille de données
Sheets("Données").Range("A83:BN2131").copy Sheets("nom_feuille").Range("A83:BN2131")
' Nettoyage - ne garder que ce qui concerne le professeur
Dim a As Long
For a = 86 To 2131
If Not IsEmpty(Cells(a, 4)) And Cells(a, 4) <> "nom_feuille" Then Cells(a, 3).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 7)) And Cells(a, 7) <> "nom_feuille" Then Cells(a, 6).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 10)) And Cells(a, 10) <> "nom_feuille" Then Cells(a, 9).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 13)) And Cells(a, 13) <> "nom_feuille" Then Cells(a, 12).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 17)) And Cells(a, 17) <> "nom_feuille" Then Cells(a, 16).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 20)) And Cells(a, 20) <> "nom_feuille" Then Cells(a, 19).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 23)) And Cells(a, 23) <> "nom_feuille" Then Cells(a, 22).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 26)) And Cells(a, 26) <> "nom_feuille" Then Cells(a, 25).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 30)) And Cells(a, 30) <> "nom_feuille" Then Cells(a, 29).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 33)) And Cells(a, 33) <> "nom_feuille" Then Cells(a, 32).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 36)) And Cells(a, 36) <> "nom_feuille" Then Cells(a, 35).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 39)) And Cells(a, 39) <> "nom_feuille" Then Cells(a, 38).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 43)) And Cells(a, 43) <> "nom_feuille" Then Cells(a, 42).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 46)) And Cells(a, 46) <> "nom_feuille" Then Cells(a, 45).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 49)) And Cells(a, 49) <> "nom_feuille" Then Cells(a, 48).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 52)) And Cells(a, 52) <> "nom_feuille" Then Cells(a, 51).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 56)) And Cells(a, 56) <> "nom_feuille" Then Cells(a, 55).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 59)) And Cells(a, 59) <> "nom_feuille" Then Cells(a, 58).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 62)) And Cells(a, 62) <> "nom_feuille" Then Cells(a, 61).Resize(, 3).ClearContents
If Not IsEmpty(Cells(a, 65)) And Cells(a, 65) <> "nom_feuille" Then Cells(a, 64).Resize(, 3).ClearContents
Next
'Construction Horaire - Synthèse du professeur
Range("O45:O2131").ClearContents
Range("AB45:AB2131").ClearContents
Range("AO45:AO2131").ClearContents
Range("BB45:BB2131").ClearContents
Dim deb As Integer, fin As Integer, k As Integer, J As Integer, truc As String
For i = 3 To 66
deb = 45
fin = 2131
For k = 4 To 40
For J = deb To fin Step 41
truc = truc + Cells(J, i)
Next J
Cells(k, i) = truc
deb = deb + 1
fin = fin + 1
truc = ""
Next k
Next i
Worksheets("Données").Range("O1:O2131").copy Worksheets("nom_feuille").Range("O1")
Worksheets("Données").Range("AB1:AB2131").copy Worksheets("nom_feuille").Range("AB1")
Worksheets("Données").Range("AO1:AO2131").copy Worksheets("nom_feuille").Range("AO1")
Worksheets("Données").Range("BB1:BB2131").copy Worksheets("nom_feuille").Range("BB1")
End Sub
Dans ma feuille "Herremans", j'ai écrit cela:
Sub macro_1()
'en appelant ta macro tu mets en paramètre la valeur "Herremans"
Call Module1.macro_1("Herremans")
End Sub
Lorsque je lance la macro de la feuille, cela me donne: Erreur d'exécution 9 - L'indice n'appartient pas à la sélection.
Quelqu'un pour m'aider ?
Thomas
Bonjour,
modifie peut être cette instruction comme suit :
Sheets("Données").Range("A83:BN2131").copy Sheets(nom_feuille).Range("A83:BN2131")bon après midi
@+
Un tout grand merci Pierrot93 !