Bonjour,
Normalement, ce code devrait correspondre à votre besoin, si je l'ai bien compris :
Option Base 1
Sub MAJ_Auto_TC()
Dim Ws As Worksheet
Dim Tampon() As Variant
Dim NbEleves%, i%, LigneDepart%
Application.ScreenUpdating = False
With Sheets("TC").Range("A1").CurrentRegion
'.Copy Destination:=Sheets("Archive").Range("A1") 'Archivage des anciennes donnees de TC
If .Rows.Count > 1 Then .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0).ClearContents 'suppression contenu de TC
End With
For Each Ws In Worksheets 'pour chaque feuille du classeur
If Right(Ws.Name, 4) = "CDtc" Then 'si nom feuille termine par CDtc
With Ws
NbEleves = .Range("A1").CurrentRegion.Rows.Count - 6 'Calcul nombre d'eleves sur feuille
ReDim Tampon(NbEleves, 4) 'redimensionne tableau de stockage des donnees
For i = 1 To NbEleves 'pour chaque eleve
Tampon(i, 1) = .Cells(i + 6, 2).Value 'prend valeur de colonne 2
Tampon(i, 2) = .Cells(i + 6, 4).Value 'valeur colonne 4
Tampon(i, 3) = .Name 'nom de la feuille
Tampon(i, 4) = .Cells(i + 6, 31).Value 'colonne 31
Next i 'eleve suivant
End With
With Sheets("TC")
LigneDepart = .Range("A1").CurrentRegion.Rows.Count + 1 'renvoie 1ere ligne vide sur TC
.Range(Cells(LigneDepart, 1), Cells(LigneDepart + UBound(Tampon, 1) - 1, UBound(Tampon, 2))).Value = Tampon 'colle les infos
End With
End If
Next Ws 'feuille suivante
Application.ScreenUpdating = True
MsgBox "Mise à jour terminée"
End Sub
Je n'ai pas pu le tester correctement donc je ne suis pas certain qu'il fonctionne. Tenez-moi au courant.
Cordialement,