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 :
Macro2
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
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 :
Macro3
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
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 :
Macro 4 :
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
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 :
Macro 6
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
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.
Partager