Je souhaiterai une macro qui copie les données des colonnes en jaune de la colonne BDD pour les coller après la dernière ligne de la colonne correspondante de l'autre onglet " ALL RM " sachant que les données de l'onglet " ALL RM " augmentent tous les mois.
Il faudrait également que la macro :
complète la colonne A période de l'onglet " All RM " avec le mois + année en cours
complète la colonne H avec la formule G/F
intègre le fait que les données de l'onglet "ALL RM" augmentent tous les mois et donc copie après la dernière ligne qui changera donc tous les mois
Voici une proposition qui le fait.
Par contre je n'ai pas su où trouver "Sep 21" dans votre feuille BDD
Dans votre feuille ALL RM ce ne sont pas des dates en colonne B mais des textes 'Aug 21' ????
Evitez de mettre des espaces blancs en fin de noms de vos feuilles 'BDD ' , 'ALL RM ' vous vous faciliterez le travail ultérieur.
VB:
Sub Maj()
Const Formule As String = "=IFERROR(G@/F@,0)"
Dim Bdd As Range, Destination As Range
Dim nbLignes As Long
'
' toutes les données de bdd
With ThisWorkbook.Sheets("BDD ").Range("B6").CurrentRegion
Set Bdd = .Offset(2).Resize(.Rows.Count - 2)
End With
'
' nombre de lignes
nbLignes = Bdd.Rows.Count
'
' destination des nouvelles données
With ThisWorkbook.Sheets("ALL RM").Range("B1").CurrentRegion
'
' Ligne suivante du tableau, retaillée au nombre de lignes
With .Offset(.Rows.Count).Resize(nbLignes)
' Transfert des valeurs.
.Columns(1).Value = "Sep 21"
.Columns(2).Resize(, 3).Value = Bdd.Columns(2).Resize(, 3).Value
.Columns(5).Value = Bdd.Columns(6).Value
.Columns(6).Value = Bdd.Columns(8).Value
.Columns(7).Formula = Replace(Formule, "@", .Row)
End With
End With
End Sub
Dernier point, quand vous voulez une macro, mettez un fichier .xlsm et pas .xlsx
Voici une proposition qui le fait.
Par contre je n'ai pas su où trouver "Sep 21" dans votre feuille BDD
Dans votre feuille ALL RM ce ne sont pas des dates en colonne B mais des textes 'Aug 21' ????
Evitez de mettre des espaces blancs en fin de noms de vos feuilles 'BDD ' , 'ALL RM ' vous vous faciliterez le travail ultérieur.
VB:
Sub Maj()
Const Formule As String = "=IFERROR(G@/F@,0)"
Dim Bdd As Range, Destination As Range
Dim nbLignes As Long
'
' toutes les données de bdd
With ThisWorkbook.Sheets("BDD ").Range("B6").CurrentRegion
Set Bdd = .Offset(2).Resize(.Rows.Count - 2)
End With
'
' nombre de lignes
nbLignes = Bdd.Rows.Count
'
' destination des nouvelles données
With ThisWorkbook.Sheets("ALL RM").Range("B1").CurrentRegion
'
' Ligne suivante du tableau, retaillée au nombre de lignes
With .Offset(.Rows.Count).Resize(nbLignes)
' Transfert des valeurs.
.Columns(1).Value = "Sep 21"
.Columns(2).Resize(, 3).Value = Bdd.Columns(2).Resize(, 3).Value
.Columns(5).Value = Bdd.Columns(6).Value
.Columns(6).Value = Bdd.Columns(8).Value
.Columns(7).Formula = Replace(Formule, "@", .Row)
End With
End With
End Sub
Dernier point, quand vous voulez une macro, mettez un fichier .xlsm et pas .xlsx
Est-il possible de programmer en VBA le fait que les données supérieur du tableau soient collés dans l'onglet "ALL RM" et que les données inférieur du tableau soient collés dans l'onglet "ALL FU" sachant que ces données peuvent augmenter ou diminuer d'un mois à l'autre au niveau du nombre de lignes exemple : Pour le mois de 09 2021 => les données liées à l'onglet "ALL RM" se terminent à la ligne 14 (voir excel ci-joint)
Pour le mois de 10 2021 => ces données peuvent se terminer à la ligne 24
Idem pour les données liés à l'onglet "ALL FU"
J'ai joint un fichier Excel illustrant mes propos.
Vous êtes sur un forum, d'échange et d'entre aide, pas chez une société de services qui répondrait à vos moindres désirs.
Votre fichier exemple n'est plus du tout le même que le premier, la demande n'est plus la même que la demande originale et la macro que je vous ai donnée n'y est même pas.
Vous n'avez pas non plus essayé d'adapter la macro à votre nouvelle demande, ni même testé quoique ce soit.
Alors pour moi, ce sera non. Je ne ferai pas votre travail à votre place.