Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Transfère de données vers un autre fichier en VBA

mmaatthh

XLDnaute Nouveau
Bonjour le forum,

Je me tourne vers vous pour une partie de mon projet qui est au-delà de mon niveau VBA. J’ai donc besoin d’un peu d’aide pour le squelette et je pense que je pourrais greffer un peu de viande autour des os par la suite.

J’ai deux fichiers, le premier se nomme Calculateur et génère un horaire présentant le numéro d’employé et son quart de travail à une date donnée. Ce fichier est une zone de travail pour générer les horaires de travail.

Le second fichier se nomme Données dans lequel il y a une feuille nommée menu (elle n’est pas utile pour cette partie du projet) et une feuille pour chaque employé. Ces feuilles ont le même nom que le numéro d’employé que l’on retrouve dans le fichier Calculateur et contienne toutes les dates d’une année dans la colonne A.

Voici ce que je tente de faire :

Lorsque le travail dans le fichier Calculateur est fait, un bouton lance une macro qui ouvrirait le fichier Données et, pour chaque employé, sélectionnerait la feuille correspondante et y copierait le quart de travail à la bonne date.

Merci Beaucoup,
 

Pièces jointes

  • Calculateur.xlsx
    14.3 KB · Affichages: 6
  • Données.xlsx
    21.8 KB · Affichages: 10

Jacky67

XLDnaute Barbatruc
Bonjour,
Une proposition en PJ avec ce code
Dans l'exemple
-Les dates commencent en C3, et les données à copier en ligne 5
-Les deux classeurs sont dans le même répertoire.
-Les feuilles id_Employé "1-45-3-24 ..... " existent dans le classeur "Données.xlsx"
VB:
Sub transfert()
    Dim c As Range, d, Col&
    Application.ScreenUpdating = False
    Workbooks.Open Filename:=ThisWorkbook.Path & "\Données.xlsx"
    With ThisWorkbook
    With .Sheets("Feuil1")
        d = .[c3]: Col = Application.CountA(.Rows(3))
        For Each c In .Range("b5:b" & .Cells(.Rows.Count, "b").End(xlUp).Row)
            With Workbooks("Données.xlsx")
                With .Sheets(CStr(c))
                    c.Offset(, 1).Resize(, Col).Copy
                    .Cells(Application.Match(CLng(CDate(d)), .[a:a], 0), 2).PasteSpecial , Transpose:=True
                End With
            End With
        Next
        End With
    End With
    Application.CutCopyMode = False
    Workbooks("Données.xlsx").Close True
End Sub
 

Pièces jointes

  • Calculateur.xlsm
    24.6 KB · Affichages: 17
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…