Bonjour,
J'ai un fichier word avec un tableau ou un calcul est réalisé et des contrôles de cohérences effectuées via macro (merci le Forum ! ).
Je souhaiterai rendre certaine cellule non saisissable (A1, A2, A3 et A7 sur mon exemple).
Je vous remercie par avance pour votre aide.
Bonne journée
TESTV1.docx
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
 
Private Sub CommandButton1_Click()
 
 
Dim WdDoc As Document
Dim I As Integer, SommeTotale As Integer, SommeA4A5A6 As Integer, ValeurA1A2_A4_A5 As Integer
Dim ValeurA1 As Integer, ValeurA3 As Integer, ValeurA7 As Integer
Dim Message As String
 
    Set WdDoc = ActiveDocument
    SommeA4A5A6 = 0: ValeurA1A2_A4_A5 = 0: ValeurA1 = 0: ValeurA3 = 0: ValeurA7 = 0
    Message = "Contrôle des valeurs : " & Chr(10)
 
    With WdDoc
         With .Tables(1).Rows(2).Range
              For I = 1 To .Cells.Count
                  With .Cells(I)
                  'Debug.Print I & " : " & Len(.Range)
                         If Len(.Range) > 2 Then
                           ' SommeTotale = SommeTotale + Mid(.Range, 1, Len(.Range) - 2)
                            Select Case I
                                   Case 1
                                        ValeurA1 = Mid(.Range, 1, Len(.Range) - 2)
                                        ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 + Mid(.Range, 1, Len(.Range) - 2)
                                   Case 2
                                        ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 + Mid(.Range, 1, Len(.Range) - 2)
                                   Case 3
                                        ValeurA3 = Mid(.Range, 1, Len(.Range) - 2)
                                   Case 4
                                        ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 - Mid(.Range, 1, Len(.Range) - 2)
                                        SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                   Case 5
                                        ValeurA1A2_A4_A5 = ValeurA1A2_A4_A5 - Mid(.Range, 1, Len(.Range) - 2)
                                        SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                   Case 6
                                        SommeA4A5A6 = SommeA4A5A6 + Mid(.Range, 1, Len(.Range) - 2)
                                   Case 7
                                        .Range = ValeurA1A2_A4_A5
                                        ValeurA7 = Mid(.Range, 1, Len(.Range) - 2)
                            End Select
                        End If
                 End With
              Next I
         End With
    End With
 
   ' Contrôles :
   ' -   A7 =A1+A2-A4-A5
   ' -   Message d'alerte si A1>15 et A7>A1+10
   ' -   Message alerte si A1<15 et A7 >25
   ' -   Message alerte si A3<> A4+A5+A6
   ' -   Message d'alerte si A7>60
 
 
    If ValeurA7 > 60 Then Message = "Solde du CET  > 60" & Chr(10)
    If ValeurA1 > 15 And ValeurA7 > ValeurA1 + 10 Then Message = Message & "Solde du CET avant versement > 15 et Solde du CET  > (Solde du CET avant versement+10)" & Chr(10)
    If ValeurA1 < 15 And ValeurA7 > 25 Then Message = Message & "Solde du CET avant versement <15 et Solde du CET > 25" & Chr(10)
    If ValeurA3 <> SommeA4A5A6 Then Message = Message & "Nombre de jours dépassant le seuil de 15 jours  <> Option 1+Option 2+Option 3" & Chr(10)
    'If ValeurA7 = ValeurA1A2_A4_A5 Then Message = Message & "Le solde du CET n'est pas correct" & Chr(10)
 
    DoEvents
 
    If Message <> "Contrôle des valeurs : " & Chr(10) Then
       MsgBox Message
    Else
       MsgBox "Tous les contrôles sont OK !"
    End If
 
    Set WdDoc = Nothing
 
 
 
 
 
End Sub