[VBA] Problème de programmation
Cassie
-
Armojax Messages postés 1860 Date d'inscription Statut Membre Dernière intervention -
Armojax Messages postés 1860 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde.
J'aimerais savoir si quelqu'un, par hasard, pourrait m'aider à résoudre un problème avec une programmation en Visual Basic sur Excel (je suis actuellement sous Windows XP).
Voilà la situation :
Je travaille sur un dossier scolaire, dans une situation où on doit programmer une facture pour que, d'après un numéro de client, le montant total de son dû soit calculé automatiquement.
J'ai trois feuilles Excel. Une pour la facture, une autre pour les données des clients (affichés sur un tableau de 8 colonnes) et la troisième pour les tarifs applicables (affichés sur un tableau de 5 colonnes).
La programmation que j'ai faite, une fois lancée, bloque totalement les feuilles et il m'est obligatoire de tout fermer sans pouvoir enregister de quelconque modification.
Elle est présentée ainsi :
Est-ce que, par hasard, quelqu'un verrait où se trouve mon erreur et pourrait m'aider, s'il vous plait ?
J'ai deux semaines pour terminer ce travail, et je ne verrai pas mon professeur avant ces deux semaines.
Je vous remercie par avance pour toute aide que vous pouriez m'apporter.
J'aimerais savoir si quelqu'un, par hasard, pourrait m'aider à résoudre un problème avec une programmation en Visual Basic sur Excel (je suis actuellement sous Windows XP).
Voilà la situation :
Je travaille sur un dossier scolaire, dans une situation où on doit programmer une facture pour que, d'après un numéro de client, le montant total de son dû soit calculé automatiquement.
J'ai trois feuilles Excel. Une pour la facture, une autre pour les données des clients (affichés sur un tableau de 8 colonnes) et la troisième pour les tarifs applicables (affichés sur un tableau de 5 colonnes).
La programmation que j'ai faite, une fois lancée, bloque totalement les feuilles et il m'est obligatoire de tout fermer sans pouvoir enregister de quelconque modification.
Elle est présentée ainsi :
Option Explicit Dim Nom_client(30), Adresse_client(30), CP_client(30), Ville_client(30), Num_sej, Num_séjour, numfact As String Dim i, Nbre_pers(30), Prix_jour_pers(30), TotalHT_1, Nbjour As Integer Dim Date_séjour, datefact As Date Sub facture() Sheets("Modèle").Select numfact = InputBox("Entrer le numéro de la facture") Cells(2, 3) = numfact datefact = InputBox("Entrer la date de la facture") Cells(3, "d") = datefact Num_séjour = InputBox("Entrer le numéro du séjour") Cells(5, "b") = Num_séjour Sheets("Réservation_séjour").Select i = 2 Num_sej = Cells(i, "a") While Num_sej <> Num_séjour i = i + 1 Num_sej = Num_sej + 1 Wend Nom_client(Num_sej) = Cells(i, "b") Adresse_client(Num_sej) = Cells(i, "c") CP_client(Num_sej) = Cells(i, "d") Ville_client(Num_sej) = Cells(i, "e") Date_séjour(Num_sej) = Cells(i, "f") Nbre_pers(Num_sej) = Cells(i, "g") Prix_jour_pers(Num_sej) = Cells(i, "h") Sheets("Modèle").Select Cells(7, "c") = Nom_client(Num_sej) Cells(8, "c") = Adresse_client(Num_sej) Cells(9, "c") = CP_client(Num_sej) Cells(9, "d") = Ville_client(Num_sej) Nbjour = datefact - Date_séjour TotalHT_1 = Nbjour * Nbre_pers(Num_sej) * Prix_jour_pers(Num_sej) Cells(13, "e") = TotalHT_1 Call Sport End Sub Sub Sport() Dim Num_séjour, Num_sport, Nom_sport, Num_sej1 As String Dim Prix_unité, Nbre_unité, TotalHT_1, TotalHT_2, TVA, Montant_total As Integer Sheets("Réservation_sport").Select j = 2 k = 18 Num_sej1 = Cells(j, "a") Do While Num_sej1 <> Num_séjour j = j + 1 Num_sej1 = Num_sej1 + 1 Wend Num_sport(Num_sej1) = Cells(j, "b") Nom_sport(Num_sej1) = Cells(j, "c") Prix_unité(Num_sej1) = Cells(j, "d") Nbre_unité(Num_sej1) = Cells(j, "e") TotalHT_1 = Cells(13, "e") Prix_séjour = Prix_unité(Num_sej1) * Nbre_unité(Num_sej1) TotalHT_2 = TotalHT_2 + Prix_séjour Sheets("Modèle").Select Cells(k, "a") = Num_sport(Num_sej1) Cells(k, "b") = Nom_sport(Num_sej1) Cells(k, "c") = Nbre_unité(Num_sej1) Cells(k, "d") = Prix_unité(Num_sej1) Cells(k, "e") = Prix_séjour Cells(23, "e") = somme(Prix_séjour) Montant_total = TotalHT_1 + TotalHT_2 Cells(24, "e") = Montant_total TVA = Montant_total * 19.6 / 100 Cells(25, "e") = TVA Cells(26, "e") = TVA + Montant_total End Sub
Est-ce que, par hasard, quelqu'un verrait où se trouve mon erreur et pourrait m'aider, s'il vous plait ?
J'ai deux semaines pour terminer ce travail, et je ne verrai pas mon professeur avant ces deux semaines.
Je vous remercie par avance pour toute aide que vous pouriez m'apporter.
A voir également:
- [VBA] Problème de programmation
- Application de programmation - Guide
- Excel compter cellule couleur sans vba - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Find vba - Astuces et Solutions
5 réponses
Commence déjà par allez dans le menu débogage... compiler... y a un tas d'erreur au niveau des variables non déclarée...je me suis arreter à 3 mais je suis sur qu'apres les correction de variable non déclarée il va peut etre te trouver d'autres erreur .
Poour éviter ces probleme la, fais tjr compiler avant de tester ton codeet vérifer les erreurs.
Poour éviter ces probleme la, fais tjr compiler avant de tester ton codeet vérifer les erreurs.
Bonjour,
ici : Dim Date_séjour, datefact As Date
et : Date_séjour(Num_sej) = Cells(i, "f")
la variable est un tableau ou pas ?
de plus, comme me rappelait un talentueux CCMiste, les déclaration sont incomplète.
Dim Nom_client(30), Adresse_client(30), CP_client(30), Ville_client(30), Num_sej, Num_séjour, numfact As String
Dim i, Nbre_pers(30), Prix_jour_pers(30), TotalHT_1, Nbjour As Integer
Dim Date_séjour, datefact As Date
devrait se faire :
Dim Nom_client(30) As String, Adresse_client(30) As String
Dim CP_client(30) As String, Ville_client(30) As String
Dim Num_sej As String, Num_séjour As String, numfact As String
Dim i As Integer, Nbre_pers(30) As Integer
Dim Prix_jour_pers(30) As Integer, TotalHT_1 As Integer
Dim Nbjour As Integer
Lupin
ici : Dim Date_séjour, datefact As Date
et : Date_séjour(Num_sej) = Cells(i, "f")
la variable est un tableau ou pas ?
de plus, comme me rappelait un talentueux CCMiste, les déclaration sont incomplète.
Dim Nom_client(30), Adresse_client(30), CP_client(30), Ville_client(30), Num_sej, Num_séjour, numfact As String
Dim i, Nbre_pers(30), Prix_jour_pers(30), TotalHT_1, Nbjour As Integer
Dim Date_séjour, datefact As Date
devrait se faire :
Dim Nom_client(30) As String, Adresse_client(30) As String
Dim CP_client(30) As String, Ville_client(30) As String
Dim Num_sej As String, Num_séjour As String, numfact As String
Dim i As Integer, Nbre_pers(30) As Integer
Dim Prix_jour_pers(30) As Integer, TotalHT_1 As Integer
Dim Nbjour As Integer
Lupin
Salut,
tout à fait d'accord pour les déclarations :
Dim A, B as String
déclare B comme string mais A comme variant...
On peut cependant tout mettre dans un variant, mais on parfois des effets de bord...
tout à fait d'accord pour les déclarations :
Dim A, B as String
déclare B comme string mais A comme variant...
On peut cependant tout mettre dans un variant, mais on parfois des effets de bord...
Bonjour,
j'ai probablement fait trop de VBS depuis quelques temps
j'en avais oublié la déclaration de chaque variable.
ceci dit, je crois qu'il y aurait beaucoup de ménage à faire :
lors de l'encapsulation la déclaration des variables aurait
du apparaitre avec sa structure, voici ce que cela me donne :
de ceci qui a été soumis en dernière instance :
Dim Nom_client(30) As String, Adresse_client(30) As String
Dim CP_client(30) As String, Ville_client(30) As String
Dim Num_sej As String, Num_séjour As String, numfact As String
Dim i As Integer, Nbre_pers(30) As Integer
Dim Prix_jour_pers(30) As Integer, TotalHT_1 As Integer
Dim Nbjour As Integer
En fait devrait ressembler à ceci :
et tu adresse ainsi :
MaVariable = Facture(Compteur).Nom_Client
autre recommandation, évite les caractères accentués dans
le code lui-même, nom de variables, nom d'objets, etc...
Lupin
j'ai probablement fait trop de VBS depuis quelques temps
j'en avais oublié la déclaration de chaque variable.
ceci dit, je crois qu'il y aurait beaucoup de ménage à faire :
lors de l'encapsulation la déclaration des variables aurait
du apparaitre avec sa structure, voici ce que cela me donne :
de ceci qui a été soumis en dernière instance :
Dim Nom_client(30) As String, Adresse_client(30) As String
Dim CP_client(30) As String, Ville_client(30) As String
Dim Num_sej As String, Num_séjour As String, numfact As String
Dim i As Integer, Nbre_pers(30) As Integer
Dim Prix_jour_pers(30) As Integer, TotalHT_1 As Integer
Dim Nbjour As Integer
En fait devrait ressembler à ceci :
Type Enregistrement Nom_Client As String Adresse_Client As String CP_Client As String Ville_Client As String Nbre_Pers As Integer Prix_Jour_Pers As Integer End Type Type Sejournement Num_Sej As String Num_Sejour As String NumFact As String End Type Dim Compteur As Integer Dim TotalHT_1 As Integer Dim Nbjour As Integer Dim Sejour As Sejournement Dim Facture(30) As Enregistrement
et tu adresse ainsi :
MaVariable = Facture(Compteur).Nom_Client
autre recommandation, évite les caractères accentués dans
le code lui-même, nom de variables, nom d'objets, etc...
Lupin
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Après vérification, j'ai ajouté les variables et corrigé les erreurs (à l'origine, je n'avais pas ajouté la partie "sport", elle je ne l'avais préparé que sur bloc note en attendant d'avoir trouvé le problème de la partie première).
Malheureusement, j'ai encore le problème du blocage... J'ai fait "compiler" comme tu m'as conseillé, mais ça n'a rien donné de plus... L'erreur vient donc surtout de la première partie, et j'ai passé tant de temps dessus que je vois plus rien...
En tout cas, merci beaucoup pour ta réponse (me répète lol)