programme macro

stef784

XLDnaute Junior
Bonjour j'ai un petit probleme

On me demande de faire ce programm:

Soit 3 nombres positifs x, y, z donnés par l'utilisateur.
Determiner si l'un des nombres est égal à la somme des deux autres (une seule réponse affichée "oui" ou "non")

J'ai fais:

Sub macro()
Dim x As Integer
Dim y As Integer
Dim z As Integer
x = InputBox("Entrez un nombre")
y = InputBox("Entrez un nombre")
z = InputBox("Entrez un nombre")
If (z = x + y) Then
MsgBox ("oui")
End If
If (x = y + z) Then
MsgBox ("oui")
End If
If (y = z + y) Then
MsgBox ("oui")

Else
MsgBox ("non")
End If



End Sub


Mais enfait ça ne marche pas ,c 'est un probleme avec if je pense ou "else"
le programme marche mais pas correctement
 

Pierrot93

XLDnaute Barbatruc
Re : programme macro

Bonjour Stef

essaye peut être comme ceci :

Code:
Sub macro()
Dim x As Integer
Dim y As Integer
Dim z As Integer
x = InputBox("Entrez un nombre")
y = InputBox("Entrez un nombre")
z = InputBox("Entrez un nombre")
If z = x + y Then
    MsgBox ("oui")
    ElseIf x = y + z Then MsgBox ("oui")
    ElseIf y = z + y Then MsgBox ("oui")
Else
MsgBox ("non")
End If
End Sub

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : programme macro

Re

autre solution un peu plus courte :

Code:
Sub macro()
Dim x As Integer
Dim y As Integer
Dim z As Integer
x = InputBox("Entrez un nombre")
y = InputBox("Entrez un nombre")
z = InputBox("Entrez un nombre")
If z = x + y Or x = y + z Or y = z + y Then
    MsgBox ("oui")
Else
    MsgBox ("non")
End If
End Sub

@+
 

Staple1600

XLDnaute Barbatruc
Re : programme macro

Bonjour


A tester

Code:
Sub macro()
Dim x As Integer
Dim y As Integer
Dim z As Integer
x = Val(InputBox("Entrez un nombre"))
y = Val(InputBox("Entrez un nombre"))
z = Val((InputBox("Entrez un nombre")))
If (z = x + y) Or (x = y + z) Or (y = z + x) Then
MsgBox ("oui")
Else
MsgBox ("non")
End If
End Sub

EDITION :Bonjour Pierrot93 , désolé pour la collision (pas rafraichi à temps)
 

stef784

XLDnaute Junior
Re : programme macro

Ok merci tout fonctionne =)

J'ai une autre question:

On me demande :

Soit deux nombres entiers donnés par l'utilisateur. Tester si l'un est le multiple de l'autre.

Le prof avait commencé avec:

Sub macro()
Dim x As integer
Dimy As integer
x=Inputbox("donner un nombre entier")
y=Inputbox("____________________")
if x Mod y=0 Then
Msgbox( x & "multiple de " & y)

[...]

Mais je comprend pas bien le "x Mod y"
j'ai cherché dans l'aide mais ça bug aucune fenetre ne s'ouvre
 

Pierrot93

XLDnaute Barbatruc
Re : programme macro

Re

peut êtrre ceci :

Code:
Sub macro()
Dim x As Integer
Dim y As Integer
x = InputBox("donner un nombre entier")
y = InputBox("____________________")
If x Mod y = 0 Then
    MsgBox (x & " multiple de " & y)
    ElseIf y Mod x = 0 Then MsgBox (y & " multiple de " & x)
Else
    MsgBox "pas multiple"
End If
End Sub

extrait de l'aide vba :

Mod, opérateur

Permet de diviser deux nombres en ne renvoyant que le reste.

Syntaxe

result = number1 Mod number2

La syntaxe de l'opérateur Mod comprend les éléments suivants :

Élément Description
result Toute variable numérique.
number1 Toute expression numérique.
number2 Toute expression numérique.

Remarques

