verifification code sur macro extraction AS400

vjoug

XLDnaute Junior
Bonjour à toutes et tous,

J'ai un petit fichier qui a marché pendant des années et qui depuis plusieurs mois ne fonctionne plus sans raisons.
Avant de commencer, le but de ce fichier est d'extraire des données dans une base de données IBM AS400 puis de les mettes en forme.

Uneame charitable serait-elle me dire si quelque chose cloche au niveau de l'extraction?

nom du classeur : nmmencaltures
Bibliothéque attaqué via un ODBC : "V61BPFR" et "MOIS"
DSN : BPCS
BPROD,BCHLD,IIML01.IDESC,BQREQ ... correspond aux noms des données a rappatrier
Qd je rappatrie mon EXCEL plante ou tourne des "heures" pour ne rien extraire

Cordialement

--------------------------------------------------------------
Public classeur As Workspace
Public Base_v61 As Database
Public Base_MOIS As Database

Public LesEnregist1 As Recordset, LesEnregist2 As Recordset, LesEnregist3 As Recordset, LesEnregist4 As Recordset
Public ident As String, mot_de_passe As String
Public Connect As Boolean, Connect1 As Boolean
Public art As String, art1 As String
Public w As Integer
Public tot_op As Double, tot_piece As Double





Sub extraction()

Sheets("nomenclatures").Select
art = Sheets("nomenclatures").TextBox4.Value
tot_op = 0
tot_piece = 0






'If Connect = False Then
Set classeur = CreateWorkspace("", "admin", "", dbUseJet)
Set Base_v61 = classeur.OpenDatabase("BPCS", _
dbDriverNoPrompt, True, _
"ODBC;DATABASE=v61bpfr;UID=" & ident & " ;PWD= " & mot_de_passe & ";DSN=BPCS")
' Connect = True
'End If

'If Connect1 = False Then
Set classeur1 = CreateWorkspace("", "admin", "", dbUseJet)
Set Base_MOIS = classeur1.OpenDatabase("BPCS1", _
dbDriverNoPrompt, True, _
"ODBC;DATABASE=MOIS;UID=" & ident & " ;PWD= " & mot_de_passe & ";DSN=BPCS1")
' Connect1 = True
'End If



Range(Cells(8, 1), Cells(1000, 10)).ClearContents

Set LesEnregist2 = Base_v61.OpenRecordset("SELECT BPROD,BCHLD,IIML01.IDESC,BQREQ FROM MBML01 LEFT OUTER JOIN IIML01 ON (MBML01.BCHLD=IIML01.IPROD) WHERE (BPROD='" & art & "') ;")

If LesEnregist2.BOF = False Then
With LesEnregist2
.MoveLast
.MoveFirst
Nb2 = (.RecordCount)
End With

For p = 1 To Nb2
For i = 0 To 3
Cells(p + 7, i + 1) = LesEnregist2.Fields(i)
Next i

LesEnregist2.MoveNext
Next p
LesEnregist2.Close
End If






z = 8

While (Cells(z, 2) <> "")
art1 = "" & Cells(z, 2) & ""

Set LesEnregist3 = Base_v61.OpenRecordset("SELECT CFTLVL+CFPLVL FROM CMF WHERE (CFFAC='LI' AND CFCSET=2 AND CFCBKT=0 AND CFPROD='" & art1 & "') ;")

If LesEnregist3.BOF = False Then
With LesEnregist3
.MoveLast
.MoveFirst
Nb3 = (.RecordCount)
End With

Cells(z, 5) = LesEnregist3.Fields(0)
Cells(z, 6).FormulaR1C1 = "=RC[-1]*RC[-2]"
tot_piece = tot_piece + Cells(z, 6)
LesEnregist3.MoveNext

LesEnregist3.Close
End If

z = z + 1
Wend


Sheets("opérations").Select

Range(Cells(10, 1), Cells(1000, 10)).ClearContents


