Bonjour,

Je voudrais votre avis sur ma macro.
Il s'agit d'une macro qui permet d'extraire les données d'une feuille pour les placer dans une autre feuille en effectuant différents traitements.
La première feuille contient donc des données de clients sous forme de tableau tous séparé par une seule ligne.

Et je voudrais connaître un moyen de pouvoir réinitialiser mes variables pour chaque nouveau tableau client.

Voilà merci!

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
50
51
52
53
54
55
Sub ExtractionClients()
'
Dim c As Integer
derniereligne = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Feuil1").Select
 
For i = 1 To derniereligne Step 1
'formule permettant d'extraire le nom des clients dans la feuille 2
    If Cells(i, 1).Value Like "Compt*" And Cells(i, 2).Value = 0 Then
    nomclient = Cells(i, 1).Value
    Sheets("Feuil2").Select
    Rows(4).Insert
    Cells(4, 1).Select
    ActiveCell.Value = nomclient
    'compter les cellules du tableau en partant de la cellule i à la cellule vide -3 (fin du tableau)
        Sheets("feuil1").Select
        c = 1
        Do While Not IsEmpty(Cells(i + c, 1))
        c = c + 1
        Loop
        c = c - 3
 
        Sheets("Feuil1").Select
            'Pour chaque cellule effectuer les opérations d'enregistrement en fonction de certaines conditions
            For y = 1 To c Step 1
            Cells(i + y, 1).Select
            If ActiveCell.Offset(0, 1) = "" Then
            report = ActiveCell.Offset(0, 4).Value - ActiveCell.Offset(0, 5).Value
            'MsgBox (report)
            ElseIf ActiveCell.Offset(0, 1) = "SG" Then
            paiement = ActiveCell.Offset(0, 4).Value - ActiveCell.Offset(0, 5).Value
            'MsgBox (paiement)
            ElseIf ActiveCell.Offset(0, 1) = "SMC" Then
            paiement = ActiveCell.Offset(0, 4).Value - ActiveCell.Offset(0, 5).Value
            'MsgBox (paiement)
            Else:
            vte = vte + ActiveCell.Offset(0, 4).Value - ActiveCell.Offset(0, 5).Value
            'MsgBox (vte)
            'echevte = ActiveCell.Offset(0, 6).Value
            'MsgBox (echevte)
            End If
            Next y
 
            Sheets("Feuil2").Select
            Cells(4, 1).Select
            ActiveCell.Offset(0, 5).Value = vte
            ActiveCell.Offset(0, 6).Value = report
            ActiveCell.Offset(0, 7).Value = paiement
 
 
    Sheets("Feuil1").Select
    End If
 
Next i
End Sub