L'opérateur modulo, ou reste, divise l'argument number1 par l'argument number2 (en arrondissant les nombres à virgules flottantes à des nombres entiers) et ne retourne que le reste dans l'argument result. Par exemple, dans l'expression ci-dessous, A (argument result) est égal à 5.

A = 19 Mod 6.7

@+
 

stef784

XLDnaute Junior
Re : programme macro

Merci !:)

Et une derniere question:

On me demande

Ecrire un programme qui demande à l'utilisateur une année et qui affiche à l'écran si c'est une année bissextile ou non.

On rapelle qu'une année est bissextille si ellle est divisible par 4 et si elle est divisible par 100 alors elle doit aussi etre divisible par 400.
Par exemple 2004 est une année bissextille (divisible par 4), 2000 aussi (divisible par 4,100 et 400) mais 2100 ne sera pas une année bissextile (2100 est divisible par 100 mais n'est pas divisible par 400)

:confused:
 
G

Guest

Guest
Re : programme macro

voici,

Code:
Sub DirEstBissextile()
    Dim an As Long
    an = InputBox("Entrez une année pour savoir si elle est bissextile")
    If IsNumeric(an) And Len(an) = 4 Then
        If an Mod 4 = 0 And an Mod 100 = 0 And an Mod 400 = 0 Then
            MsgBox " l'année " & an & " est bissextile"
        Else
            MsgBox " l'année " & an & " n'est pas bissextile"
        End If
    Else
        MsgBox "Entrez une année sur 4 Chiffres", , "Mauvaise saisie"
    End If
End Sub

En sachant que sur la base de ce que tu sais déjà et ce qui t'a été donné ici tu aurais pu t'en sortir tout seul.

A bientôt
 

Pierrot93

XLDnaute Barbatruc
Re : programme macro

Re

Hasco, avec ton code 2004 et 2008 ne sont pas bissextiles...

sauf erreur, l'algorithme doit être si divisible par 4 ou alors est divisible par 100 et dans ce cas également divisible par 400... à confirmer...

ce qui donnerait :

Code:
Option Explicit
Sub macro()
Dim x As Integer
x = InputBox("quelle année ?")
If x Mod 4 = 0 Or (x Mod 100 = 0 And x Mod 400 = 0) Then
    MsgBox "ok année bissextile"
Else
    MsgBox "non"
End If
End Sub

@+
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : programme macro

Re à tous

La correction d'un autre prof (ou du même peut-être??)
Issu d'un pdf (trouvé sur le net)
(avec la correction des exercices postés dans ce fil) ;)

Code:
[B]Exercice 8[/B]
Sub Bisextile()
Dim annee As Integer
annee = InputBox("Entrer une année")
If annee Mod 4 <> 0 Then
MsgBox ("Pas bissextile")
Else
If annee Mod 100 <> 0 Then
MsgBox ("Bissextile")
Else
If annee Mod 400 <> 0 Then
MsgBox ("Pas bissextile")
Else
MsgBox ("Bissextile")
End If
End If
End If
End Sub
stef784:préviens ton prof, qu'on trouve facilement sur le net , la solution des exercices qu'il propose.


PS: j'ai laissé la faute d'orthographe dans la solution du prof.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : programme macro

Re

sur Wilkipédia :

Depuis l'instauration du calendrier grégorien, sont bissextiles les années :
divisibles par 4 mais non divisibles par 100
ou
divisibles par 400.

donc il faut modifier comme suit :

Code:
Sub macro()
Dim x As Integer
x = InputBox("quelle année ?")
If (x Mod 4 = 0 And Not x Mod 100 = 0) Or x Mod 400 = 0 Then
    MsgBox "ok année bissextille"
Else
    MsgBox "non"
End If
End Sub

@+
 
G

Guest

Guest
Re : programme macro

bonjour Pierrot,

Effectivement, je n'ai pas fait attention aux règles qu'il donnait. Une année est bissextile si:

(An Mod 400 = 0) Or (An Mod 4 = 0 And (Not An Mod 100 = 0))

Bien à toi.

Collision!!!!!
 
Dernière modification par un modérateur:

Statistiques des forums

Discussions
314 095
Messages
2 105 817
Membres
109 436
dernier inscrit
alex.972