IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copie de donnée vers un autre classeur en fonction d'un code production et d'une date


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Copie de donnée vers un autre classeur en fonction d'un code production et d'une date
    Bonjours à tous!!!

    Je m'en remets à vous car j'ai un souci sous Excel à mon travail!!! Voilà mon problème (je vais essayer d'être le plus clair possible):

    Je joins mes 2 fichiers Excel exemple afin que l’on comprenne mieux.

    Je voudrais que par exemple pour mon code 5045 en colonne A, je puisse copier les quantités de pièces de la colonne C qui ont été réalisées entre le 05/01/2009 et le 11/01/2009 dans la semaine en question en fonction du même code du classeur "Feuille de suivi ligne 1.xls" avec son nombre d’heures et je doit faire ca pour chaque code. Il faut donc que ma macro trouve le code identique de la colonne A de ce classeur au code de la feuille du deuxième classeur afin de copier els données au bon endroit tout en sachant que mon code s'étal aussi sur plusieurs lignes car plusieurs dates et copier les données à la bonne semaine selon la date en additionnant entre elles les valeurs!!!

    Mon problème est donc que je perds du temps à recopier ces données en double. Je voudrais faire une recopie automatique en passant par du code VBA, mais là c'est assez complexe pour moi car je doit recopier les données par semaine en fonction de la date de travaille et surtout en fonction du code production.

    Cordialement, TEMARA79
    Fichiers attachés Fichiers attachés

  2. #2
    Membre habitué Avatar de Brunodm13
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 129
    Points : 143
    Points
    143
    Par défaut
    Bonjour,

    Pourquoi ne fais-tu pas un tableau croisé dynamique ?

    Bruno

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Ou bien, utilise un filtre automatique si ça suffit...
    Un exemple de ce que tu peux faire, en supposant tes dates dans la colonne C.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DateDeb = Range("Z2").Value 'ou ce que tu veux
    DateFin = Range("Z3").Value  'ou ce que tu veux
    Range("C:C").AutoFilter Field:=1, Criteria1:=">" & DateDeb, Operator:=xlAnd, Criteria2:="<" & DateFin
    ou plus simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C:C").AutoFilter Field:=1, Criteria1:=">" & Range("Z2").Value, Operator:=xlAnd, Criteria2:="<" & Range("Z3").Value
    Bon we

  4. #4
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour,

    Ajoute un UserForm à ton classeur, nomme le ufSaisie.
    Sur ce USF, tu places
    un combobox nommé CodeProduit
    un dtPicker
    un commandButton nommé BtnValider
    un commandButton nommé BtnAnnuler
    Je te laisse mettre les labels
    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Option Explicit
     
     
    Private Sub BtnAnnuler_Click()
    Unload Me: End
     
    End Sub
     
    Private Sub BtnValider_Click()
     
    Code = CodeProduit.Value
     
    DateDepart = DTPicker1
    'si le jour saisie n'est pas un lundi, on place le lundi précédent
    If Weekday(DTPicker1) <> 1 Then _
        DateDepart = DTPicker1 - Weekday(DTPicker1, 2) + 1 Else DateDepart = DTPicker1
    'le dimanche suivant le lundi
    DateFin = DateDepart + 6
    Me.Hide
    'appel de la macro d'import
    Importation
    Unload Me
    End Sub
     
     
    Private Sub UserForm_Initialize()
    Dim DerLi As Long
    Dim i As Long, j As Long
    Dim StrTemp As String
    'la plage nommée code est définie en fonction des code saisie dans la colonne A de ce classeur
    'Alimentation du ComboBox
    CodeProduit.List() = Range(ThisWorkbook.Names("Code").RefersTo).Value
    'tri alphabétique
        With CodeProduit
            For i = 0 To .ListCount - 1
                For j = 0 To .ListCount - 1
                    If .List(i) < .List(j) Then
                        StrTemp = .List(i)
                        .List(i) = .List(j)
                        .List(j) = StrTemp
                    End If
                Next j
            Next i
        End With
    'Affichage du 1er élément
    CodeProduit.ListIndex = 0
    'Je te laisse le soin de mettre la macro d'ouverture du Classeur ici
    Workbooks("Feuille de suivi productions.xls").Activate
    End Sub
    Dans un module standard
    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Option Explicit
     
    Public DateDepart As Date
    Public DateFin As Date
    Public Code As String
    Public WbProd As Workbook
    Public ThWb As Workbook
     
    Sub Depart()
    Application.ScreenUpdating = False
    ufSaisie.Show
    End Sub
     
    Sub Importation()
    Dim ligneDep As Long
    Dim LigneFin As Long
    Dim LigneCode As Long
    Dim ColSem As Integer
    Dim i As Long
    Dim SommePieces As Long
    Dim SommeHeures As Double '(pour les virgules)
     
    Set WbProd = Workbooks("Feuille de suivi productions.xls")
    Set ThWb = ThisWorkbook
     
    WbProd.Activate
    Sheets("Ligne1").Activate
    'Recherche des ligne qui contiennent le code choisi
    ligneDep = Columns("A").Find(Code).Row
    LigneFin = Columns("A").Find(Code, , , , , xlPrevious).Row
    'Somme des heures et des pièces
    SommePieces = 0
    SommeHeures = 0
    For i = ligneDep To LigneFin
        If CDate(Cells(i, "B").Value) >= DateDepart And _
            CDate(Cells(i, "B").Value) <= DateFin Then
            SommePieces = SommePieces + Cells(i, "C")
            SommeHeures = SommeHeures + Cells(i, "E")
        End If
    Next
    'Recherche de la ligne correspondante au code saisie dans ce classeur
    ThWb.Activate
    Sheets("Production ligne 1").Activate
    LigneCode = Columns("A").Find(Code).Row
    'Recherche de la colonne
    ColSem = Rows(3).Find(DateDepart).Column - 1
    'Collage des données
    Cells(LigneCode, ColSem) = SommePieces
    Cells(LigneCode, ColSem + 1) = SommeHeures
    Application.ScreenUpdating = True
     
    MsgBox "Opération effectuée avec succès!"
    End Sub
    Tu places un bouton sur ton classeur et lui affectes la macro Depart

    Cordialement

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Je viens de tester et retester et la solution de Fred65200 est impeccable!!! C'est pile poil ce qui résolu mon problème, allez hop résolu!!
    Merci à tous pour vos solutions et principalement à toi Fred65200 pour tes conseils!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copie de données dans TCD vers un autre classeur Excel
    Par jerokat dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/02/2015, 12h21
  2. [XL-2007] Copie données d'un classeur vers un autre classeur
    Par carlux3 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2010, 15h14
  3. ouverture et copie de données vers un autre classeur variable
    Par mustapha.ezzaouia dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/12/2009, 15h24
  4. Copie de colonnes vers un autre classeur
    Par Jeyjey1 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/02/2008, 12h14
  5. Copie de base de données vers un autre PC
    Par claire.martin dans le forum Access
    Réponses: 19
    Dernier message: 06/01/2006, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo