Importer les dannées dans Excel à partir de VB6

Signaler
Messages postés
3
Date d'inscription
lundi 22 mars 2010
Statut
Membre
Dernière intervention
10 mai 2010
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
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.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
75
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