Set LesEnregist4 = Base_v61.OpenRecordset("SELECT IDESC FROM IIML01 WHERE (IPROD='" & art & "') ;")

If LesEnregist4.BOF = False Then
With LesEnregist4
.MoveLast
.MoveFirst
Nb4 = (.RecordCount)
End With

Sheets("nomenclatures").TextBox5.Value = LesEnregist4.Fields(0)
LesEnregist4.MoveNext

LesEnregist4.Close
End If


Set LesEnregist1 = Base_v61.OpenRecordset("SELECT RPROD,RWRKC,ROPDS,RLAB,LWK.WLRTE,RLAB*LWK.WLRTE FROM FRT LEFT OUTER JOIN LWK ON (FRT.RWRKC=LWK.WWRKC) WHERE (RPROD='" & art & "') ;")

If LesEnregist1.BOF = False Then
With LesEnregist1
.MoveLast
.MoveFirst
Nb1 = (.RecordCount)
End With

For p = 1 To Nb1
For i = 0 To 5
Cells(p + 9, i + 1) = LesEnregist1.Fields(i)
Next i
tot_op = tot_op + Cells(p + 9, 6)
LesEnregist1.MoveNext
Next p
LesEnregist1.Close
End If





Sheets("nomenclatures").Select

Sheets("nomenclatures").TextBox1.Value = tot_piece

Sheets("nomenclatures").TextBox2.Value = tot_op

Sheets("nomenclatures").TextBox3.Value = tot_op + tot_piece

Debug.Print "" & tot_op & " " & tot_piece & ""
End Sub
 

skoobi

XLDnaute Barbatruc
Re : verifification code sur macro extraction AS400

Bonsoir,

Si tu n'as rien changé dans le code je ne vois qu'une seul raison pour que ça ne marche plus: quelqu'un a modifié un paramètre quelconque dans l'AS400 qui fait planter le code.Relève la ligne qui plante et regarde avec lui.
 

GIBI

XLDnaute Impliqué
Re : verifification code sur macro extraction AS400

Bonsoir,

