Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/10/2011, 16h32   #1
Invité de passage
 
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 1
Points : 1
Par défaut Question VBA

Bonjour à tous,

je suis actuellement des cours de programmation informatique, et je débute sur VBA Excel. J'ai l'exercice suivant :

L’entreprise PrestoCopie est une société qui réalise des photocopies pour desentreprises. Elle facture ses prestations d’un forfait de 10 € pour les cent premières photocopies en noir et blanc et de 30 € pour les photocopies couleurs (même si la quantité est inférieure à 100 copies). Chaque photocopie suivante est facturée 0,05 € en noir et blanc et 0,20 € en couleur jusqu’à la 500 ème photocopies. Au delà, les tirages supplémentaires sont facturés respectivement 0,03 € pour le noir et blanc et 0,10 € pour la couleur.
1) Ecrire le programme qui calcule le montant à facturer au client en fonction du nombre de copies et du type de copie (N&B ou couleur). Ces deux informations sont saisies par l’utilisateur.

J'y ai répondu :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub exo23()
Dim nombre As Single, categorie As String, prix As Single
categorie = InputBox("Désirez-vous faire des photocopies couleur ou nb ?")
nb = InputBox("Combien de photocopies désirez-vous faire ?")
 
If categorie = "nb" And nombre <= 100 Then
prix = 10
ElseIf categorie = "nb" And nombre > 100 And nombre <= 500 Then
prix = 10 + ((nombre - 100) * 0.05)
ElseIf categorie = "nb" And nombre > 500 Then
prix = 30 + ((nombre - 500) * 0.03)
ElseIf categorie = "couleur" And nombre <= 100 Then
prix = 30
ElseIf categorie = "couleur" And nombre > 100 And nombre <= 500 Then
prix = 30 + ((nombre - 100) * 0.2)
ElseIf categorie = "couleur" And nombre > 500 Then
prix = 110 + ((nombre - 500) * 0.1)
End If
 
MsgBox "Le montant de vos photocopies est de " & prix
End Sub

Cela ne fonctionne pas, les valeurs 10 et 30 ressortant quelque soit le nombre entré par l'utilisateur. Je ne comprends vraiment pas ou est mon erreur, tout me parait logique, est-ce que vous pourriez m'expliquer ?
Merci !
horgon22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2011, 16h45   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Ajoute l'option indispensable :

tout en haut de ton code ..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2011, 17h12   #3
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 3
Points : 3
Points : 3
Bonjour

Code :
1
2
3
4
Sub exo23()
Dim nombre As Single, categorie As String, prix As Single
categorie = InputBox("Désirez-vous faire des photocopies couleur ou nb ?")
nb = InputBox("Combien de photocopies désirez-vous faire ?")
En ligne 2 ne pas déclarer nombre
en ligne 4, Il faut remplacer nb par nombre

Code :
1
2
3
4
Sub exo23()
Dim  categorie As String, prix As Single
categorie = InputBox("Désirez-vous faire des photocopies couleur ou nb ?")
nombre = InputBox("Combien de photocopies désirez-vous faire ?")
didivo67 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 23/10/2011, 17h17   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par didivo67 Voir le message
...
En ligne 2 ne pas déclarer nombre
...
pourquoi ? il faut déclarer toutes les variables !
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2011, 17h32   #5
Invité de passage
 
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 1
Points : 1
J'ai trouvé, c'était simple en fin de compte, j'ai confondu nb (noir et blanc) et nombre à la ligne 4, comme l'a souligné didivo67. Et j'ai enlevé la déclaration du prix, qui n'est pas utile (je pense que c'est ça que tu voulais dire didivo67 ?), en tout cas merci à toi et bbil pour la rapidité de la réponse !
horgon22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2011, 17h38   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par horgon22 Voir le message
... Et j'ai enlevé la déclaration du prix, qui n'est pas utile ..
Citation:
Envoyé par bbil Voir le message
pourquoi ? il faut déclarer toutes les variables !
bbil est déconnecté   Envoyer un message privé Réponse avec citation 11
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h40.


 
 
 
 
Partenaires

Hébergement Web