1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| Option Explicit
'Forumeur : janakka-horus
'Auteur : TheBenoit59
'Lien : http://www.developpez.net/forums/d1587443/logiciels/microsoft-office/excel/macros-vba-excel/recopier-valeurs-fonction-mois/
Sub Report_Mensuel()
Dim Annees As String, Mois As Integer, i As Integer
With Feuil1
'On enregistre l'année de P9 ainsi que le numéro de mois
Annees = Format(.[p9], "yyyy"): Mois = Format(.[p9], "mm")
'On boucle les colonnes depuis la colonne R (18ème colonne), jusqu'à la dernière existante en ligne 13
For i = 18 To .Range("r13").End(xlToRight).Column
'Si la valeur contenue en colonne i et ligne 13 concaténé avec celle ligne 14
'correspond à la valeur concaténée de Mois & Annees
If .Cells(13, i).Value & .Cells(14, i).Value = Mois & Annees Then
'Alors on copie la colonne solde à partir de la ligne 16, à la dernière
.Range(.Cells(16, "q"), .Cells(.[q65000].End(xlUp).Row, "q")).Copy
.Cells(16, i).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
'Et on quitte la procédure
Exit Sub
End If
Next i
'Si on termine la boucle sans trouver la valeur, c'est que la colonne n'existe pas, alors nous la créons.
.Cells(13, i).Value = Mois
.Cells(14, i).Value = Annees
.Cells(15, i).Value = UCase(Format(.[p9], "mmmm"))
.Range(.Cells(16, "q"), .Cells(.[q65000].End(xlUp).Row, "q")).Copy
.Cells(16, i).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End With
End Sub |
Partager