Sélection données

Bonjour,

Je cherche une macro qui pourrait sélectionner les données de la feuille4(classeur2) -> dates (E) et les données (i) (sachant que j'ai des données entre "E" et "I" qui m'intéresse pas)

Par rapport au mois(et l'année) de la feuil3(classeur2),

afin de les coller dans le Feuil1 (classeur1) à la suite des dates précédentes.

Pourriez vous m'aidez ?

8classeur1.xlsm (35.73 Ko)
9classeur2.xlsm (40.76 Ko)

Cordialement

Bonjour Celtik, bonjour le forum,

Essaie ce code à placer dans un module standard du fichier Classeur1.xlxm :

Sub Macro1()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim ODt As Worksheet 'déclare la variable Odt (Onglet Date)
Dim ODn As Worksheet 'déclare la variable ODn (Onglet Données)
Dim DR As Date 'déclare la variable DR (Date de Référence)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim DT As Date 'déclare la variable DT (DaTe)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)

Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets(1) 'définit l'onglet destination OD
Set CS = Workbooks("classeur2.xlsm") 'définit la classeur source CS
Set ODt = CS.Worksheets("Feuil3") 'définit l'onglet de la date ODt
Set ODn = CS.Worksheets("Feuil4") 'définit l'onglet des données ODn
DR = DateSerial(Year(ODt.Range("B4")), Month(ODt.Range("B4")), Day(ODt.Range("B4"))) 'définit la date de référence
OD.Columns("M:M").ClearContents 'efface la colonne M de l'onget destination OD
OD.Columns("P:P").ClearContents 'efface la colonne P de l'onget destination OD
DL = ODn.Cells(Application.Rows.Count, "E").End(xlUp).Row 'définit la dernière ligne éditiée DL de la colonne E de l'onglet des données ODn
TV = ODn.Range("E4:I" & DL) 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
    DT = DateSerial(Year(TV(I, 1)), Month(TV(I, 1)), Day((TV(I, 1)))) 'définit la date DT de la la donnée de la boucle
    If DR = DT Then 'condition : si les dates coïncident
        K = K + 1 'incrémente K
        ReDim Preserve TL(1 To 4, 1 To K) 'redimensionne le tableau des lignes TL (4 lignes, K colonnes)
        TL(1, K) = TV(I, 1) 'récupère la donnée en colonne 1 de TV dans la ligne 1 de TL
        TL(4, K) = TV(I, 5) 'récupère la donnée en colonne 5 de TV dans la ligne 4 de TL
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
'si K est supérieure à zéro, renvoie le tableau TL transposé dans la cellule M8 redimensionnée
If K > 0 Then OD.Range("M8").Resize(K, 4).Value = Application.Transpose(TL)
End Sub
Rechercher des sujets similaires à "selection donnees"