Vous êtes sur la page 1sur 5

SIAD 2024 séance 3 : Essentiel VBA –

Suite et fin

Essentiel VBA - Suite

 Création d’une liste triée (utiliser le code fourni) sans doublons de


commerciaux (utiliser le tableau de ventes) à l’aide d’un dictionnaire

 Création d’un tableau récapitulatif des ventes à l’aide d’un dictionnaire –


temps de réflexion. Tri selon les commerciaux (utiliser le code fourni).

 Compréhension du passage de paramètres dans une procédure ou fonction


à l’aide d’un pas à pas détaillé dans le code VBA de ces 2 chapitres :
o https://formation-excel-vba.techlab-mines-nancy.fr/static/
SubParam.html
o https://formation-excel-vba.techlab-mines-nancy.fr/static/
FonctionRechPrixFruit.html
 Ecrire une procédure VBA d'entête :

1
Public Sub DetermineMeilleurCommercial(NomTableau As String,
NomMeilleurCommercial As String, MeilleureVente As Double) calculant le
nom du meilleur commercial et sa vente associée – temps de réflexion.

 Gestion des erreurs en VBA à partir de l’étude des codes présents à la


page :
https://formation-excel-vba.techlab-mines-nancy.fr/static/TraiterErreurs.ht
ml
 Exercices libres d’après la liste https://formation-excel-vba.techlab-mines-
nancy.fr/static/ExercicesVBA.html

2
Tableau de ventes
Noms Ventes
Martin 180
Dupont 173
Matthieu 161
Mannet 156
Martin 106
Mannet 143
Matthieu 184
Richelieu 142
Dupont 114
Mannet 137
Martin 150
Matthieu 102
Matthieu 190
Martin 122
Dupont 149
Mannet 194
Martin 141
Matthieu 175

Tableau des ventes des commerciaux


Dupont 436 €
Mannet 630 €
Martin 699 €
Matthieu 812 €
Richelieu 142 €

Réserve de code : tri d’un dictionnaire


3
'----------------------------------------------------------------------------------
' Tri d'un dictionnaire sur ses clés et test
' Code à placer dans un module
' Mars 2024
'----------------------------------------------------------------------------------
Option Explicit

'----------------------------------------------------------------------------------
' Tri d'un dictionnaire selon les clés
'----------------------------------------------------------------------------------
Public Sub SortDictionnary(Dict As Scripting.Dictionary)
'Declare the variables
Dim TempDict As Scripting.Dictionary
Dim KeyVal As Variant
Dim Arr() As Variant
Dim Temp As Variant
Dim Txt As String
Dim i As Long
Dim j As Long

' dimensionner un tableau pour les clés


ReDim Arr(0 To Dict.Count - 1)

' affecter le tableau avec les clés du dictionnaire en entrée


For i = 0 To Dict.Count - 1
Arr(i) = Dict.Keys(i)
Next i

' tri du tableau (tri bulle)


For i = LBound(Arr) To UBound(Arr) - 1
For j = i + 1 To UBound(Arr)
If Arr(i) > Arr(j) Then
Temp = Arr(j)
Arr(j) = Arr(i)
Arr(i) = Temp
End If
Next j
Next i

' Créer un dictionnaire temporaire


Set TempDict = New Dictionary

' créer des clés et leurs valeurs associées


' en utilisant l'ordre du tri
For i = LBound(Arr) To UBound(Arr)
KeyVal = Arr(i)
TempDict.Add Key:=KeyVal, Item:=Dict.Item(KeyVal)
Next i

' vider le dictionnaire en entrée


Dict.RemoveAll

' transférer le contenu du dictionnaire trié dans le dictionnaire en entrée


For i = 0 To TempDict.Count - 1
'Debug.Print "Clé = " & TempDict.Keys(i) & ", Prix = " &
TempDict(TempDict.Keys(i))
Dict(TempDict.Keys(i)) = TempDict(TempDict.Keys(i))

4
Next i

End Sub

'----------------------------------------------------------------------------------
' Test du tri d'un dictionnaire selon les clés
'----------------------------------------------------------------------------------
Public Sub Test_SortDictionnary()
Dim dictFruits As New Scripting.Dictionary
Dim i As Long

dictFruits("Pomme") = 2
dictFruits("Cerise") = 6
dictFruits("Orange") = 3
dictFruits("Poire") = 8
dictFruits("Raisin") = 9
dictFruits("Citron") = 4

SortDictionnary dictFruits

' vérification de la correction du tri


For i = 0 To dictFruits.Count - 1
Debug.Print "Clé = " & dictFruits.Keys(i) & ", Prix = " &
dictFruits(dictFruits.Keys(i))
Next i

' résultat après le tri


' Clé = Cerise, Prix = 6
' Clé = Citron, Prix = 4
' Clé = Orange, Prix = 3
' Clé = Poire, Prix = 8
' Clé = Pomme, Prix = 2
' Clé = Raisin, Prix = 9

End Sub

Vous aimerez peut-être aussi