Importer les dannées dans Excel à partir de VB6

Claudehippolyte Messages postés 3 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 10 mai 2010 - 10 mai 2010 à 16:44
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 11 mai 2010 à 09:13
bonsoir, j'ai une erreur lorsque je tentes d'importer les données à partir de vb6 pour excel. L'érreur qui apparît est le suivant: type definir par l'utilisateur non défini. Et ce type est "Excel.Application". J'utilise EXcel 2007. S'il vous plaît aider moi à résoudre ce problème.Merci d'avance et voici mon code vb6:


Private Sub imprimer_ordt_click()
On Error Resume Next
connect
'******Le code de la tache est obligatoire
'******alors il ne peut pas être null alors on verifie si il est rempli
If code_ordt = "" Then
MsgBox "Rien a Imprimer", vbCritical, "Impression annuler"
Exit Sub
End If
'=========maintenant je doit vérifier que l'enregistrement n'a pas été modifier
If MsgBox("Voulez vous imprimer Le fiche d'ordre de travail?", vbQuestion + vbYesNo) = vbYes Then
'********Déclaration de l'pplication excel aprés avoir réferencer la dll de excel********
Dim xl As Excel.Application
Dim mafeuil As Excel.Worksheet
Set xl = CreateObject("Excel.Application")
'********Ouvrire le classeur excel maintenant **********'
xl.Workbooks.Open App.Path & "\impression\ficheordre.xls"
'********Déclarer la feuil sur laquel on va travailler (Fiche d'ordre de travail)******'
Set mafeuil = xl.Worksheets("Feuil1")
Range("E6").Value = mattech_ordt.Text
'***** on va ouvir la table des techniciens pour est extraire le nom du technicien
Set rs = New ADODB.Recordset
rs.Open "select [nom_tech] from techniciens where [mat_tech] like '" & mattech_ordt & "'", cn, 1, 2
lenom = rs.Fields(0)
Range("E7").Value = lenom
rs.Close
Set rs = Nothing
'********ouverture de la table machine pour extraire des information sur la machine concerner
Dim rsmachine As New ADODB.Recordset
rsmachine.Open "select * from machines where [numserie_mach] like '" & nummach_ordt.Text & "'", cn, 1, 2
Range("F5").Value = rsmachine.Fields(0)
Range("B5").Value = rsmachine.Fields(1)
Range("D5").Value = rsmachine.Fields(3)
Range("G5").Value = rsmachine.Fields(4)
rsmachine.Close
Set rs = Nothing
Range("I5").Value = localisationmach_ordt.Text
'****** Pour les bouton d'option
If Optionoui.Value = True Then
Range("I17").Value = "X"
Else
Range("J17").Value = "X"
End If
Range("I6").Value = datesouhait_ordt
Range("B8").Value = datedebut_ordt
Range("D8").Value = datefin_ordt
Range("F8").Value = dureeprevue_ordt
Range("H8").Value = dureereelle_ordt
Range("I9").Value = heuredebut_ordt
Range("J9").Value = heurefin_ordt
Range("A12").Value = descriptache_ordt
Range("F12").Value = observation_ordt
Range("A26").Value = piece_ordt
Range("I28").Value = prixtotalpiece_ordt
Range("A31").Value = recept_ordt
Range("E31").Value = intervenants_ordt
xl.Visible = True
ActiveWindow.SelectedSheets.PrintOut
xl.Quit
Set xl = Nothing
MsgBox "Impression avec succée", vbInformation
Else
MsgBox "Impression annuler!!", vbInformation
End If
Else
'MsgBox "Vous avez modifier l'enregistrement Merci d'enregistrez" & vbCrLf _
'& "Les modification Pour poursuivre l'impression"
'Exit Sub
'End If
End Sub

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 mai 2010 à 19:18
Salut
Bon, tu es sous VB6 (SP6 ?) et tu veux lire un fichier Excel de type XLS généré par Excel 2007, c'est à dire un fichier compatible Excel 2003 (sinon ça aurait été un XLSX)
Quand je dis VB6, il s'agit du vrai VB ou bien du VBA inclus dans Excel ?
Parce que ça fait une grosse différence.

Est-ce bien ça ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 mai 2010 à 19:24
Si c'est vraiment du VB6 et pas du VBA, tes lignes commençant par Range ne peuvent pas fonctionner, c'est un mot clé inconnu sous VB6.
Il te faut faire référence à ton objet mafeuil (à tester) :
    Dim maSelection As Excel.Selection
    mafeuil.Select
    Set maSelection = mafeuil.Application.Selection
    With maSelection
        .Range ...
        .Range ...
    End With

On retrouve ce genre de code dans n'importe quelle source VB6 qui parle de lire du Excel : un peu de recherche t'aurais déjà aidée ...

PS : la prochaine fois, utilise la coloration syntaxique = 3ème icone à droite,pour coller ton code parce que sans, c'est chiant à lire.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 mai 2010 à 09:13
PS : Désolé, j'ai confondu avec Word :
Oublie le "maSelection", les Range se réfèrent simplement à la feuille :
    With mafeuil
        .Select
        .Range ...
        .Range ...
    End With
0
Rejoignez-nous