FORUM Tom's Hardware » Programmation » VB / VBA / VBS » VBA Pb de classe, ne peut utiliser ma méthode
 

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

Il y a 237 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : VBA Pb de classe, ne peut utiliser ma méthode
 
Plus d'informations

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) )
 

Code :
  1. Sub accounts_management()
  2. 'Variables et initialisation de celles-ci
  3. Dim name As String 'variable contenant le nom de l'utilisateur
  4. Dim code As String 'variable contenant le code
  5. Dim fct As String 'variable contenant la fonction
  6. Dim i As Integer 'variable servant pr la localisation des lignes
  7. name = "NameNULL"
  8. code = "CodeNULL"
  9. fct = "fctNULL"
  10. i = 1
  11. ''''''''''''''''''''''
  12. 'Ouverture du fichier'
  13. ''''''''''''''''''''''
  14. 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é
  15. ''''''''''''''''''''''''''''
  16. ''Traitement du texte brut''
  17. ''''''''''''''''''''''''''''
  18. ' parcourir les lignes tant que pas atteint la fin du feuillet
  19. Sheets(1).Select
  20. 'While Not Range("A" & i).Value = ""
  21.     fct = Left(Range("A" & i), 3)
  22.     If (fct = "142" ) Then
  23.         fct = Mid(Range("A" & i), 14, 24)
  24.         MsgBox fct
  25.         'instance de l'objet account
  26.         Dim ap As Account
  27.         ap.check_fct (fct)
  28.         MsgBox fct
  29.         'methode check_fct
  30.        
  31.         'methode check_code
  32.        
  33.         'methode check_tab
  34.        
  35.     End If
  36.     i = i + 1
  37. 'Wend
  38. ''''''''''''''''''''''
  39. ' Fermeture fichier  '
  40. ''''''''''''''''''''''
  41. ActiveWindow.Close
  42. End Sub


 
et voila le module de classe

Code :
  1. 'Déclaration des variables
  2. Private Account_tab As String
  3. Private Sub Accounts_Payable_init()
  4. 'initialisation des codes pr accounts payable
  5. 'Approves purchase requisitions ME54, ME55, ME54N, ME55N, Manual Process
  6. Account_tab(0) = "Approves purchase requisitions"
  7. '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
  8. Account_tab(1) = "Create and change purchase orders"
  9. 'Approves modifications to vendor master file Manual Process
  10. Account_tab(2) = "Approves modifications to vendor master file"
  11. '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
  12. Account_tab(3) = "Makes changes to vendor master file"
  13. 'Approves access to vendor master files Manual Process
  14. Account_tab(4) = "Approves access to vendor master files"
  15. 'Approves purchase orders ME28, ME29N, ME35L, Manual Process
  16. Account_tab(5) = "Approves purchase orders"
  17. 'Approves access to purchase-related data files Manual Process
  18. Account_tab(6) = "Approves access to purchase-related"
  19. 'Enter debit memos to vendor FB65
  20. Account_tab(7) = "Enter debit memos to vendor"
  21. 'Receives goods from vendors MB01, MB0A, MBRL, MIGO, MIGO_GR
  22. Account_tab(8) = "Receives goods from vendors"
  23. '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.
  24. 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."
  25. 'Assigns account, cost center, and project number (if applicable) distribution of vendor invoices Manual Process
  26. Account_tab(10) = "Assigns account, cost center, and project number (if applicable) distribution of vendor invoices"
  27. 'Approves voucher packages for payment Manual Process
  28. Account_tab(11) = "Approves voucher packages for payment"
  29. 'Prepares payments including checks and EFTs.
  30. Account_tab(12) = "Prepares payments including checks and EFTs."
  31. 'Signs checks and authorizes disbursements including EFT payments. Manual Process
  32. Account_tab(13) = "Signs checks and authorizes disbursements including EFT payments."
  33. 'Reconciles accounts payable records to the general ledger Manual Process
  34. Account_tab(14) = "Reconciles accounts payable records to the general ledger"
  35. 'Controls the accuracy, completeness of, and access to purchases and accounts payable programs and data files Manual Process
  36. Account_tab(15) = "Controls the accuracy, completeness of, and access to purchases and accounts payable programs and data files"
  37. End Sub
  38. Public Function check_fct(fct As String)
  39. Dim j As Integer
  40. Dim fct_comp As String
  41. j = 0
  42. fct_comp = ""
  43. Do
  44.    fct_comp = Left(Account_tab(j), 24)
  45.    If (fct = fct_comp) Then
  46.         fct = Account_tab(j)
  47.         j = 16
  48.    End If
  49.    j = j + 1
  50. Loop Until (j > 16)
  51. End Function
  52. Public Function check_code(i As Integer, nb_carac As Integer, code As String)
  53. End Function
  54. Public Function check_tab(col As String, line As Integer, fct As String)
  55. End Function


 
Cordialement  
GAUTHIER Grégory

zeb
Profil : Modérateur libre
Plus d'informations

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.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

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  ;) )


Message édité par croumir le 12-09-2007 à 15:02:59

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » VBA Pb de classe, ne peut utiliser ma méthode
 

Annonces Google
Publicité