.       .   

 .   

   . Accueil          .

 Connexion   

 S'inscrire   

 FAQ   

 Recherche    Documents  

 Annuaire   

Photos     Détente      Banque     Chat         Forum        . .                  .    .




 

VBA : analyse et programmation

25 septembre 2007

-  Qualités d’un projet

  • Fiabilité : il doit donner les résultats corrects attendus.
  • Robustesse : il doit gérer les erreurs de manipulation des utilisateurs.
  • Convivialité : il doit être agréable à utiliser (souris, icônes, menus...)
  • Efficacité : il doit donner des réponses rapides et claires.
  • Compacité : il doit occuper le moins de place possible en mémoire.
  • Lisibilité : il doit être structuré en modules, commenté, présenté clairement.
  • Portabilité : il doit être aisément transférable sur une machine d’un autre type.

-  Algorithme 1

Quand on a un problème à résoudre par programmation on doit tout d’abord trouver une stratégie pour y parvenir.

Il faut bien sur que cette stratégie soit "programmable" dans le langage de programmation choisi. Il faut donc bien connaître les caractéristiques et les possibilités de ce langage.

Le plus souvent on écrit un algorithme en français (c’est la stratégie adoptée) que l’on pourra ensuite coder dans le langage de programmation choisi.

Premier exemple

Il s’agit de chercher quel jour de la semaine tombe la fête de Noël d’une année donnée.

Référence : Noël 1900 était un mardi.

Rappel : 1900 n’était pas bissextile mais 2000 le sera.

Analyse :

Noël se décale d’un jour par an (365 jours = 52 semaines + 1 jour) pour les années normales et de 2 jours par an pour les années bissextiles.

On suppose que le dimanche est numéroté 1, lundi 2 ... ... ... et samedi 7 ou 0.

Donc le mardi 25 décembre 1900 porte le numéro 3.

Il suffit donc d’ajouter à ce nombre (3) les décalages occasionnés par les années (normales ou bissextiles).

Algorithme :

Année ß saisie de l’année à traiter

DécalageA ß nombre d’années entre 1900 et Année

DécalageB ß nombre d’années bissextiles entre 1900 et Année

DécalageTotal ß 3 + DécalageA + DécalageB

JourSem ß reste de la division de DécalageTotal par 7

Programme :

Private Sub Form_Load()

Dim Année As Integer

Dim DécalageA As Integer, DécalageB As Integer

Dim NombreDeJours, JourSem As Integer

Année = InputBox("Taper une année")

DécalageA = Année - 1900

DécalageB = Int(DécalageA / 4)

NombreDeJours = 3 + DécalageA + DécalageB

JourSem = NombreDeJours Mod 7

MsgBox (JourSem)

End Sub

Algorithme 2

Deuxième exemple

Il s’agit de trier en ordre décroissant les nombre contenus dans un tableau de 100 entiers.

Différentes stratégies sont à notre disposition. La plus classique est celle du tri à bulles.

Analyse :

On peut comparer chaque nombre à son suivant et mettre en tête le plus grand des deux.

On avance ainsi dans le tableau jusqu’à la fin de celui-ci.

Puis on recommence au début jusqu’à ce que plus aucune permutation ne soit effectuée.

Pour cela il faut un indicateur de permutation (drapeau ou sémaphore).

Alors le tableau est trié.

Algorithme :

Début

Faire

Permuté ¬ 0 ’ drapeau indiquant qu’aucune permutation n’a été effectuée

Pour i = 1 à 99

Si Case i < Case i+1 alors

Auxiliaire ¬ Case i

Case i ¬ Case i+1

Case i+1 ¬ Auxiliaire

Permuté ¬ 1 ’ drapeau indiquant qu’une permutation a été effectuée

Fin de Si

Nouveau i

Recommencer tant que Permuté = 1

Fin

Programme :

Public Sub TriABulles()

Dim Permuté As Integer

Dim Auxiliaire As Integer

Do

Permuté = 0

For i = 1 To 99

If TabEntiers(i) < TabEntiers(i + 1) Then

Auxiliaire = TabEntiers(i)

TabEntiers(i) = TabEntiers(i + 1)

TabEntiers(i + 1) = Auxiliaire

Permuté = 1

End If

Next i

Loop While Permuté = 1

End Sub

-  Derniers conseils

  • Privilégier une étude descendante : du général au particulier.
  • Réfléchir à la structure des données la plus appropriée. Par exemple pour le jeu du PENDU utiliser un tableau

TabTitres(1 To 10, 1 To 3) As String qui contiendra :

1. En ligne 1 les titres des films 2. En ligne 2 les squelettes (*******) 3. En ligne 3 une aide sous forme de texte ("C’est un western")

  • Utiliser des noms de variables significatifs : NombreATrouver As Integer

TitreIncomplet As String

LettreInitiale As String*1

  • Initialiser les variables même si VB le fait dans certains cas.
  • Si nécessaire travailler sous forme de procédures publiques utilisables dans toute la feuille.
  • Définir une interface utilisateur complète. Par exemple pour le jeu du PENDU prévoir un bouton pour "Ajouter une lettre" et un autre pour "Proposer une réponse".
  • Commenter le programme pour qu’il soit plus compréhensible en vue de modifications ultérieures et le rédiger clairement.
  • Enfin : que le programme "Tourne" avant de soigner sa forme.

[ Imprimer cet article ] [ Haut ]

 
 
 
Commentez cet article



   
 

 
   

 
  Envoyer à un ami
Destinataire  :
(entrez l'email du destinataire)

De la part de 
(entrez votre nom)

(entrez votre email)



[ Imprimer cet article ]

Rechercher :
 

 
Autres articles

VBA : traitements des chaines de caractères
VBA - compléments et programmation
VBA : les structures de contrôle
VBA : interactivité, variables et conditions
VBA : les structures conditionnelles
VBA : tablaux et boucles
Excel : quelques fonctions avancées
Informatique : Les astuces de base
Excel : utilisation et astuces
Programmation VBA - introduction
Macros SAS
Initiation au logiciel SAS
Création de site Internet avec Dreamweaver
Créer votre site Internet avec FrontPage
Initiation aux réseaux
Les bases du réseau Internet
Les virus informatiques


[ Haut ]
 

 

   Contact                                                    © Niant - Copyrightdepot.com                                          CNIL 

Positionnement et Statistiques Gratuites

SPIP , bloOg