Recherche dates tableau et copier lign VBA

Résolu
ivain34 Messages postés 12 Statut Membre -  
Iama Messages postés 324 Statut Membre -
Bonjour à tous,

D'abord un grand merci à tout ceux qui participent à faire vivre ce site et qui permettent a des debutants comme moi de faire des "merveilles"! :)

J'ai un petit soucis sur VBA et malgré de longues recherches je n'arrive pas a trouver une boucle qui correspond a ce que je veux faire. J'ai un tableau de données, la premiere colonne contient des dates (jj/mm/aaaa). Dans mon userform1 , j'ai deux textbox (1 & 2 qui correspondent à "date de debut", "date de fin") et un bouton rechercher.

Je souhaiterai, en cliquant sur le bouton rechercher, selectionner toutes les dates de la colonne A contenu entre "date debut" et "date fin".

Une fois ces valeurs selectionnées, je souhaiterai copier les lignes entieres correspondantes pour les coller dans une autre feuile.

D'avance merci pour votre aide car je suis dans la panade

En esperant ne pas avoir loupé de protocole a suivre pour un 1er post...

10 réponses

  1. Youha
     
    Sur quoi bloques-tu exactement ?
    L'évènement sur le clic ?
    La recherche des lignes comprises dans ton intervalle de date ?
    La copie de ces lignes ?
    0
  2. ivain34 Messages postés 12 Statut Membre
     
    Je bloque sur la recherche et la selection des lignes comprises dans mon intervalles de dates (textbox 1 et 2).

    Apres c'est bon.
    0
  3. ivain34 Messages postés 12 Statut Membre
     
    En gros je recherche un code du style :
    IF valeurs colonne A sont inférieurs à date de fin (textbox2) et supérieurs à date debut (textbox1)
    THEN selection des lignes entieres dont les valeurs colonne A correspondent à la condition
    0
  4. Youha
     
    Quand tu cliques sur le bouton rechercher, que se passe-t-il ?
    Tu as des variables qui viennent récupérer les valeurs de tes textbox ?
    Parce que logiquement cela devrait être quelque chose dans ce style.
    DerniereLigne= ActiveSheet.UsedRange.Rows.Count 
    Datedebut = textbox1.value 
    DateFin = Textbox2.value 
    
    For i = 1 to DerniereLigne 
        if Sheets("Le nom de ta feuille").Cells(i,1) <= DateFin and Sheets("Le nom de ta feuille").Cells(1,1) >= DateDebut Then 
            Worksheets("Le nom de ta feuille").Select 
            Worksheets("Le nom de ta feuille").Rows(i).copy 
            Sheets("Le nom de la feuille cible").Cells(Ligne ou tu copies, colonne).Paste 
        end if 
    Next i 
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ivain34 Messages postés 12 Statut Membre
     
    Ok super! grace a ton code que j'ai un peu transformé, j'y suis arrivé!!!! D'avance je m'excuse pour la syntaxe qui va faire surement en hérisser plus d'un :)

    Private Sub CommandButton1_Click()

    Dim DerniereLigne As Integer
    Dim DateDebut As Date
    Dim DateFin As Date
    Dim Li

    DerniereLigne = ActiveSheet.UsedRange.Rows.Count
    DateDebut = TextBox1.Value
    DateFin = TextBox2.Value

    For i = 1 To DerniereLigne
    If Sheets("Feuil1").Cells(i, 1) <= DateFin And Sheets("Feuil1").Cells(i, 1) >= DateDebut Then
    Worksheets("Feuil1").Select
    Worksheets("Feuil1").Rows(i).Copy

    Worksheets("feuil2").Activate
    Range("A65536").Select
    Selection.End(xlUp).Select

    Li = Selection.Row + 1
    Cells(Li, 1).Activate

    ActiveSheet.Paste

    End If
    Next i
    End Sub

    Bref ca marche! Des que je lance mon userform1, je peux rentrer ma date debut et fin (textbox 1 et 2). Des que je clique sur mon bouton "rechercher", la macro selectionne les lignes superieures à la date de debut et inférieures a la date de fin. Pour ensuite me copier le tout dans la feuille 2 à la suite les unes des autres.

    MERCI Youha d'avoir pris de ton temps pour ...me comprendre... et pour me repondre. :)

    Comment peut on poster ma feuille excel pour que cela puisse servir a d'autre?
    0
  7. Youha
     
    Pour poster ta feuille tu vas sur http://www.cijoint.fr/
    N'oublies pas d'enlever toutes données confidentielles :)
    Peux tu aussi cliquer sur le lien Résolu en haut a gauche de la page ?
    Bonne continuation !
    0
  8. ivain34 Messages postés 12 Statut Membre
     
    Ci joint le "programme" :)

    http://www.cijoint.fr/cjlink.php?file=cj201102/cijlcy4MIZ.xls
    0
  9. Iama Messages postés 324 Statut Membre 14
     
    Bonjour ivain34 et Youha

    Pouvez-vous me dire par curiosité quel est le rôle lignes
    Range("A65536").Select
    Selection.End(xlUp).Select
    dans la feuille2 avant la sélection des lignes.

    PS: je vais récupérer quelques lignes qui vont m'être utile
    Merci
    Iama
    0
  10. ivain34 Messages postés 12 Statut Membre
     
    Salut Lama

    Alors tout d'abord attention a mes explications, je ne fonctionne que par mimétisme et testS :).
    Ces quelques lignes permettent de selectionner la derniere ligne pleine de la colonne A (A65536).

    La suite du programme permet donc de selectionner/coller sur la 1er cellule vide de la colonne a:
    "variable"=selection.row+1
    Cells("variable", 1). activate
    'le 1 est bien sur a mettre a jour en fonction de ta colonne balayé
    active.sheet.paste

    Ce qui me permet de venir coller à la suite de ma base de données les informations.
    Il doit surement y avoir moins lourd ou mieux ... mais cette boucle marche :)
    0
  11. Iama Messages postés 324 Statut Membre 14
     
    Salut ivain34

    Merci pour l'explication, ce qui explique que leurs supressions ne perturbe pas le programme

    A+
    Iama
    0