0% ont trouvé ce document utile (0 vote)
38 vues7 pages

Guide d'Utilisation du Code VBA Excel

Transféré par

soufyan
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
38 vues7 pages

Guide d'Utilisation du Code VBA Excel

Transféré par

soufyan
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Pour transformer ce script VBA en une application Excel utilisable par l'utilisateur, vous devez

effectuer les étapes suivantes. Ce guide explique comment préparer le classeur Excel, insérer le code
VBA, et créer un bouton pour exécuter le script facilement.

### Étape 1 : Préparation du Classeur Excel

1. **Ouvrir un Nouveau Classeur Excel**:

- Lancez Microsoft Excel.

- Ouvrez un nouveau classeur vierge.

### Étape 2 : Insérer le Code VBA

1. **Accéder à l'éditeur VBA**:

- Appuyez sur `Alt + F11` pour ouvrir l'éditeur VBA.

2. **Insérer un Nouveau Module**:

- Dans l'éditeur VBA, cliquez sur `Insert` > `Module`. Cela créera un nouveau module où vous
pouvez coller votre code.

3. **Copier et Coller le Code VBA**:

- Copiez le code VBA suivant et collez-le dans le module :

```vba

Sub PreparerTableauEtCalculer()

Dim Feuille As Worksheet

Dim Estimation As Double

Dim PrixDeReference As Double

Dim SeuilExcessive As Double

Dim SeuilAnormalementBas As Double

Dim DerniereLigne As Long

Dim i As Long

Dim Total As Double


Dim NombreOffresRetenues As Long

Dim MoyenneOffresRetenues As Double

Dim Offre As Double

Dim Classement As Integer

Set Feuille = [Link]("Sheet1")

' Préparer les en-têtes et les labels

[Link]("A1:J1").Merge

[Link]("A1:J1").Value = "En-tête du Tableau"

[Link]("A2").Value = "ESTIMATION ADMINISTRATION"

[Link]("A3").Value = "AON3"

[Link]("A4").Value = "ESTIMATION ADMINISTRATION"

[Link]("A5").Value = "SEUIL EXCESSIVE"

[Link]("A6").Value = "SEUIL ANORMALEMENT BAS"

[Link]("A7").Value = "PRIX DE RÉFÉRENCE"

[Link]("A9").Value = "LISTE DES SOUMISSIONAIRES"

[Link]("A10").Value = "NOM CONCURRENT"

[Link]("B10").Value = "MONTANT DES OFFRES"

[Link]("D10").Value = "NOM DES CONCURRENTS ÉCARTÉS"

[Link]("E10").Value = "MONTANT DES OFFRES ÉCARTÉS"

[Link]("F10").Value = "NOM DES CONCURRENTS ADMISSIBLES"

[Link]("G10").Value = "MONTANT DES OFFRES ADMISSIBLES"

[Link]("H10").Value = "CLASSEMENT DES OFFRES"

[Link]("I10").Value = "OFFRE MIEUX-DISANT PAR DÉFAUT"

[Link]("J10").Value = "OFFRE MIEUX-DISANT PAR EXCÈS"

' Saisir les valeurs utilisateur

Estimation = [Link]("B2").Value

' Calculer les seuils


SeuilExcessive = Estimation * 1.2

SeuilAnormalementBas = Estimation * 0.8

[Link]("B5").Value = SeuilExcessive

[Link]("B6").Value = SeuilAnormalementBas

' Initialiser les variables

Total = 0

NombreOffresRetenues = 0

' Parcourir les offres saisies par l'utilisateur

For i = 11 To 40

Offre = [Link](i, 2).Value

If Offre > 0 Then

If Offre > SeuilExcessive Then

' Offre excessive

[Link](i, 4).Value = [Link](i, 1).Value

[Link](i, 5).Value = Offre

[Link](i, 1).[Link] = RGB(255, 0, 0) ' Rouge pour offre excessive

[Link](i, 2).[Link] = RGB(255, 0, 0) ' Rouge pour offre excessive

ElseIf Offre < SeuilAnormalementBas Then

' Offre anormalement basse

[Link](i, 4).Value = [Link](i, 1).Value

[Link](i, 5).Value = Offre

[Link](i, 1).[Link] = RGB(255, 255, 0) ' Jaune pour offre anormalement basse

[Link](i, 2).[Link] = RGB(255, 255, 0) ' Jaune pour offre anormalement basse

Else

' Offre admissible

[Link](i, 6).Value = [Link](i, 1).Value

[Link](i, 7).Value = Offre

Total = Total + Offre


NombreOffresRetenues = NombreOffresRetenues + 1

End If

End If

Next i

' Calculer le prix de référence

If NombreOffresRetenues > 0 Then

MoyenneOffresRetenues = Total / NombreOffresRetenues

PrixDeReference = (Estimation + MoyenneOffresRetenues) / 2

[Link]("B7").Value = PrixDeReference

Else

MsgBox "Aucune offre admissible pour calculer le prix de référence."

Exit Sub

End If

' Classer les offres admissibles par rapport au prix de référence

DerniereLigne = 11

Do While [Link](DerniereLigne, 7).Value <> ""

DerniereLigne = DerniereLigne + 1

Loop

DerniereLigne = DerniereLigne - 1

' Créer une liste pour trier les offres admissibles

Dim OffresAdmissibles() As Variant

ReDim OffresAdmissibles(1 To DerniereLigne - 10, 1 To 2)

Dim Index As Integer

Index = 1

For i = 11 To DerniereLigne

OffresAdmissibles(Index, 1) = [Link](i, 6).Value

OffresAdmissibles(Index, 2) = [Link](i, 7).Value


Index = Index + 1

Next i

' Trier les offres admissibles par rapport à leur proximité avec le prix de référence

Dim TempNom As String

Dim TempMontant As Double

Dim j As Integer

For i = 1 To UBound(OffresAdmissibles, 1)

For j = i + 1 To UBound(OffresAdmissibles, 1)

If Abs(OffresAdmissibles(j, 2) - PrixDeReference) < Abs(OffresAdmissibles(i, 2) -


PrixDeReference) Then

TempNom = OffresAdmissibles(i, 1)

TempMontant = OffresAdmissibles(i, 2)

OffresAdmissibles(i, 1) = OffresAdmissibles(j, 1)

OffresAdmissibles(i, 2) = OffresAdmissibles(j, 2)

OffresAdmissibles(j, 1) = TempNom

OffresAdmissibles(j, 2) = TempMontant

End If

Next j

Next i

' Remplir le classement des offres

For i = 1 To UBound(OffresAdmissibles, 1)

[Link](10 + i, 8).Value = OffresAdmissibles(i, 1)

Next i

' Déterminer l'offre mieux-disant par défaut et par excès

Dim OffreMieuxDisantParDefaut As String

Dim OffreMieuxDisantParExces As String

Dim PlusProcheParDefaut As Double

Dim PlusProcheParExces As Double


PlusProcheParDefaut = 999999999

PlusProcheParExces = 999999999

For i = 1 To UBound(OffresAdmissibles, 1)

If OffresAdmissibles(i, 2) <= PrixDeReference Then

If Abs(OffresAdmissibles(i, 2) - PrixDeReference) < PlusProcheParDefaut Then

PlusProcheParDefaut = Abs(OffresAdmissibles(i, 2) - PrixDeReference)

OffreMieuxDisantParDefaut = OffresAdmissibles(i, 1)

End If

Else

If Abs(OffresAdmissibles(i, 2) - PrixDeReference) < PlusProcheParExces Then

PlusProcheParExces = Abs(OffresAdmissibles(i, 2) - PrixDeReference)

OffreMieuxDisantParExces = OffresAdmissibles(i, 1)

End If

End If

Next i

[Link]("I11").Value = OffreMieuxDisantParDefaut

[Link]("J11").Value = OffreMieuxDisantParExces

End Sub

```

