Bonjour,j'ai crée un petit programme permettant d'effectuer de la saisie administrative.
Je vous présente rapidement son fonctionnement pour m'aider à resoudre mon problème.
Je peux effectuer de la saisie à partir d'une userform et quand je valide tous s'enregistre dans la feuille saisie (chaque dossier représente une ligne;par exemple A1:agence, B1:groupe, C1:affectataire,D1:date...)
Je souhaite avoir des statistique sur ces dossiers en fonction de 2 critères:l'agence et la date(qui seront bornés :date de début et date de fin)
J'ai donc crée un bouton qui ouvre une userform et qui permet de selectionner l'agence dans une combobox1 et saisir la date de début dans une texboxdate1 et la date de fin dans la texboxdate2.
Je souhaite que en cliquant sur le bouton OK, que le programme recherche dans la feuille "saisie", toutes les lignes qui comportent dans leur colonne A l'agence(choisie dans la combobox1) et dont la date se trouvant dans la colonne D est compri dans l'intervalle saisie (dans les 2 textboxdate).
Quand le programme trouve ces 2 critéres réunies sur la même ligne, il devra copier les colonnes A,I,K,AE et AF dans la feuille "traitement" et ensuite le programme continue la recherche ce juska se qu'il est fini d'analyser la feuille saisie.
Quand tous les dossiers répondant à mes critéres se trouveront dans la feuille "traitement" je pourrais me débrouiller tous seul pour programmer des statistiques.
J'éspére avoir été le plus clair possible.
Je vous joint les codes derriére le bouton OK, ces codes "beug" car j'ai l'impression qu'il "beug" au moment de commencer à rechercher un deuxième dossier répondant au critéres car le programme fait le débogage après avoir copier un seul dossier dans la feuille traitement(le débogage se fait sur le code entre <---- et ----> ci dessous)
à partir de làCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Private Sub CommandButton1_Click() If ComboBox1 = "" Then MsgBox "Vous n'avez pas saisie d'agence !", vbExclamation End If If TextBoxDate1 = "" Or TextBoxDate2 = "" Then MsgBox "Saisie incomplète !", vbExclamation Else If CDate(TextBoxDate1) > CDate(TextBoxDate2) Then MsgBox " La date de début est " & vbCr _ & "supérieur à la date de fin !", vbExclamation Exit Sub End If End If Application.ScreenUpdating = False
De plus je vous passe le programme tel qu'il "beug" pour que je l'éspére vous trouviez la solution.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Ecrt = 0 For i = 3 To Sheets("Saisie").Range("A65536").End(xlUp).Row <----If Sheets("Saisie").Cells(i, 1) = ComboBox1 And CDate(Sheets("Saisie").Cells(i, 4)) >= CDate(TextBoxDate1) And _ CDate(Sheets("Saisie").Cells(i, 4)) <= CDate(TextBoxDate2) Then----> Ecrt = Ecrt + 1 Sheets("Traitement").Cells(Ecrt, 1) = Sheets("Saisie").Cells(i, 1) Sheets("Traitement").Cells(Ecrt, 2) = Sheets("Saisie").Cells(i, 9) Sheets("Traitement").Cells(Ecrt, 3) = Sheets("Saisie").Cells(i, 11) Sheets("Traitement").Cells(Ecrt, 4) = Sheets("Saisie").Cells(i, 31) Sheets("Traitement").Cells(Ecrt, 5) = Sheets("Saisie").Cells(i, 32) End If Next i MsgBox Ecrt & " ligne(s) correspondante(s) trouvée(s) !" Call titre Application.ScreenUpdating = True UserForm4.Hide End Sub
Cdt
Piéce jointe: http://cjoint.com/?izkaPMspuV
Pour la recherche prenez l'agence: AE17 79 et comme date 01/01/2008 au 31/12/2008 car 2 dossiers répondent à ces critéres