Bonjour,

Dans le cadre d'une évaluation,J' ai eu les macros ci dessous à effectuer. J'aurai voulu avoir votre avis (ce que j'aurai pu améliorer par exemple ) en ce qui concerne la rédaction de mes macros s'il vous plaît . Merci pour votre aide.

ps : il y a deux macros que je n'ai pas pu terminé car j'avais beaucoup de mal à les visualiser. Si vous pouvez m'aiguillez afin que je puisse comprendre mon erreur. ce serait aimable de votre part.

Merci pour votre aide.

Cordialement

Macro1

Créer une macro qui en ne faisant référence qu'à la cellule A1 de la feuille "Feuil1" qui permet :

- de calculer la somme des 2 valeurs dans la colonne C
- de calculer la différence entre les valeurs de la colonne A et celles de la colonne B dans la colonne D
- d'afficher cette différence en rouge si elle est négative ou en bleu si elle est positive

Le nombre de lignes à traiter n'est pas connu à l'avance


Voici ce que j’ai mis :

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
Sub macro1()
Dim somme As Long
Dim diff As Long
Dim derligne As Long
 
Worksheets("Feuil1").Select
 
derligne = Range("A1").CurrentRegion.End(xlDown).Row - 1
 
For i = 1 To derligne
somme = Range("A1").Offset(i, 0) + Range("A1").Offset(i, 1)
Range("A1").Offset(i, 2) = somme
 
diff = Range("A1").Offset(i, 0) - Range("A1").Offset(i, 1)
Range("A1").Offset(i, 3) = diff
 
If Range("A1").Offset(i, 3) < 0 Then Range("A1").Offset(i, 3).Font.ColorIndex = 3 _
Else Range("A1").Offset(i, 3).Font.ColorIndex = 5
 
Next i
 
 
 
End Sub
Macro2

Créer la même macro que ci-dessus à l'aide cette fois ci d'une procédure de type "For each…Next"

Voici ce que j’ai mis :



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
Sub macro2()
 
Dim somme As Long
Dim diff As Long
Dim maplage As Range
Dim cel As Range
Dim derligne As Long
 
Worksheets("Feuil1").Select
 
derligne = Range("A1").CurrentRegion.End(xlDown).Row
Set maplage = Range("A2:A" & derligne)
For Each cel In maplage
 somme = cel + cel.Offset(0, 1)
 cel.Offset(0, 2) = somme
 diff = cel - cel.Offset(0, 1)
 cel.Offset(0, 3) = diff
If cel.Offset(0, 3) < 0 Then cel.Offset(0, 3).Font.ColorIndex = 3 _
Else: cel.Offset(0, 3).Font.ColorIndex = 5
 
Next
 
End Sub
Macro3

Créer une macro qui vous demande un chiffre entre 1 et 5 et qui affiche dans une fenêtre le message : « Le numéro choisi est : numero ». Cette macro ne devra s’arrêter que lorsque vous aurez saisi une valeur qui ne respecte pas la contrainte. Do until ou do while


Voici ce que j’ai mis :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Sub macro3()
 
Dim var_nombre As Long
 
Debut_de_la_macro:    'Ceci est une etiquette le goto renvoie le code à cette endroit là
var_nombre = InputBox("Tapez un chiffre entre 1 et 5")
MsgBox "le numéro tapé est  " & var_nombre
If var_nombre >= 1 And var_nombre <= 5 Then GoTo Debut_de_la_macro '
 
 
 
End Sub
Macro 4 :
Créer une macro qui permet de compter sur la feuille 2 dans la plage de cellules de la colonne A le nombre de cellules vides. Vous devrez obligatoirement utiliser une procédure de type « For each nexrt »

Macro5

Créer une macro qui permet d’augmenter les prix des articles de la feuille »produit ». le nombre d’articles n’est pas connu
Les articles dont le prix unitaire est inférieur ou égal 50 alors le taux sera de 10 %
Les articles dont le prix unitaire est supérieur à 50 et inférieur ou égal à 100 alors le taux sera de 7 %
Les articles dont le prix unitaire est supérieur à 100 alors le taux sera de 5 %
Le nouveau prix devra être inscrit dans la colonne « F »

Voici ce que j’ai mis :
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
Sub macro5()
Dim Taux As Double  
Dim prix As Double
Dim Plage As Range
Dim Cellule As Range
Derligne = Worksheets("produit").Range("B1").CurrentRegion.End(xlDown).Row
Set Plage = Worksheets("produit").Range("B2:B" & Derligne)
 
For Each Cellule In Plage
prix = Cellule
If Cellule <= 50 Then
Taux = 1,1
ElseIf Cellule.Value > 50  And Cellule.Value <= 100 Then
Taux = 1,07
ElseIf Cellule > 100 Then
Taux = 1,05
Else: Taux = 0
 
End If
 
Cellule.Offset(0, 1) = Taux
 
Next
 
End Sub
Macro 6
Créer une macro qui devra s’arrêter quad la valeur de la variable « somme » sera supérieur à 300.
la variable « somme » sera augmentée à chaque tour de la valeur de la variable « ajout ».
la valeur de la variable « ajout » sera de 1 au premier tour puis augmentée de 1 à chaque tour.
cependant si la valeur de la variable « ajout » est supérieure à 30, la macro devra s’arrêter.