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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
| Private test As Boolean 'déclare la variable test
Private Sub Worksheet_Change(ByVal Target As Range)
'Réinitialise l'USF
If Not (Intersect(Target, Range("D4:E200")) Is Nothing) Then
Unload UserForm1
UserForm1.Show 0
End If
'Stop
'Interdire les cellules non aproprier Achat / Recette
If Target = "" Or Target.Count > 1 Then Exit Sub
If Not Intersect(Target, [D4:D65000]) Is Nothing Then
If Not IsNumeric(Target) Then MsgBox "Ce n'est pas une valeur numérique": Target = ""
If Left(Target.Offset(, -1), 5) <> [D2] Then MsgBox "Ce n'est pas un Achat": Target = "" '(, -1), 5)le 5 veut dire Achat = 5 lettre
End If
If Not Intersect(Target, [E4:E65000]) Is Nothing Then
If Not IsNumeric(Target) Then MsgBox "Ce n'est pas une valeur numérique": Target = ""
If Left(Target.Offset(, -2), 7) <> [E2] Then MsgBox "Ce n'est pas une Recette": Target = "" '(, -1), 7)le 5 veut dire Recette = 7 lettre
End If
'Stop
'Mettre la colonne "C" en nom propre
' Si plus d'une cellule sélectionnée, on sort
If Target.Count > 1 Then Exit Sub
' Si la cellule ne contient rien
If Target.Value = "" Then Exit Sub
' Sinon
' Si la cellule modifiée se trouve dans la plage A1:B10
If Not Intersect(Target, [C1:C300]) Is Nothing Then
' Comme on va modifier de nouveau la cellule
' empêcher les évênements de se lancer
Application.EnableEvents = False
' La valeur de la cellule modifiée est égale
' à l'évaluation de la fonction NOMPROPRE(Cellule)
Target.Value = Application.Evaluate("PROPER(""" & Target.Value & """)")
' réactiver les évènements
Application.EnableEvents = True
End If
'Stop
'Mettre le N° dans la colonne "K"
If test = True Then Exit Sub 'si la variable test est vrai, sort de la procédure
If Target.Column <> 12 Then Exit Sub 'si la colone de la cellule éditée est différente de 11, sort de la procédure Colonne "K"
If Target.Row < 4 Then Exit Sub 'si la ligne de la cellule éditée est inférieure à 4, sort de la procédure
If Selection.Cells.Count > 1 Then Exit Sub 'si le nombre de cellules sélectionnées est supérieur à 1, sort de la procédure
If Target.Value = "" Then Exit Sub 'si la cellule est effacée, sort de la procédure
test = True 'définit la variable test
Target.Value = "Nº " & Target.Value 'rajoute "Nº "
test = False 'redéfinit la variable test
End Sub
'Mettre la date ainsi que mise en forme de la ligne
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 1 Then Exit Sub 'si la cellule double-cliqué est ailleurs que dans la colonne A, sort de la procédure
Cancel = True 'evite le mode édition lié au double-clic
'place la date en évitant les problèmes d'inversion jour/mois
Target.Value = Format(Day(Date), "00") & "/" & Format(Month(Date), "00") & "/" & Year(Date)
'mise en forme de la ligne
With Range(Cells(Target.Row, 1), Cells(Target.Row, 11)) 'prend en compte les cellules des colonnes A à J de la cellule double-cliquée
With .Borders(xlEdgeLeft) 'ligne à gauche
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
With .Borders(xlEdgeTop) 'ligne du haut
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
With .Borders(xlEdgeBottom) 'ligne du bas
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
With .Borders(xlEdgeRight) 'ligne à drote
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
End With 'fin de la prose en compte des...
'mise en forme et valeur de la cellule en colonne G
Target.Offset(0, 6).NumberFormat = "#,##0.00 $" 'format
Target.Offset(0, 6).Font.Bold = True 'gras
'Target.Offset(0, 6).Value = 0 'valeur
'mise en forme et valeur de la cellule en colonne J
Target.Offset(0, 10).NumberFormat = "#,##0.00 $" 'format
Target.Offset(0, 10).Font.Bold = True 'gras
Target.Offset(0, 10).Font.Name = "Times New Roman"
Target.Offset(0, 10).Font.Color = vbBlue
'Target.Offset(0, 9).Value = Target.Offset(-1, 9) 'valeur
Target.Offset(0, 10).Interior.Color = vbYellow
Target.Offset(0, 10).Font.Italic = True
End Sub |
Partager