Bonjour,
Je suis en train de réaliser un fichier qui permet de gérer une facturation client pour une entreprise.
Les clients paient des honoraires au mois, au trimestre (en 3 ou 4 acomptes), au semestre et à l'année.
Du coup, avec ce que j'ai fait je dois utiliser une macro pour changer les formules certains cellules en fonction de ces différents paramètres.
Voici mes 2 macros (attention, je suis débutant et je pique des bouts de codes ici et là pour que ça marche).

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Sub changement_formule_honoraires_client_sans_remise()
 
ActiveSheet.Unprotect
Dim lig, col, col_ex, col_tampon_num_ex, col_honoraires,  col_tampon_hono_n_1, col_tampon_hono_n_2, col_nouveau, col_hono_base
 
'initialisation des variables
    col = "AJ" 'colonne contenant la cellule à modifier (cellule de départ)
    col_ex = "AF" 'colonne contenant le n° de l'exercice
    col_tampon_num_ex = "AG" 'colonne tampon qui recopie le n° de l'exercice
    col_tampon_hono_n_1 = "AH" 'colonne contenant la recopie des honoraires de N-1
    col_tampon_hono_n_2 = "AI" 'colonne contenant la recopie des honoraires de N-2
    col_honoraires = "AN" 'colonne des honoraires de N+1
    col_nouveau = "Z" 'colonne qui définit si le client est un nouveau client ou non
    col_hono_base = "AA" 'colonne qui contient les honoraires de base
    If ActiveCell.Row <= 8 Then
    lig = ActiveCell.Row
    ElseIf ActiveCell.Row > 8 Then
    lig = ActiveCell.Row + 1
    Else: lig = ActiveCell.Row + 1
    End If
 
Application.ScreenUpdating = False
 
Columns(col_tampon_num_ex & ":" & col_tampon_hono_n_2).EntireColumn.Hidden = False
 
Cells(lig, col).Select 'on se place sur la cellule à modifier
 
If Cells(lig, col_ex) = 0 And Cells(lig, col_nouveau) = "Non" Then
 
        Cells(lig, col_ex).Copy 'copie du n° d'exercice
        Cells(lig, col_tampon_num_ex).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Cells(lig, col).Select
 
        Cells(lig, col_honoraires).Copy 'copie du montant des honoraires de N+1
        Cells(lig, col_tampon_hono_n_1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Cells(lig, col_tampon_hono_n_2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 
        Cells(lig, col).Select
 
 
ElseIf Cells(lig, col_ex) > 0 And Cells(lig, col_ex) <> Cells(lig, col_tampon_num_ex) And Cells(lig, col_nouveau) = "Non" _
                            And Cells(lig, col_tampon_hono_n_1) <> "" Then
        Cells(lig, col_tampon_hono_n_1).Copy 'copie du montant des honoraires tampon N-1 dans tampon N-2
        Cells(lig, col_tampon_hono_n_2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                                        SkipBlanks:=False, Transpose:=False
        Cells(lig, col).Select
 
        Cells(lig, col_ex).Copy 'copie du n° d'exercice
        Cells(lig, col_tampon_num_ex).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                                        SkipBlanks:=False, Transpose:=False
        Cells(lig, col).Select
 
        Cells(lig, col_honoraires).Copy 'copie du montant des honoraires de N+1 dans tampon N-1
        Cells(lig, col_tampon_hono_n_1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                                        SkipBlanks:=False, Transpose:=False
 
 
'première année, quel que soit le numéro de l'exercice
ElseIf Cells(lig, col_ex) > 0 And Cells(lig, col_ex) <> Cells(lig, col_tampon_num_ex) And Cells(lig, col_nouveau) = "Non" _
                            And Cells(lig, col_tampon_hono_n_1) = "" Then
        Cells(lig, col_hono_base).Copy 'copie du montant des honoraires de base dans colonne tampon n-1
        Cells(lig, col_tampon_hono_n_1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                                        SkipBlanks:=False, Transpose:=False
        Cells(lig, col_tampon_hono_n_2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                                        SkipBlanks:=False, Transpose:=False
 
        Cells(lig, col).Select
 
        Cells(lig, col_ex).Copy 'copie du n° d'exercice
        Cells(lig, col_tampon_num_ex).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                                        SkipBlanks:=False, Transpose:=False
 
 
 
End If
 
Columns(col_tampon_num_ex & ":" & col_tampon_hono_n_2).EntireColumn.Hidden = True
Application.CutCopyMode = False
Cells(lig, col).Select
Application.ScreenUpdating = True
'ActiveSheet.Protect
End Sub
Donc, je ne vous en voudrais si vous me dites que mon code est nul mais bon... ça marche ! Si vous voulez bien me corriger ! Merci.

Et puis, 2ème question : j'ai une colonne qui doit être "visitée" par la macro ci-dessus pour voir s'il est nécessaire de changer la formule de cette cellule.
Cela concerne la colonne AJ. Je suppose qu'il doit falloir faire une boucle mais j'ai du mal à la réaliser ! Merci de votre aide.