Reporter les infos sur un tableau selon un critère

Bonjour la communauté

svp si vous pouvez jeter un coup d’œil sur mon fichier je souhaite que lorsque je renseigne la date sur le userform2 et je clique sur le bouton EDITER du userform2 il me renvoie les données relatives à cette date sur le tableau de la feuille3 avec une dernière ligne ou il y a le total de la colonne G

ci-joint mon fichier

Merci d'avance

Bonjour Sd3d88, bonjour le forum,

En pièce jointe ton fichier modifié. J'ai remplacé la TextBox par une ComboBox qui affiche les dates utilisées sans doublons.

Le code :

Private O1 As Worksheet 'déclare la variable O1 (onglet Feuil1)
Private O3 As Worksheet 'déclare la variable O3 (onglet Feuil3)
Private TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Private D As Object 'déclare la variable D (Dictionnaire)

Private Sub UserForm_Initialize() 'a l'initialisation de l'UserForm
Set O1 = Worksheets("Feuil1") 'définit l'onglet O1
Set O3 = Worksheets("Feuil3") 'définit l'onglet O3
TV = O1.Range("A3").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, 5)) = "" 'alimente le dictionnaire D avec la donnée en colonne 5 de chaque ligne (la date)
Next I 'prochaine ligne de la boucle
Me.ComboBox1.List = D.keys 'alimente la ComboBox1 avec la liste du dictionnaire sans doublon
End Sub

Private Sub CommandButton1_Click()
Dim I As Integer 'déclare la variable I (Incrément)
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 DC As Long 'déclare la variable DC (Date de la Combobox)
Dim DI As Long 'déclare la variable DI (Date de la ligne I)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

O3.Range("A1").CurrentRegion.Offset(1, 0).ClearContents 'efface d'éventuelles anciennes données de l'onglet O3
DC = CLng(DateSerial(Year(Me.ComboBox1.Value), Month(Me.ComboBox1.Value), Day(Me.ComboBox1.Value))) 'définit la date DC (convertie en entier long)
K = 1 'initialise la variable K
For I = 2 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    DI = CLng(DateSerial(Year(TV(I, 5)), Month(TV(I, 5)), Day(TV(I, 5)))) 'définit la date DI (convertie en entier long)
    If DC = DI Then 'condition : si les dates concordent
        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 2 : sur toutes les colonnes L du tableau des valeurs TV
            TL(L, K) = TV(I, L) 'récupère dans la ligne L de TL la donnée en colonne L de TV (=> transposition)
        Next L 'prochaine colonne de la boucle 2
        K = K + 1 'incrémente K (ajoute un colonne au tableau des lignes TL)
    End If 'fin de la condition
Next I 'prochaione ligne de la boucle 1
Set DEST = O3.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellue de destination DEST
'si K est supérieure à 1, renvoie le tableau TL transposé dans DEST redimensionnée
If K > 1 Then DEST.Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
O3.Activate 'active l'onglet O3
Unload Me 'vide et ferme l'UserForm
End Sub

Le fichier :

8sa3d88-ep-v01.xlsm (51.46 Ko)
Rechercher des sujets similaires à "reporter infos tableau critere"