Bonjour à tous,
J'ai réussi, en tâtonnant à partir du code que m'a généreusement fourni BrunoM45, à obtenir quelque chose...
Mais, il insère 55 lignes d'espacement entre les mois sur la feuille de destinantion. Je crois que ça vient des 2 lignes suivantes:
LigDeb = ShtD.Range("A" & Rows.Count).End(xlUp).Row + 6 ' Récupérer la ligne de départ
LigFin = LigFin + (DLig - 2) ' Calculer la ligne de fin pour inscrire le numéro du mois
C'est bizarre, mais c'est ainsi: c'est seulement en combinant ces deux chiffres là (+6 d'une part et - 2 de l'autre), que je parviens à insérer les mois dans l'ordre souhaité... Mais, quelle solution pour ne pas avoir d'espace entre les mois s'il vous plaît?
Voic tout le code:
Sub CopieCentrale()
Dim DLig As Long, LigDeb As Long, LigFin As Long, Sht As Worksheet
Dim DLigD As Long, LigD As Long, ShtD As Worksheet
Dim NumM As Integer, ShtExcl As Sheets
Set ShtD = ThisWorkbook.Worksheets("Centralisation") ' Définir la feuille de destination
DLigD = ShtD.Range("A" & Rows.Count).End(xlUp).Row
If DLigD > 1 Then ShtD.Range("A2:H" & DLigD).Clear ' Effacer le contenu de la feuille de destination
LigDeb = 2: LigFin = 1 ' Initialiser les variables
' Pour chaque feuille du classeur parmi ceux compris dans liste ci-dessous, faire les actions suivantes:
For Each Sht In ThisWorkbook.Worksheets(Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE"))
'Call Deverrouiller_Feuille ' Ouvrir l'accès en écriture de la feuille source
NumM = Sht.Range("A7").Value ' Récupérer le numéro du mois
DLig = Sht.Range("A" & Rows.Count).End(xlUp).Row ' Récupérer la dernière ligne de la feuille
Sht.Range("A8:G232").Copy ' Copier la plage
LigDeb = ShtD.Range("A" & Rows.Count).End(xlUp).Row + 6 ' Récupérer la ligne de départ
ShtD.Range("B" & LigDeb).PasteSpecial xlPasteValues ' Coller les valeurs autres que le mois dans la feuille de destination
LigFin = LigFin + (DLig - 2) ' Calculer la ligne de fin pour inscrire le numéro du mois
ShtD.Range("A" & LigDeb & ":A" & LigFin).Value = NumM ' Inscrire le mois sur les lignes de la feuille de destination
'Call Proteger_Feuille
Next Sht
Call Trier
End Sub
Merci encore