Recherche date puis copier coller la ligne

Y compris Power BI, Power Query et toute autre question en lien avec Excel
T
TraderAS
Membre habitué
Membre habitué
Messages : 137
Inscrit le : 17 février 2017
Version d'Excel : 2013

Message par TraderAS » 28 février 2017, 08:56

Bonjour

j'ai une base de données composée des salariés de l'usine, chaque employé avec différents détails (mois du salaire, salaire de base, primes, ancienneté, etc.), chaque employé est répété sur 12 lignes,
je souhaite faire un code VB, qui me permet de rechercher la cellule contenant la date correspondant au mois X, ensuite il copie/colle toute la ligne dans une autre feuille, de telle sorte avoir la liste des employés et leur salaire pour chaque mois séparés

Merci
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'860
Appréciations reçues : 176
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 28 février 2017, 10:05

Bonjour,

La date se trouve dans quelle colonne et sous quel format ?
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
T
TraderAS
Membre habitué
Membre habitué
Messages : 137
Inscrit le : 17 février 2017
Version d'Excel : 2013

Message par TraderAS » 28 février 2017, 10:18

RE

c'est de la forme 201601: c'est le mois de Janvier 2016, j'ai rattaché le fichier avec cette discussion pour être plus claire
En faite je vais créée 12 feuilles correspondants aux 12 mois, et chaque feuille comprendra la liste des salariés correspondants au mois de la feuille

Merci

SalairesTest.xls
(21.5 Kio) Téléchargé 22 fois
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'860
Appréciations reçues : 176
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 28 février 2017, 10:42

Re,

Visiblement, invisiblement devrais-je plutôt dire, ton fichier n'est pas passé... 201601 ! Est-tu sûre que c'est un format de date ou bien juste ta manière à toi d'exprimer cette date ? Un fichier exemple serait vraiment le bienvenu...
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
T
TraderAS
Membre habitué
Membre habitué
Messages : 137
Inscrit le : 17 février 2017
Version d'Excel : 2013

Message par TraderAS » 28 février 2017, 11:12

Re

si je l'ai rattaché,

Merci
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 3'860
Appréciations reçues : 176
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 28 février 2017, 11:20

Re,

En piece jointe ton fichier avec le code ci-dessous :
Sub Macro2()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim J As Integer 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim L As Integer 'déclare la variable L (incrément)
Dim OD As Worksheet 'déclare la variable OD (Onglet de Destination)
Dim TL() As Variant 'déclare la variable O (Tableau des Lignes)

Set O = Worksheets("sal   2016") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    D(TV(I, 1)) = TV(I, 1) 'alimente le dictionnaire D avec les données en colonne 1 du tableau des valeurs TV
Next I 'prochaine ligne de la boucle
TMP = D.keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire D sans doublon
For J = 0 To UBound(TMP) 'boucle 1 : sur tous les éléments du tableau temporaire TMP
    K = 1 'initialise la variable K
    Erase TL 'vide le tableau TL
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
    Set OD = Sheets(Right(TMP(J), 2)) 'définit l'onglet OD (génère une erreur si cet onglet n'existe pas)
    If Err <> 0 Then 'condition : si une erreur a été générée
        Sheets.Add After:=Sheets(Sheets.Count) 'ajoute un onglet en dernière position dans le classeur
        ActiveSheet.Name = Right(TMP(J), 2) 'renomme l'onglet avec les deux derniers caractères de la date (=le mois)
        Set OD = ActiveSheet 'définit l'onglet OD
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs
    OD.Cells.ClearContents 'efface le contenu de l'onglet OD
    OD.Range("A1").Resize(1, UBound(TV, 2)).Value = Application.Index(TV, 1) 'renvoie dans A1 redimensionnée de l'onglet OD, la premiere ligne du tableau des valeurs TV (les en-têtes)
    For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
        If CStr(Right(TV(I, 1), 2)) = OD.Name Then 'condition : si les deux derniers caractères de la donnée ligne I colonne 1 de TV correspondent au nom de l'onglet OD
            ReDim Preserve TL(1 To UBound(TV, 2), 1 To K) 'redimensionne le tableau des lignes TL (autant de lignes que TV a de colonnes, K colonnes)
            For L = 1 To UBound(TV, 2) 'boucle 3 : sur toutes les colonnes du tableau des valeurs TV
                TL(L, K) = TV(I, L) 'récupère dans la ligne L de TL, la valeur de la donnée en colonne L de TV (= Transposition)
            Next L 'prochaine colonne de la boucle 3
            K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
        End If 'fin de la condition
    Next I 'prochaine ligne de la boucle 2
    'si K est supérieure à 1, renvoie dans A2 redimensionnée de l'onglet OD le tableau TL transposé
    If K > 1 Then OD.Range("A2").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
Next J 'prochaine élément de la boucle 1
End Sub
Le fichier :
Trader_v01.xls
(15 Kio) Téléchargé 28 fois
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
T
TraderAS
Membre habitué
Membre habitué
Messages : 137
Inscrit le : 17 février 2017
Version d'Excel : 2013

Message par TraderAS » 28 février 2017, 11:54

Re

Ca marche, merci beaucoup pour votre aide

As
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message