### Étape 3 : Créer un Bouton pour Exécuter la Macro

1. **Retourner à Excel**:

- Appuyez sur `Alt + Q` pour fermer l'éditeur VBA et retourner à Excel.

2. **Insérer un Bouton**:
- Allez à l'onglet `Développeur`. Si vous ne voyez pas cet onglet, activez-le via `Fichier` > `Options` >
`Personnaliser le ruban` et cochez `Développeur`.

- Cliquez sur `Insérer` dans le groupe `Contrôles` puis choisissez `Bouton (Contrôle de formulaire)`.

- Dessinez le bouton sur votre feuille de calcul.

3. **Assigner la Macro au Bouton**:

- Après avoir dessiné le bouton, une boîte de dialogue s'ouvre pour assigner une macro.
Sélectionnez `PreparerTableauEtCalculer` et cliquez sur `OK`.

### Étape 4 : Saisir les Données et Utiliser le Bouton

1. **Saisir les Données**:

- Dans la cellule `B2`, saisissez le montant de l'estimation de l'administration.

- Dans les cellules `A11:A40`, saisissez les noms des concurrents.

- Dans les cellules `B11:B40`, saisissez les montants des offres des concurrents.

2. **Exécuter la Macro**:

- Cliquez sur le bouton que vous avez créé pour exécuter la macro. Le tableau sera
automatiquement préparé et les calculs seront effectués selon les spécifications.

Cette procédure transforme votre classeur Excel en une application simple permettant de gérer et
analyser les offres des soumissionnaires conformément aux règles spécifiées.

Vous aimerez peut-être aussi