Bonjour,
Je solicite votre aide car je n'arrive pas a voir pourquoi cette parti de mon programme ne marche pas.
Objectif du code :
- Il vérifie si un fournisseur existe s'il il éxiste une msgbox apparait.
sinon il va crée une feuille fournisseur avec toute les information entrée dans son userform.
(cette partie fonctionne correctement)
-En plus de crée une feuille fournisseur il doit :
1)rajouter dans une feuille de tout les fournisseur "Fournisseur" ,le secteur ,le nom du fournisseur , son email (donnée optionnel) , son fax (donnée optionnel), son numéro de téléphone(donnée optionnel)
2)rajouter dans une feuille fournisseur secteur "Fournisseur (2) ou (3)" ,le nom du fournisseur , son email (donnée optionnel) , son fax (donnée optionnel), son numéro de téléphone(donnée optionnel)
-C'est cette parti qui ne fonctionne pas correctement lorque je choisi un secteur sur la feuille de tout les founisseur il ne m'indique pas le bon est il ne rajoute pas le nouveau fournisseur à sa liste de secteur.
Voila le code( uniquement de l'interface d'ajout de fournisseur si il y a besion de plus je verrait si je peut vous le fournir):
' Appui sur Retour (à l'interface principale) '
Private Sub Retour_Click()
Ajout_Fournisseur.Hide
Interface.Show
End Sub
' Initialisation de l'userform : Ajout_Fournisseur '
Private Sub UserForm_Initialize()
Secteur.AddItem ("Matiére premiere")
Secteur.AddItem ("Emballage")
End Sub
' Appui sur Validation '
Private Sub Validation_Click()
Dim feuil As Object
' Teste si une feuille excel existe : '
On Error Resume Next
Set feuil = Sheets(Fournisseur.Text)
If Err 0 Then FeuilleExiste True
Set feuil = Nothing
' Si elle existe : '
If (FeuilleExiste = True) Then
MsgBox " Le fournisseur éxiste déjà"
' Si elle n'éxiste pas : '
ElseIf (FeuilleExiste = False) Then
ligne = 2
' Inscri le nom du fournisseur dans la liste principale :'
' - Puis inscri le fournisseur dans la liste secondaire qui le consernne :'
If (Secteur.Value = "Matiére premiere ") Then
While (Worksheets("Fournisseur").Cells(ligne, 2) <> "")
ligne = ligne + 1
Wend
If (Worksheets("Fournisseur").Cells(ligne, 2) = "") Then
Worksheets("Fournisseur").Cells(ligne, 2).Value = Fournisseur.Value
Worksheets("Fournisseur").Cells(ligne, 1).Value = 2
Worksheets("Fournisseur").Cells(ligne, 3).Value = Email.Value
Worksheets("Fournisseur").Cells(ligne, 4).Value = fax.Value
Worksheets("Fournisseur").Cells(ligne, 5).Value = tel.Value
End If
While (Worksheets("Fournisseur (2)").Cells(ligne, 2) <> "")
ligne = ligne + 1
Wend
If (Worksheets("Fournisseur (2)").Cells(ligne, 2) = "") Then
Worksheets("Fournisseur (2)").Cells(ligne, 2).Value = Fournisseur.Value
Worksheets("Fournisseur (2)").Cells(ligne, 3).Value = Email.Value
Worksheets("Fournisseur (2)").Cells(ligne, 4).Value = fax.Value
Worksheets("Fournisseur (2)").Cells(ligne, 5).Value = tel.Value
End If
ElseIf (Sectuer.Value = "Emballage") Then
While (Worksheets("Fournisseur").Cells(ligne, 2) <> "")
ligne = ligne + 1
Wend
If (Worksheets("Fournisseur").Cells(ligne, 2) = "") Then
Worksheets("Fournisseur").Cells(ligne, 2).Value = Fournisseur.Value
Worksheets("Fournisseur").Cells(ligne, 1).Value = 3
Worksheets("Fournisseur").Cells(ligne, 3).Value = Email.Value
Worksheets("Fournisseur").Cells(ligne, 4).Value = fax.Value
Worksheets("Fournisseur").Cells(ligne, 5).Value = tel.Value
End If
While (Worksheets("Fournisseur (3)").Cells(ligne, 2) <> "")
ligne = ligne + 1
Wend
If (Worksheets("Fournisseur (3)").Cells(ligne, 2) = "") Then
Worksheets("Fournisseur (3)").Cells(ligne, 2).Value = Fournisseur.Value
Worksheets("Fournisseur (3)").Cells(ligne, 3).Value = Email.Value
Worksheets("Fournisseur (3)").Cells(ligne, 4).Value = fax.Value
Worksheets("Fournisseur (3)").Cells(ligne, 5).Value = tel.Value
End If
End If
End If
' Créer la Fiche du nouveau fournisseur : '
NF = Fournisseur.Value
Sheets.Add
ActiveSheet.Name = NF
' Ajoute le titre "Produit" à la fiche du nouveau fournisseur :'
Worksheets(NF).Cells(1, 1).Value = "Produit :"
' Ajoute le titre "email" à la fiche du nouveau fournisseur :'
Worksheets(NF).Cells(1, 2).Value = "E-mail :"
Worksheets(NF).Cells(2, 2).Value = Email.Value
' Ajoute le titre "fax" à la fiche du nouveau fournisseur :'
Worksheets(NF).Cells(3, 2).Value = "Fax :"
Worksheets(NF).Cells(4, 2).Value = fax.Value
' Ajoute le titre "téléphone" à la fiche du nouveau fournisseur :'
Worksheets(NF).Cells(5, 2).Value = "Téléphone :"
Worksheets(NF).Cells(6, 2).Value = tel.Value
' Ajoute le titre "Prix" à la fiche du nouveau fournisseur :'
Worksheets(NF).Cells(1, 3).Value = "Prix :"
' Ajoute c'est produit(s) à la fiche du nouveau fournisseur :'
Worksheets(NF).Cells(2, 1).Value = Produit1.Value
Worksheets(NF).Cells(3, 1).Value = Produit2.Value
Worksheets(NF).Cells(4, 1).Value = Produit3.Value
Worksheets(NF).Cells(5, 1).Value = Produit4.Value
Worksheets(NF).Cells(6, 1).Value = Produit5.Value
Worksheets(NF).Cells(7, 1).Value = Produit6.Value
End Sub
CGSI3
Messages postés416Date d'inscriptionvendredi 22 février 2008StatutMembreDernière intervention 7 janvier 20181 9 mai 2013 à 13:00
Bonjour,
Je passe juste rapidement sur le code et il serait bon que tu puisse déboguer un peu chaque étape de traitement pour vérifier que les bonnes informations sont traités et stocké au bon endroit.
voici déjà 2 remarques et corrections:
Code: If (Worksheets("Fournisseur").Cells(ligne, 2) = "") Then
Correction: If (Worksheets("Fournisseur").Cells(ligne, 2) .value = "") Then
(.Value doit être signifier même si parfois ce genre de code fonctionne)
code: ElseIf (Sectuer.Value = "Emballage") Then
Correction: Sectuer est il correctement orthographier vu que tu met
Secteur.AddItem ("Matiére premiere")
quelques lignes au dessus.
bonjour ,
merci de pour ses correction je vient de les éffectuer mes il n'y a pas d'amélioration notable.
je vais essayer de reprendre depuis le début du probléme en passent par un autre chemin je vous tient au courant de mes avancer .
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 9 mai 2013 à 17:34
Bonjour,
Au cas où... Peut-être devrais-tu apprendre à "déboguer" ton code (?)
Tu te places sur une ligne et tu tapes F9 pour créer un arrêt (ou tu cliques dans la bande grise à gauche)
Lorsque tu roules ton programme, la macro s'arrêtera sur cette ligne.
Il te reste à taper F8 pour passer en pas à pas, ligne par ligne.
Pendant cette action, tu peux passer ta souris au-dessus des variables pour voir leurs valeurs et/ou afficher la fenêtre espions (menu Affichage) dans laquelle tu places tes variables, range,... et voir leurs valeurs se modifier au fur et à mesure des F8
Aussi, mets toujours Option Explicit en entête de code de chaque feuille ou module. Tu peux le faire automatiquement en allant dans le menu Outils / Options et tu coches la case "Déclaration des variables obligatoire". Tu peux en profiter pour décocher la 1ere boîte "Vérification automatique de la syntaxe" qui fait s'arracher les cheveux à la longue...
Quand tu es dans ton code, va dans le menu Débogage et sélectionne Compiler VBAProject pour voir s'il y a des erreurs.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Vous n’avez pas trouvé la réponse que vous recherchez ?