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 :
Sub accounts_management()
'Variables et initialisation de celles-ci
Dim name As String 'variable contenant le nom de l'utilisateur
Dim code As String 'variable contenant le code
Dim fct As String 'variable contenant la fonction
Dim i As Integer 'variable servant pr la localisation des lignes
name = "NameNULL"
code = "CodeNULL"
fct = "fctNULL"
i = 1
''''''''''''''''''''''
'Ouverture du fichier'
''''''''''''''''''''''
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é
''''''''''''''''''''''''''''
''Traitement du texte brut''
''''''''''''''''''''''''''''
' parcourir les lignes tant que pas atteint la fin du feuillet
Sheets(1).Select
'While Not Range("A" & i).Value = ""
fct = Left(Range("A" & i), 3)
If (fct = "142" ) Then
fct = Mid(Range("A" & i), 14, 24)
MsgBox fct
'instance de l'objet account
Dim ap As Account
ap.check_fct (fct)
MsgBox fct
'methode check_fct
'methode check_code
'methode check_tab
End If
i = i + 1
'Wend
''''''''''''''''''''''
' Fermeture fichier '
''''''''''''''''''''''
ActiveWindow.Close
End Sub
et voila le module de classe
Code :
'Déclaration des variables
Private Account_tab As String
Private Sub Accounts_Payable_init()
'initialisation des codes pr accounts payable
'Approves purchase requisitions ME54, ME55, ME54N, ME55N, Manual Process
Account_tab(3) = "Makes changes to vendor master file"
'Approves access to vendor master files Manual Process
Account_tab(4) = "Approves access to vendor master files"
'Approves purchase orders ME28, ME29N, ME35L, Manual Process
Account_tab(5) = "Approves purchase orders"
'Approves access to purchase-related data files Manual Process
Account_tab(6) = "Approves access to purchase-related"
'Enter debit memos to vendor FB65
Account_tab(7) = "Enter debit memos to vendor"
'Receives goods from vendors MB01, MB0A, MBRL, MIGO, MIGO_GR
Account_tab(8) = "Receives goods from vendors"
'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.
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."
'Assigns account, cost center, and project number (if applicable) distribution of vendor invoices Manual Process
Account_tab(10) = "Assigns account, cost center, and project number (if applicable) distribution of vendor invoices"
'Approves voucher packages for payment Manual Process
Account_tab(11) = "Approves voucher packages for payment"
'Prepares payments including checks and EFTs.
Account_tab(12) = "Prepares payments including checks and EFTs."
'Signs checks and authorizes disbursements including EFT payments. Manual Process
Account_tab(13) = "Signs checks and authorizes disbursements including EFT payments."
'Reconciles accounts payable records to the general ledger Manual Process
Account_tab(14) = "Reconciles accounts payable records to the general ledger"
'Controls the accuracy, completeness of, and access to purchases and accounts payable programs and data files Manual Process
Account_tab(15) = "Controls the accuracy, completeness of, and access to purchases and accounts payable programs and data files"
End Sub
Public Function check_fct(fct As String)
Dim j As Integer
Dim fct_comp As String
j = 0
fct_comp = ""
Do
fct_comp = Left(Account_tab(j), 24)
If (fct = fct_comp) Then
fct = Account_tab(j)
j = 16
End If
j = j + 1
Loop Until (j > 16)
End Function
Public Function check_code(i As Integer, nb_carac As Integer, code As String)
End Function
Public Function check_tab(col As String, line As Integer, fct As String)
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.
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