Besion d'aide pour d'épanner mon code [Résolu]

Signaler
-
 EnguerrandP -
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



Merci d'avoir pris le temps de me lire.

5 réponses

Messages postés
416
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
7 janvier 2018
1
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 ,
J'ai trouver ou se trouver le probléme c'était une érreur :
au lieu de l'écrire:
If(Secteur.value "Matiére premiere")
je l'ai écrit:
If(Secteur.value "Matiére premiere ")


sa change tout .

Merci pour vos aide et le temps que vous m'aver consacrer.
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 .

et merci d'avoir pris le temps de me lire .
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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
Re bonjour

Merci pour ta réponce je ne connaisser pas le fonctionnement du deboggage.