Copier des données via une macro

Résolu
Val67 -  
 Val67 -
Bonjour,

Je souhaiterai via une macro, alimenter un onglet à partir d'un autre en fonction de plusieurs critères .

Je cherche, en effet, à copier :
- à partir de l'onglet extraction (actualisé chaque mois) les résultats de la colonne M dépendants de la colonne G et du mois saisi en cellule D1,
- vers l'onglet crédit cumulé en fonction de ces mêmes critères.

Cela est-il possible ? en pj le fichier

https://www.transfernow.net/dl/20220207TWeRs5AB

Vous remerciant par avance pour votre aide

2 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Oui c'est possible

    Macro à copier et à mettre dans un module de l'éditeur VBA (Alt+F11 pour ouvrir l'éditeur - Insertion - Module - coller la macro dans la page blanche et fermer l'éditeur
    Lancer la macro depuis une des feuilles du classeur par le ruban (Développeur -Macros) ou par un raccourci clavier (Options dans Macros ) ou par un bouton créé pour cela
    Sub transfert()
    
        Sheets("EXTRACTION").Select
         m = Range("D1")
        Range("M3").Select
        Range(Selection, Selection.End(xlDown)).Select ' selectionne jusqu' à la dernière ligne remplie de la colonne M
        Selection.Copy
        Sheets("CREDIT CUMULE").Select
        Cells(7, 5 + m).Select ' Se positionne en cellule ligne 7 colonne 5 + m
        ActiveSheet.Paste
        
    End Sub


    Cdlmnt
    Via
    0
    1. Val67
       
      Merci pour la macro , mais elle ne correspond pas tout à fait à ce que je souhaite faire (ma demande n'étant peut-être pas assez explicite)

      Les données que je cherche à extraire de l'onglet EXTRACTION (colonne M) :
      doivent être en lien avec les matricules présents (et ceux qui viendront se rajouter au cours de l'année) dans l'onglet CREDIT CUMULE ;
      être copiées dans l'onglet CREDIT CUMULE, sur les lignes afférentes aux matricules et dans la colonne "mois" (qui aura été définie en EXTRACTION!D1 : "Janvier" équivalent à 1, "Février" = 2, "Mars" = 3, etc...)

      Exemple :
      A partir de la cellule CREDIT CUMULE!A7 (matricule 232), la macro devra rechercher dans l'onglet EXTRACTION ce même matricule en colonne G pour trouver le résultat en colonne M (soit 32) et le copier en :
      - CREDIT CUMULE!F7 si EXTRACTION!D1 =1;
      - CREDIT CUMULE!G7 si EXTRACTION!D1 =2
      Si le matricule est inexistant dans l'onglet EXTRACTION (colonne G), alors rien.

      Ma nouvelle sollicitation est-elle réalisable ? Vous remerciant. Cdlt
      0
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonsoir

    Oui comme les matricules étaient identiques dans les 2 feuilles je pensais qu'il suffisait d'un copier-coller

    Là il faut boucler sur toutes les lignes te trouver la correspondance
    Macro à mettre dans un Module :
    Sub transfert()
    
       On Error Resume Next ' Si pas trouvé on passe au suivant
         m = Sheets("EXTRACTION").Range("D1") ' mois où relever
         der = Sheets("EXTRACTION").Columns(7).Find("*", , , , xlByColumns, xlPrevious).Row ' dernière ligne avec un matricule
         
       For n = 3 To der ' boucle sur les lignes depuis la 3 jusqu'à la dernière
       mat = Sheets("EXTRACTION").Range("G" & n) ' matricule à chercher
        x = Sheets("EXTRACTION").Range("M" & n) '  valeur à reporter
       ligne = Sheets("CREDIT CUMULE").Columns(1).Find(mat, , , xlWhole, xlByColumns, xlNext).Row ' ligne où se trouve ce matricule dans CUMULE
         Sheets("CREDIT CUMULE").Cells(ligne, 5 + m) = x ' reporte la valeur dans colonne adéquate
         Next
        
    End Sub
    

    Cdlmnt
    Via
    0
    1. Val67
       
      Bonsoir,
      Encore merci ;
      c'est le résultat souhaité : super !

      Cldt
      0