Il y a forcément eu un changement (Version d'excel, nom de la base,)

As-tu exécuté le code en pas à pas (F8)?

si oui tu as repéré jusqu'où cela fonctionne?

Y-a-t-il un problème de volumétrie

Y-a-t-il assez de place pour les fichiers temporaires sur ton disque local?

Difficile de t'apporter de l'aide, mais je pense que tu vas résoudre le PB avec le pas à pas

GIBI


Remarque : il est souhaitable de libérer les recordset après utilisation

ex : set LesEnregist1 = nothing
 

vjoug

XLDnaute Junior
Re : verifification code sur macro extraction AS400

Skoobi, Gibi les formeuse et forumeurs bonjour à vous,

Nousavons eu beaucoup de changement en informatique cesderniers mois.
Pour la versioon Excel c'est possible que j'en ai installé plusieurs ( parfois en même temps) Le VB est -il si sensible que ça au version en sachant que mon code déja de 2005?

Il y a forcément eu un changement (Version d'excel, nom de la base,)
Dans la base et aux dires de mon informaticien il n'y a pas eu de changement d'ailleurs j'arrive à me logger, c'est aprés que cela ne rappatrie pas.

As-tu exécuté le code en pas à pas (F8)?
Non pas pensé à cela j'essaye ce jour car l'ensemble de mes fichiers ( env 6 utilitaires ) ont le même soucis

Je penche pour un pb d'Excel car cela marche sur un poste en Win2000 avec excel 2000 alors que je suis en WinXP avec Excel 2000 par contre cela est trés tres long depuis quelques mois ( le CP est vieux).

Je penche de mon coté au MDAC de microsoft mais il me semble qu'il y a un ordre / à son installation et l'installation de l'opération nvaigator d'IBM.


En tout cas merci de votre aide, je vous tient au courant par rapport à vos soultions proposées et la soluce coté MDAC 2.8

Cordialement

si oui tu as repéré jusqu'où cela fonctionne?
idem

Y-a-t-il un problème de volumétrie
Je ne sais pas ce que tu entends par volumétrie ( si c'est la capacité d'excel en terme de lignes et de colones il n'y a pas de pb de ce coté la

Y-a-t-il assez de place pour les fichiers temporaires sur ton disque local?Je n'ai pas essayer le code pas à pas
Il n'y a pas de pb de ce coté la
 

vjoug

XLDnaute Junior
Re : verifification code sur macro extraction AS400

Re à toutes et tous

Aprés un essai de reinstallation du MDAC, il me dit que le MDAC 2.8 est déja installé et qu'il ne peut/veut pas le reinstaller.

J'ai supprimé l'opération nvigator puis je l'ai reinstallé.
J'avais Excel 2003 que j'ai supprimé pour remettre Excel 2000
J'ai fait la macro pas à pas mais rien d'anormal.

J'essaye le SP3 de win XP et je vous tiens au courant

Cordialement
 

vjoug

XLDnaute Junior
Re : verifification code sur macro extraction AS400

Il semblerais que j'ai un probleme au niveau du microsoft jet.
amlgré une résintal de la version 4 SP8 cela ne fonctionne pas

Il but sur le bout de code suivant :
Set LesEnregist2 = Base_v61.OpenRecordset("SELECT BPROD,BCHLD,IIML01.IDESC,BQREQ FROM MBML01 LEFT OUTER JOIN IIML01 ON (MBML01.BCHLD=IIML01.IPROD) WHERE (BPROD='" & art & "') ;")
sur la portion concernant le MBML01 qui est un des fichier de l'AS400 pourtant bien actif.

Lorsque je lance ma macro j'entend mon PC mouliner ( surtout le disuqe) pendant de tres tres longue minute puis il plante alros que par le passé cette extraction mettait moins d'une minute.

Si quelqu'un aurait une idée du pb cela m'arrangerai

Un de mes collègues a essayé ce fichier sur son PC et il marche correctement.
Nosu aovns les même configuration de DSN.

Coridialement
 

GIBI

XLDnaute Impliqué
Re : verifification code sur macro extraction AS400

Bonsoir,

Si tout fonctionne avec Excel 200 comme tu le dis.

il y a une incompatibilité entre les différents composants DLL office et ODBC. quand tu dis j'ai réinstallé excel 200 ou 2003 cela suppose que tu réinstalle l'ensemble des composants office (dont la partie ODBC).

Pour l'évolution entre le VBA (VB avec spécificités office) il existe effectivement des différences entre les offices mais entre 2000 et 2003 très très peu.


Pour finir, quand tu dis "Lorsque je lance ma macro j'entend mon PC mouliner ( surtout le disuqe) pendant de tres tres longue minute puis il plante alros que par le passé cette extraction mettait moins d'une minute." cela se traduit comment : un plantage windows ou un message de VB. As-tu fait un essaie minimaliste avec une requête du type "select count(*) from uneTable"

Bon test

GIBI
 

vjoug

XLDnaute Junior
Re : verifification code sur macro extraction AS400

Bonsoir à tous,

Merci de ta réponse GIBI.
J'ai bien entendu tout desintallé et tout réinstallé.
Il semble que mon PC traine un soucis.
Je vais tout formater et réinstaller pour repartir sur des bonnes bases.

Quand je parle de moulinage, c'est plutôt une execution "sans fin" du programme qui se solde par aucun rappatriement de données.
Malheuresement je n'ai pas de plantage avec un code d'erreur.
C'est comme s'il travailler trés trés ongtemps sans ne rien traiter.

Merci de m'avoir accorder un peu de votre temps

Cordialement

Coridalement
 

Statistiques des forums

Discussions
312 922
Messages
2 093 658
Membres
105 778
dernier inscrit
Ricky22