Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1487 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Aide] Programme VBA exercices

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Aide] Programme VBA exercices

n°1632658
Paul92300
Posté le 29-10-2007 à 08:31:07  profilanswer
 

Bonjour à tous,
 
Voilà, nous venons d'amorçer le VBA et plus précisément le VBE en cours et le prof nous a donné une dizaine d'exos à faire mais il y en a deux que j'ai du mal à réaliser, pourriez-vous m'aider je vous prie ?
 
Ex 2.8
Ex : Soit un entier n, donner un algorithme pour dire si il est divible par 9.
 
Je pense qu'il faut le réaliser avec l'opérateur mod (que l'on n'a pas encore vu en cours mais je suppose que c'est celui-ci) du genre:
If n mod 9 = 0 then
 
Et là je souhaiterais faire une action mais ne sait pas laquelle genre une msgbox disant si oui ou non n est divisible par 9 et faut-il faire évoluer n dans une boucle ?
 
 
Ex 2.9
Donner un algorithme qui recupere une valeur réelle en cells(1,1) et la décompose en une partie entière et une partie décimale
 
Là si je comprends bien, il faut écrire une valeur dans une cellule d'excel puis dire au programme de lire la valeur et de la décomposer en partie entière et partie décimale ? Quelles sont les fonctions permettant de séparer le nombre de cette façon ?
 
Merci d'avance de votre aide et excusez mon très faible niveau, je vais y travailler mais je cherche pour l'instant un bouquin correct sur le sujet

mood
Publicité
Posté le 29-10-2007 à 08:31:07  profilanswer
 

n°1632684
tegu
Posté le 29-10-2007 à 09:28:34  profilanswer
 

As-tu le droit d'utiliser des notions non vues en cours ?
Le mod n'est pas indispensable à l'exercice 2.8 : il suffit que le résultat soit un nombre entier ; on retombe alors sur le même type de travail que pour le 2.9.
 
Dans l'exercice 2.9, obtenir la partie décimale ça n'est jamais que soustraire la partie entière au nombre d'origine. Si tu sais obtenir cette partie entière, tu as résolu l'exercice.

n°1632726
Paul92300
Posté le 29-10-2007 à 10:20:18  profilanswer
 

Tout d'abord merci pour ta réponse

 

Et oui on a tout à fait le droit mais je ne vois absolument pas comment résoudre l'exercice 2.8 avec le principe du 2.9 ?


Message édité par Paul92300 le 29-10-2007 à 10:25:08
n°1632737
tegu
Posté le 29-10-2007 à 10:40:12  profilanswer
 

Pour résoudre le 2.8, il suffit de comparer le résultat de nombre / 9 à sa partie entière.
exemple : 85 est-il divisible par 9 ?
85 / 9 =  9,44444444444444
partie entière = 9
9 <>  9,44444444444444 donc 85 n'est pas divisible par 9
Tout le problème se trouve donc concentré dans la question de savoir comment récupérer la partie entière d'un nombre.
Et ça te servira directement pour le 2.9
edit : mais si tu peux utiliser mod, ne te gêne surtout pas !


Message édité par tegu le 29-10-2007 à 10:42:13
n°1632879
devil_k
Posté le 29-10-2007 à 14:51:10  profilanswer
 

Alors...
Déjà, un concept algorithmique de base, c'est de bien séparer le fonctionnel de l'affichage (Là, je t'accorde volontiers que pour une ligne de code dans la fonction, c'est pas indispensable)
Du coup, pour le 2.8, j'aurais fait une procédure qui gère la partie interaction utilisateur, et une fonction booléene
VBA est un langage évolué, du coup, tu peux directement affecter une expression à ta fonction
J'ai fait un exemple vite fait d'un exemple de structure (de toute façon, tu avais déjà trouvé qu'il fallait se servir du modulo)
Là dedans, reste à faire une petite gestion d'erreur, ou des tests sur ce qui est entré par l'utilisateur pour que ça soit vraiment clean
 
Public Sub ex_2_8()
Dim nombre As Integer
    nombre = CInt(InputBox("Nombre à tester ?" ))
    MsgBox IIf(isDivisiblePar9(nombre), "Divisible par 9", "Non divisible par 9" )
End Sub
 
Private Function isDivisiblePar9(n As Integer) As Boolean
    isDivisiblePar9 = n Mod 9 = 0
End Function
 
Pour le 2.9, il doit y avoir plusieurs façons de faire
L'une d'ellle serait par exemple  de convertir ton réel en chaine de caractère (fonction CStr), et de récupérer la partie avant le séparateur décimal, et après
Là encore, plusieurs façons de faire, soit tu parcours caractère par caractère, soit tu affectes à un tableau en séparant sur le séparateur décimal à l'aide de la fonction split
Et comme un exemple vaut parfois toutes les explications :
 
Sub test()
Dim tbl() As String
Dim nbStr As String
    nbStr = CStr(2.000868)
    tbl() = Split(nbStr, "," ) 'Séparateur décimal à déterminer
    MsgBox tbl(0) 'renvoie 2
    MsgBox tbl(1) 'renvoie 000868
End Sub
 
En espérant que ça ait pu t'aider !

n°1633016
jpcheck
Pioupiou
Posté le 29-10-2007 à 16:07:33  profilanswer
 

devil, on n'est pas vraiment là pour faire les exercices hein  :non:  
on donne des idées, la fonction à étudier, mais si on commence à filer l'exo tout fini, on est parti pour faire du "fais moi ci, fais moi ca"... d'ac ?

n°1633113
devil_k
Posté le 29-10-2007 à 17:10:59  profilanswer
 

Ils sont pas faits ses exos
Le principe du 2.8 était compris d'après son premier post, le but était juste d'expliquer quelques notions d'algorithmique
Pour le 2.9, comme ma pédagogie est limitée, j'ai mis un exemple de code pour illustrer ce que je tentais vainement d'expliquer
En gros, je tentais de mettre à disposition des outils qui lui permettront de faire ses exercices correctement, parceque mine de rien, quand on débute, les fonctions on les devine pas
 
Bref, desolé si je t'ai froissé :spamafote:

n°1633312
Paul92300
Posté le 29-10-2007 à 21:43:48  profilanswer
 

Merci beaucoup pour votre aide. Je conçois et suis tout à fait d'accord sur le fait qu'il ne faut pas faire les exos pour lesquels on demande de l'aide et mon but n'est pas de me tourner les pouces en me disant que tout sera résolu ici.  
Je commence le VBA et compte bien faire tous les exercices nécessaires pour arriver à un niveau appréciable.
 
Quoiqu'il en soit merci beaucoup pour votre aide précieuse, devil_k je vais essayer de faire sans la fonction booléenne qui est pour l'instant trop élaborée pour moi mais merci beaucoup de ton aide.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Aide] Programme VBA exercices

 

Sujets relatifs
[RS232]Besoin d'aide super urgente[VBA Excel]Compter à l'interieur d'une chaine
Besoin d aide en php et MySQLaide msdos quelques problemes
[VBA EXCEL] Problème avec partage de classeur !!besion aide optimisation php mysql
[php] Besoin d'aide fonctions vers classesAide en VB script svp
Perte de focus clavier inexpliqué, aide bienvenue !Aide programme Jeu : Devinez le bon chiffre
Plus de sujets relatifs à : [Aide] Programme VBA exercices


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR