Se connecter avec
S'enregistrer | Connectez-vous

VBA Pb de classe, ne peut utiliser ma méthode

Dernière réponse : dans Programmation

Avant tout bonjour,
comme l'indique le titre, j'ai actuellement un probleme avec mon module de classe.
Jai créé un module qui a pour role d'ouvrir un classeur et de vérifier ligne par ligne le dut ce celles-ci ( en prenant les 3 premiers caracteres). Si les 3 premiers caracteres correspondent a "142" alors je vais lire les 24 prochains caracteres de cette ligne a partir du 14ieme. Puis je lance une méthode appartenant a la classe account, qui a pour but de comparer cette chaine de caractere avec d'autre stockées dans un tableau. Le but étant de retrouver le nom complet de la chaine.
Mon pb étant que quand je test ma fonction, le debugger me ressort l'erreur suivante:
Erreur d'execution '91': Variable objet ou variable de bloc With non définie

Peut etre plus simple avec le code:
voila le module utilisant la methode ( l'erreur se situe au niveau de ap.check_fct(fct) )

  1. Sub accounts_management()
  2.  
  3. 'Variables et initialisation de celles-ci
  4. Dim name As String 'variable contenant le nom de l'utilisateur
  5. Dim code As String 'variable contenant le code
  6. Dim fct As String 'variable contenant la fonction
  7. Dim i As Integer 'variable servant pr la localisation des lignes
  8.  
  9. name = "NameNULL"
  10. code = "CodeNULL"
  11. fct = "fctNULL"
  12. i = 1
  13.  
  14. ''''''''''''''''''''''
  15. 'Ouverture du fichier'
  16. ''''''''''''''''''''''
  17. Workbooks.Open Filename:="C:\Documents and Settings\gauthig\My Documents\142G 14062007 SOD output.xls" ' Note , placer le fichier a traiter exactement a l'emplacement indiqué
  18. ''''''''''''''''''''''''''''
  19. ''Traitement du texte brut''
  20. ''''''''''''''''''''''''''''
  21. ' parcourir les lignes tant que pas atteint la fin du feuillet
  22.  
  23. Sheets(1).Select
  24. 'While Not Range("A" & i).Value = ""
  25.  
  26. fct = Left(Range("A" & i), 3)
  27. If (fct = "142") Then
  28. fct = Mid(Range("A" & i), 14, 24)
  29. MsgBox fct
  30. 'instance de l'objet account
  31. Dim ap As Account
  32. ap.check_fct (fct)
  33. MsgBox fct
  34. 'methode check_fct
  35.  
  36. 'methode check_code
  37.  
  38. 'methode check_tab
  39.  
  40. End If
  41.  
  42. i = i + 1
  43. 'Wend
  44.  
  45.  
  46.  
  47. ''''''''''''''''''''''
  48. ' Fermeture fichier '
  49. ''''''''''''''''''''''
  50. ActiveWindow.Close
  51.  
  52. End Sub


et voila le module de classe
  1. 'Déclaration des variables
  2.  
  3. Private Account_tab As String
  4.  
  5.  
  6.  
  7. Private Sub Accounts_Payable_init()
  8. 'initialisation des codes pr accounts payable
  9.  
  10. 'Approves purchase requisitions ME54, ME55, ME54N, ME55N, Manual Process
  11. Account_tab(0) = "Approves purchase requisitions"
  12. 'Create and change purchase orders ME11, ME12, ME21, ME21N, ME22, ME22N, ME25, ME31, ME31K, ME31L, ME32, ME32K, ME32L, ME37, ME38, ME58, ME59, ME59N, ME84, MEMASSPO, Z_ME21N_MB
  13. Account_tab(1) = "Create and change purchase orders"
  14. 'Approves modifications to vendor master file Manual Process
  15. Account_tab(2) = "Approves modifications to vendor master file"
  16. 'Makes changes to vendor master file FI01, FI02, FI06, FK01, FK02, FK05, FK06, MK01, MK02, MK05, MK06, XK01, XK02, XK05, XK06, ZPUC010, ZTK01, ZTK02, ZTK05, ZTK06
  17. Account_tab(3) = "Makes changes to vendor master file"
  18. 'Approves access to vendor master files Manual Process
  19. Account_tab(4) = "Approves access to vendor master files"
  20. 'Approves purchase orders ME28, ME29N, ME35L, Manual Process
  21. Account_tab(5) = "Approves purchase orders"
  22. 'Approves access to purchase-related data files Manual Process
  23. Account_tab(6) = "Approves access to purchase-related"
  24. 'Enter debit memos to vendor FB65
  25. Account_tab(7) = "Enter debit memos to vendor"
  26. 'Receives goods from vendors MB01, MB0A, MBRL, MIGO, MIGO_GR
  27. Account_tab(8) = "Receives goods from vendors"
  28. 'Matches invoices to purchase orders and goods receipt. Perform two-way match for ERS and three-way match for non-ERS; Post vendor invoices - manual and/or ERS.
  29. Account_tab(9) = "Matches invoices to purchase orders and goods receipt. Perform two-way match for ERS and three-way match for non-ERS; Post vendor invoices - manual and/or ERS."
  30. 'Assigns account, cost center, and project number (if applicable) distribution of vendor invoices Manual Process
  31. Account_tab(10) = "Assigns account, cost center, and project number (if applicable) distribution of vendor invoices"
  32. 'Approves voucher packages for payment Manual Process
  33. Account_tab(11) = "Approves voucher packages for payment"
  34. 'Prepares payments including checks and EFTs.
  35. Account_tab(12) = "Prepares payments including checks and EFTs."
  36. 'Signs checks and authorizes disbursements including EFT payments. Manual Process
  37. Account_tab(13) = "Signs checks and authorizes disbursements including EFT payments."
  38. 'Reconciles accounts payable records to the general ledger Manual Process
  39. Account_tab(14) = "Reconciles accounts payable records to the general ledger"
  40. 'Controls the accuracy, completeness of, and access to purchases and accounts payable programs and data files Manual Process
  41. Account_tab(15) = "Controls the accuracy, completeness of, and access to purchases and accounts payable programs and data files"
  42.  
  43. End Sub
  44. Public Function check_fct(fct As String)
  45. Dim j As Integer
  46. Dim fct_comp As String
  47. j = 0
  48. fct_comp = ""
  49.  
  50. Do
  51. fct_comp = Left(Account_tab(j), 24)
  52. If (fct = fct_comp) Then
  53. fct = Account_tab(j)
  54. j = 16
  55. End If
  56. j = j + 1
  57. Loop Until (j > 16)
  58. End Function
  59.  
  60. Public Function check_code(i As Integer, nb_carac As Integer, code As String)
  61.  
  62.  
  63. End Function
  64.  
  65. Public Function check_tab(col As String, line As Integer, fct As String)
  66.  
  67. End Function


Cordialement
GAUTHIER Grégory

Autres pages sur : vba classe utiliser methode

Lassé par la pub ? Créez un compte
Expert Programmation

Ligne 31 de accounts_management. Tu crées la variable ap mais tu n'instancies pas l'objet correspondant. Donc erreur ligne 32 à l'appel d'une méthode d'un objet qui n'existe pas.

Il manque juste un new quelque part.

Ah ? jai cru que créer la variable ab comme un account revenait au meme qu'instancier un objet ap de type account, merci pr le coup de main
Edit: effectivement cela marche ( bon, j'ai pas le bon resultat pour ma fonction mais ca c'est a moi de régler cela ;)  )
Lassé par la pub ? Créez un compte