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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
| Option Explicit
Sub macro1_Kiera()
Dim oRange As Range
Dim oCol As Range
Dim i As Integer
With Worksheets("Feuil1")
Set oRange = .Range("A1")
For i = 0 To oRange.CurrentRegion.End(xlDown).Row - 1
oRange.Offset(i, 2) = oRange.Offset(i, 0) + oRange.Offset(i, 1)
oRange.Offset(i, 3) = oRange.Offset(i, 0) - oRange.Offset(i, 1)
'Pour les affichages en fonction des valeurs, on peut passer par deux méthodes distinctes :
'1) Des tests sur les valeurs, tout simplement, comme tu as fait.
'2) Par l'ajout de mises en forme conditionnelles (pour moi plus propre, car si on change une valeur "à la mano", cela corrige automatiquement)
'Donc 1 ) en passant par des tests sur les valeurs
If oRange.Offset(i, 3) >= 0 Then
With oRange.Offset(i, 3)
.Font.Color = RGB(31, 73, 125)
.Interior.Color = RGB(141, 180, 227)
End With
ElseIf oRange.Offset(i, 3) < 0 Then
With oRange.Offset(i, 3)
.Font.Color = RGB(156, 0, 6)
.Interior.Color = RGB(255, 199, 206)
End With
End If
'######## Fin du 1) ########
Next i
'Ou 2) en passant par les mises en forme conditionnelles
' .Cells.FormatConditions.Delete
'
' Set oCol = Range(oRange.Offset(0, 3), .Columns(4).Find("*", , , , xlByColumns, xlPrevious))
' With oCol
' .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreaterEqual, Formula1:="=0"
' With .FormatConditions(1)
' .Font.Color = RGB(31, 73, 125)
' .Interior.Color = RGB(141, 180, 227)
'
' .StopIfTrue = False
' End With
'
' .FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=0"
' With .FormatConditions(2)
' .Font.Color = RGB(156, 0, 6)
' .Interior.Color = RGB(255, 199, 206)
'
' .StopIfTrue = False
' End With
' End With
'######## Fin du 2) ########
End With
End Sub
Sub macro2_Kiera()
Dim oRange As Range
Dim oCell As Range
With Worksheets("Feuil1")
Set oRange = .Range("A1")
For Each oCell In .Range(oRange, oRange.CurrentRegion.End(xlDown))
oCell.Offset(0, 2) = oCell + oCell.Offset(0, 1)
oCell.Offset(0, 3) = oCell - oCell.Offset(0, 1)
If oCell.Offset(0, 3) >= 0 Then
With oCell.Offset(0, 3)
.Font.Color = RGB(31, 73, 125)
.Interior.Color = RGB(141, 180, 227)
End With
ElseIf oCell.Offset(0, 3) < 0 Then
With oCell.Offset(0, 3)
.Font.Color = RGB(156, 0, 6)
.Interior.Color = RGB(255, 199, 206)
End With
End If
Next oCell
End With
End Sub
Sub macro3_Kiera()
'Je ne supporte pas les GoTo.
'Pour moi, il ne faut absolument pas les utiliser, car cela entraine du code dit "spaghetti".
'Ainsi, voici ce que je te propose :
Dim resultat
Do While True
resultat = InputBox("Entrez un nombre entier entre 1 et 5", "Valeur à insérer")
If IsNumeric(resultat) Then
If resultat - Fix(resultat) = 0 And resultat >= 1 And resultat <= 5 Then
Exit Do
End If
End If
MsgBox "Le nombre inséré n'est pas un entier entre 1 et 5." & Chr(10) & "Veuillez recommencer."
Loop
MsgBox "Le numéro choisi est : " & resultat
End Sub
Sub macro4_Kiera()
Dim oRange As Range
Dim oCell As Range
Dim compteur As Long
compteur = 0
With Worksheets("Feuil2")
'Je n'ai pas bien compris la limite... Faut-il calculer l'ensemble des cellules de la colonne A (à savoir sur les 1048576 cellules ?
Set oRange = .Range("A:A")
For Each oCell In oRange
If oCell = "" Then
compteur = compteur + 1
End If
Next oCell
End With
MsgBox "Le nombre de cellule vide dans la colonne A de la feuille ""Feuil2"" est : " & compteur & "."
End Sub
Sub macro5_Kiera()
Dim Taux As Double
Dim oRange As Range
Dim oCell As Range
With Worksheets("produit")
Set oRange = .Range("B1")
For Each oCell In .Range(oRange.Offset(1, 0), oRange.CurrentRegion.End(xlDown))
If oCell <= 50 Then
Taux = 1.1
ElseIf oCell > 50 And oCell <= 100 Then
Taux = 1.07
ElseIf oCell > 100 Then
Taux = 1.05
End If
oCell.Offset(0, 4) = oCell * Taux
Next oCell
End With
End Sub
Sub macro6_Kiera()
'Pas sur d'avoir bien compris...
Dim ajout As Integer
Dim somme As Integer
somme = 0
ajout = 1
Do While somme < 300
somme = somme + ajout
ajout = ajout + 1
If ajout > 30 Then
Exit Do
End If
Loop
MsgBox "Le compteur ""somme"" possède une valeur de : " & somme & "." & Chr(10) & "La variable ""ajout"" possède la valeur de : " & ajout & " (prochaine valeur à ajouter)."
End Sub |
Partager