Formulaire VBA ; Erreur 9 ; La fatale...

Résolu
Sam -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Je suis débutant sur le code VBA et je me suis amusé à créer une mercuriale pour le restaurant où je travaille.

Sous forme de tableau dynamique sont référencés tous les produits par : Catégorie, Fournisseur, Conditionnement, Code, Produit, Unité, PUHT1, PUHT2, Commentaire.

Tout marchait correctement. Et puis j'éteins et je rallumes mon pc eet là... c'est le drame... Erreur 9, impossible de tester le formulaire. Ce n'est pas seulement la macro de lancement ("UserForm1.show") c'est tout le formulaire, puisque je ne peux même pas le tester (f5)...

Donc si je peux vous demander de l'aide, ce serait avec beaucoup de gratitude !

Voici le fichier en lien :
https://cjoint.com/c/HLntFFLSSQ8

Il y a tout un pan de programme qui ne marche pas, j'ai essayer de le virer mais l'erreur ne semble pas venir de là.

D'après moi le problème vient de l'attribution des modules et formulaires au bon classeur, mais comme je ne maitrise pas assez VBA, je ne connais pas les formules pour corriger cela.

D'avance merci pour votre aide !

Configuration: Windows / Firefox 63.0

4 réponses

  1. abdel550 Messages postés 47 Statut Membre 45
     
    Quel le probléme en gros
    0
  2. Sam
     
    Bonsoir
    En gros le problème est que je n'arrive pas à lancer le formulaire via une macro dans le premier temps.

    Dans un second temps j'aimerai faite fonctionner la partie de mon code qui ne fonctionne pas (notée en commentaire dans le code) et qui est censé afficher les différentes caractéristique du produit tapé dans ComboBox_pdt si une occurrence apparaît dans la colonne Produit

    Je ne sais pas si c'est assez clair ?

    Merci
    Samuel
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    Dans ton code à cette ligne
    no_ligne = ThisWorkbook.Sheets("Liste").Range("A65536").End(xlUp).Row

    ajoute un "s" à liste

    je n'ai pas tester le reste mais il y a un gros travail d'optimisation de ton code "usine à gaz"

    pour trouver une erreur:
    tu met un point d'arrêt en début de macro
    et tu appelles le déroulement du code en pas à pas avec la touche F8
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      ET pendant que j'y suis

      0
    2. Sam
       
      Bonjour,

      Et merci ! Je me sens con.... Mais du moment que ça marche ! :D

      J'avoue ne pas savoir de quand dates ces modifications, puisque avant mon code marchait.. Bref, merci beaucoup pour la relecture !

      (et merci pour le tips de la relecture, je ne connaissais pas !)
      0
    3. Sam
       
      Et sinon pour avancer un peu le truc (tant pis pour "l'usine à gaz") :

      Ce que je cherche à faire :

      Faire apparaître dans les différentes cases prévues dans le formulaire les valeurs correspondantes au produit recherché dans la ComboBox_Pdt. Cela marche pour les produits référencés mais dans le cas où le produit n'est pas référencé (ajout de produit par ex) cela me met un bug, parce qu'il veut absolument une valeur pour nom_pdt.Row . J'ai essayé plusieurs chose mais ça ne marche pas et je bloque... Voici mon code pour le moment :

      Private Sub ComboBox_Pdt_Change()
      Dim no_ligne As Integer, nom_pdt As Variant
      nom_pdt = WorksheetFunction.Sheets("Produits").Range("E1:E65536").Find(ComboBox_Pdt)
      If nom_pdt.Row = 0 Then
      ComboBox_Cat.ListIndex = -1
      ComboBox_Four.ListIndex = -1
      TextBox_Cond.Value = ""
      TextBox_Cod.Value = ""
      ComboBox_Unit.ListIndex = -1
      TextBox_PUVR.Value = ""
      TextBox_PUPG.Value = ""
      TextBox_Com.Value = ""
      Else
      no_ligne = nom_pdt.Row
      ComboBox_Cat.Value = Cells(no_ligne, 1)
      ComboBox_Four.Value = Cells(no_ligne, 2)
      TextBox_Cond.Value = Cells(no_ligne, 3)
      TextBox_Cod.Value = Cells(no_ligne, 4)
      ComboBox_Unit.Value = Cells(no_ligne, 6)
      TextBox_PUVR.Value = Cells(no_ligne, 7)
      TextBox_PUPG.Value = Cells(no_ligne, 8)
      TextBox_Com.Value = Cells(no_ligne, 9)
      CommandButton_Ajout.Enabled = False
      End If
      End Sub


      D'avance merci !
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re

    pour gérer une erreur
    par exemple
    Option Explicit
    '--------------------------------------------
    Sub xxx()
    Dim Lig As Integer, nom As String
    nom = "Radis bio"
    On Error GoTo inconnu
    Lig = Columns("A").Find(nom, Range("A1"), xlValues, xlWhole).Row

    Exit Sub
    'gestionnaire erreurs

    inconnu:
    MsgBox nom & " inconnu", vbCritical
    End Sub</code>

    dans ton cas xlwhole cherche la dénomination exacte (différence entre "radis" et "radis bio")
    0