Bonjour à tous,
Dans un cadre associatif, piscine, je souhaite informatiser le rapprochement bancaire. En effet nous éditons pas mal de chèque à destination de nos adhérents (remboursement abonnement).
Bref plus précisément, je m'explique, en feuille "BD" j'ai un tableau en A1:F9 pavec des nuléros de chèque en format 7 chiffres et le statut des chèques (encaissé ou non encaissé en colonne E.
- Je me suis amusé à créer un userform1 pour consulter le statut d'un numéro de chèque selectionné dans ma combobox, j'arrive via 2 controles optionbutton à modifier le statut et c'est déjà pas mal à mon niveau.
- Ensuite et par défi mais aussi par souci de rapidité, je me suis dit, pourquoi pas à partir d'un nouveau Userform, soit l'userform2, faire apparaître dans une listbox la liste de tous les chèques non encaissé du tableau, selectionner que les lignes qui nous intéresse (c'est à dire qu'on veut changer leur statut car en fonction de notre relevé banque on sait qu'ils ont été encaissé) , bref en validant le code vba mettra à jour le tableau initial et plus particulièrement la colonne E puis inscrira dans la colonne F : -(valeur de la colonne C).
Pour ce faire et afin de vous expliquer mon raisonnement, je suis parvenu a afficher dans une listbox1 du userform2 la liste des chèques non encaissés, j'ai modifier les propriétés de la listbox afin de selectionner plusieurs lignes, ces mêmes lignes sont ensuites insérées dans ma feuille BD en Z3:AC... puis là je séche, je ne sais pas comment mettre à jour mon tableau initial en fonction de cette extraction, je me doute que je dois boubler sur ce qu'il y a de présent en AA.... et comparer les valeurs avec celles présentes en colonne B (c'est à dire les numéros de chèques), bref je fais appel à votre précieuse aide et vous remercie par avance.
Je vous joins le fichier Excel
et ci-dessous les lignes de code qui me posent plus particulièrement problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 Private Sub ValiderSaisie_Click() Dim Ligne As Long Dim Cel As Range Range("Z3:AC500").Clear ' je créé ici une petite extraction des lignes selectionnées de la listebox en changeant le statut des chèques _ en "ENCAISSE" suite par exemple à la reception du relevé banquaire où l'on voit les num chèque qui ont été débité _ J = 3 'ligne 3 de ma feuille BD With ListBox1 For i = 0 To .ListCount - 1 If .Selected(i) = True Then Cells(J, 26) = .List(i, 0): Cells(J, 27) = Format(.List(i, 1), "0000000"): Cells(J, 28) = .List(i, 2): Cells(J, 29) = "ENCAISSE" .Selected(i) = False J = J + 1 End If Next End With Range("AA3").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlDown)).Select Selection.NumberFormat = "0000000" ' ici je veux que le code vba regarde dans cette liste fraichement extraite, en colonne AA et si il trouve _ le num chèque de la ligne (début à AA3)en colonne B(début ligne 2) alors il met à jour la valeur de la _ colonne E avec celle de la colonne AC soit ENCAISSE, il faut prévoir une boucle pour boucler sur toutes _ les valeurs de la colonne AA With Sheets("BD") Set Cel = .Columns("B").Find(what:=.Range("AA3"), LookIn:=xlValues, lookat:=xlWhole) If Not Cel Is Nothing Then Ligne = Cel.Row If MsgBox("Voulez-vous modifier le statut de chèque n° " & Me.ComboBox1 & " ?", _ vbQuestion + vbYesNo, "Modification") <> vbYes Then Exit Sub .Range("E" & Ligne) = "ENCAISSE" .Range("F" & Ligne) = "-" & .Range("C" & Ligne) Else '.Range("F" & Ligne) = 0 ' .Range("E" & Ligne) = "NON ENCAISSE" End If End With End Sub
Partager