XL 2013 Copier des données dans une base de données dont la dernière ligne change tous les mois

onyirimba

XLDnaute Junior
Supporter XLD
Bonjour,

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
J'ai joint un fichier qui illustre mes propos.

Merci d'avance de votre aide.

1633529295192.png

1633529346340.png
 

Pièces jointes

  • VBA VBA Stock 09 2021.xlsx
    28.4 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Bonjour,

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

Cordialement
 

Pièces jointes

  • VBA VBA Stock 09 2021.xlsm
    40.4 KB · Affichages: 3
Dernière édition:

onyirimba

XLDnaute Junior
Supporter XLD
Bonjour,

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

Cordialement
Bonjour,

Est-ce que vous faire que la Macro rajoute un trait noir au terme du collage dans l'onglet "ALL RM" juste après la dernière ligne ?

Merci d'avance pour votre aide.



1633609297149.png
 

Pièces jointes

  • VBA VBA Stock 09 2021 (1).xlsm
    40.4 KB · Affichages: 1

onyirimba

XLDnaute Junior
Supporter XLD
Bonjour

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.

Merci d'avance pour votre aide
Cordialement


1634204608494.png
 

Pièces jointes

  • VBA VBA Stock 09 2021.xlsm
    33.4 KB · Affichages: 3

Hasco

XLDnaute Barbatruc
Bonjour,

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.
 

Discussions similaires

Statistiques des forums

Discussions
291 730
Messages
1 917 543
Membres
179 714
dernier inscrit
saiter
Haut Bas