Recherche dates tableau et copier lign VBA

Résolu/Fermé
ivain34
Messages postés
11
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
1 mars 2011
- Modifié par ivain34 le 7/02/2011 à 13:26
Iama
Messages postés
319
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
27 mars 2020
- 8 févr. 2011 à 10:53
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

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
ivain34
Messages postés
11
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

7 févr. 2011 à 14:32
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
ivain34
Messages postés
11
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

Modifié par ivain34 le 7/02/2011 à 14:50
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ivain34
Messages postés
11
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

7 févr. 2011 à 15:45
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
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
ivain34
Messages postés
11
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

7 févr. 2011 à 16:33
Ci joint le "programme" :)

http://www.cijoint.fr/cjlink.php?file=cj201102/cijlcy4MIZ.xls
0
Iama
Messages postés
319
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
27 mars 2020
14
8 févr. 2011 à 10: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
ivain34
Messages postés
11
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
1 mars 2011

8 févr. 2011 à 10:43
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
Iama
Messages postés
319
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
27 mars 2020
14
8 févr. 2011 à 10:53
Salut ivain34

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

A+
Iama
0