[Catégorie modifiée .Net -> VBA] urgent je voulais l'aide le plus vite possible

Résolu
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011 - 23 avril 2011 à 11:19
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011 - 20 mai 2011 à 08:43
Salut,

j'ai tapé ce code pour faire l'importation du fichier excel je suis besoin de ton aide il ne s’exécute pas (erreur: type mismache)

form1

Public ClasseurXLS As Object
Dim File As String

Private Sub importer_Click()
Call ConnectBD
Set ClasseurXLS = CreateObject("Excel.application")

'Ouverture du classeur d'importation
ClasseurXLS.Workbooks.Open File

i = 2
Do While ClasseurXLS.cells(i, 1) <> ""
'Insertion des données dans la table
util.AddNew
util!Einzelressource = ClasseurXLS.cells(i, 1)
util!Resgrp = ClasseurXLS.cells(i, 2)
util!Resgrp_Bez = ClasseurXLS.cells(i, 3)
util!Kontakt_1 = ClasseurXLS.cells(i, 4)
util!Kontakt_1_Bez = ClasseurXLS.cells(i, 5)
util!Menge = ClasseurXLS.cells(i, 6)
util!Dichtung_1 = ClasseurXLS.cells(i, 7)
util!Dichtung_1_Bez = ClasseurXLS.cells(i, 8)
util!Druck_1 = ClasseurXLS.cells(i, 9)
util!Kontakt_2 = ClasseurXLS.cells(i, 10)
util!Kontakt_2_Bez = ClasseurXLS.cells(i, 11)
util!Menge2 = ClasseurXLS.cells(i, 12)
util!Dichtung_2 = ClasseurXLS.cells(i, 13)
util!Dichtung_2_Bez = ClasseurXLS.cells(i, 14)
util!Druck_2 = ClasseurXLS.cells(i, 15)
util!Leitung = ClasseurXLS.cells(i, 16)
util!Leitung_Bez = ClasseurXLS.cells(i, 17)
util!Typ = ClasseurXLS.cells(i, 18)
util!Querschn = ClasseurXLS.cells(i, 19)
util!Farbe = ClasseurXLS.cells(i, 20)
util!Gesamt_Laenge = ClasseurXLS.cells(i, 21)
util!Anz_Ltg = ClasseurXLS.cells(i, 22)
util!Vorg_Zeit = ClasseurXLS.cells(i, 23)
util!Anz_Werkzeuge = ClasseurXLS.cells(i, 24)
util!Auslastung = ClasseurXLS.cells(i, 25)
util!Anz_Arb_Plaetze = ClasseurXLS.cells(i, 26)
util.Update
i = i + 1
Loop

'Fermeture du classeur d'importation
ClasseurXLS.Workbooks.Close

MsgBox ("Importation des données effectuée")
End Sub


Private Sub parcourir_Click()
'Chargement du ficher Excel

CommonDialog1.DialogTitle = "Ouvrir"
CommonDialog1.Filter = "Classeur (*.xls)|*.XLS"
CommonDialog1.InitDir = "c:"
CommonDialog1.ShowOpen
File = CommonDialog1.FileName
nom_excel.Text = File
End Sub

Module:

Option Explicit
Public bd As Database
Public util As Recordset

Function ConnectBD()
'Connexion à la base
Set bd = OpenDatabase(App.Path & "\Basedonnée.pfe.mdb")
Set util = bd.OpenRecordset("impor_excel", dbOpenDynaset) (ici l'erreur)
End Function

nb:ma base contient plusieurs table parmis ses table le table "impor_excel"


Merci de m'aider.

cordialement

20 réponses

Utilisateur anonyme
26 avril 2011 à 10:45
Bonjour,
Pourra tu donner le message d'erreur exact? cela nous sera tres utile pour t'aider...
3
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
26 avril 2011 à 11:20
Si j'ai bien compris tu veux importer t donné xls dans une base de donnée existante.?

Si j'ai bien compris le problème te tout bête. Toute les cellule xls sont des string et il doit y avoir un champs dans ta table qui n'est pas un string. Donc il est logique que tu aie le message "erreur: type mismache". Plusieurs solution possibles.
1) tu change tout t champs des tables en string.
2) tu repère la/les cellules qui non sont pas string et tu converti la valeur de la cellule xls en en bon type
exemple util!Dichtung_1_Bez cint(ClasseurXLS.cells(i, 8)) si Dichtung_1_Bez et un int ou util!Dichtung_1_Bez clng(ClasseurXLS.cells(i, 8)) si Dichtung_1_Bez et un long etc.
3
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
27 avril 2011 à 10:25
Je me mêle peut être de ce qui ne me regarde pas mais appeler sa DB ".pfe.mdb" c un péché.

Bref remplace
Set bd = OpenDatabase(App.Path & "\Basedonnée.pfe.mdb")
Set util = bd.OpenRecordset("impor_excel", dbOpenDynaset

par

Set bd = OpenDatabase(App.Path & "\Basedonnée.pfe.mdb",dbOpenDynaset)
Set util = bd.OpenRecordset("SELECT * FROM impor_excel")

ou

Set bd = OpenDatabase(App.Path & "\Basedonnée.pfe.mdb",false,dbOpenDynaset)
Set util = bd.OpenRecordset("SELECT * FROM impor_excel")

Ok ou

Set bd = OpenDatabase(App.Path & "\Basedonnée.pfe.mdb",false,false)
Set util = bd.OpenRecordset("SELECT * FROM impor_excel")

Remarque dbOpenDynaset, n'est pas l'idéale si tu veux avoir plusieurs utilisateurs. tourne toi plus tot sur dbopenstatic bref resienge toir sur les mode d'ouvertures
3
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011
27 avril 2011 à 04:08
Merci pour votre attention.
l'erreur est type mismatch dans cette balise
Set util = bd.OpenRecordset("impor_excel", dbOpenDynaset)
Les champs dans Access sont tout des string.
cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011
27 avril 2011 à 17:18
Merci pour votre attention .
Il devient l'erreur dans la ligne qui suit dans la form non dans le Module
form1

Public ClasseurXLS As Object
Dim File As String

Private Sub importer_Click()
Call ConnectBD
Set ClasseurXLS = CreateObject("Excel.application")

'Ouverture du classeur d'importation
ClasseurXLS.Workbooks.Open File

i = 2
Do While ClasseurXLS.cells(i, 1) <> ""
'Insertion des données dans la table
util.AddNew
util!Einzelressource = ClasseurXLS.cells(i, 1)
util!Resgrp = ClasseurXLS.cells(i, 2)
util!Resgrp_Bez = ClasseurXLS.cells(i, 3)


cordialement
0
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011
27 avril 2011 à 17:21
l'erreur est "object varible or with block variable not set"
cordialement
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
27 avril 2011 à 22:05
Je pense que tu mis dans une fonction
Set bd = OpenDatabase(App.Path & "\Basedonnée.pfe.mdb",false,false)
Set util = bd.OpenRecordset("SELECT * FROM impor_excel")

et dans une autre fonction
util.AddNew

Si j'ai raison tu as plein de possibilité pour débugger.

Moi je v jute te donner la plus simple après je te laisse chercher (ou un autre t'aidera). Le plus simple et que tu mets dans la même fonction

Set bd = OpenDatabase(App.Path & "\Basedonnée.pfe.mdb",false,false)
Set util = bd.OpenRecordset("SELECT * FROM impor_excel")
util.AddNew
0
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011
28 avril 2011 à 00:40
Merci pour tout, je vois qu'il y a pas de solution même erreur de début.Ok je vais essayer toute seul excuse moi s'il vous plais pour le dérangement.


cordialement
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
28 avril 2011 à 10:08
Non! Non! Je ne voulais pas dire cela comme ça Juste te dire que si tu as mis les lignes sur deux fonctions diff (chose que je ne sais tjs) il y a x façon de corriger le tir. Mais il ne faut pas le prendre mâle Tu n'est pas (et de loin) la personne la plus désagréable du forum.

Allez on ce pardonne

Cherche un peut et donne nous de tes nouvelles plus tard si besoin
0
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011
28 avril 2011 à 14:46
Ok,merci bien pour tout j'ai l'honneur de ta connaitre .OK ON se pardonne


cordialement
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
3 mai 2011 à 18:00
Hello, alors tu en es oû? as tu tjs des questions
0
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011
5 mai 2011 à 02:48
Je suis ici.j'ai devenu  fou à cause de ce projet.bref Je vous remercie pour votre question.
cordialement
0
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011
7 mai 2011 à 01:01
Private Sub Refreche()
Call Connect
listoutil.ListItems.Clear
Rs.Open "[dishtung]", Db, adOpenKeyset, adLockOptimistic

While Not Rs.EOF
Set ItemX = listoutil.ListItems.Add(, , Rs.Fields("ref_dish_leoni"))
ItemX.SubItems(1) = Rs.Fields("ref_dish_four")
ItemX.SubItems(2) = Rs.Fields("menge")
Rs.MoveNext
Wend
Call Deconnect
End Sub

erreur property invalid
cordialement
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
9 mai 2011 à 10:10
Teste cela :

Private Sub Refreche()
Set Db = Nothing
Set V_Rs= Nothing

Set Db = OpenDatabase(CHEMIN CLOMPLET DE LA DB, adOpenKeyset, adLockOptimistic )
Set Rs= Db.OpenRecordset("SELECT * FROM " & v_nomtab$)

While Not Rs.EOF
Set ItemX = listoutil.ListItems.Add(, , Rs.Fields("ref_dish_leoni"))
ItemX.SubItems(1) = Rs.Fields("ref_dish_four")
ItemX.SubItems(2) = Rs.Fields("menge")
Rs.MoveNext
Wend
Call Deconnect
End Sub


redis moi
0
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011
11 mai 2011 à 14:14
thanks a lot dute

cordialement
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
11 mai 2011 à 15:29
Tant mieux si ça marche. J'ai remarque que tu pouvais avoir mieux. SELECT * sélectionne tout les champs alors que tu en utilise que deux. Donc le mieux c Set Rs= Db.OpenRecordset("SELECT ref_dish_four, menge FROM NOM_DE_LA_TABLE").

Plus
0
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011
12 mai 2011 à 04:24
cordialement
0
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011
18 mai 2011 à 18:35
slt, stp ce code faddadniii listo,listc,lists tout sont des listbox w c famil combobox ytala3li msg mise à jour effectuer sans une réel mise à jour
remarque les champs famil et ref_leonic sont des clé etrangére dans la table outil merciiiii.
Private Sub cmdvalidermodif_Click()
On Error Resume Next
'Verification du remplissage du raison sociel ou le nom du Fournisseur
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\basedonnée.pfe.mdb;Jet OLEDB:Database"
Set rs1 = New ADODB.Recordset
rs1.Open "select num_outil,ref_leonic,segment from outil where famil like '" & Trim(cfamil) & "'", cn, 1, 2
'vérification de l'existance du Fournisseur
If rs1.EOF Then
MsgBox "cette famille n'existe pas", vbInformation
Exit Sub
End If
rs1!num_outil = Trim(Listo)
rs1!ref_leonic = Trim(Listc)
rs1!segment = Trim(Lists)
rs1.Update
MsgBox "Mise à jour Effectuée avec succèe.", vbInformation
rs1.close
Form_Load
cmdvalidermodif.Visible = False
End Sub

cordialement
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
19 mai 2011 à 09:53
J'ai riens compris! STP pose ta question plus clairement.
0
hibatallahmessadine Messages postés 13 Date d'inscription vendredi 18 mars 2011 Statut Membre Dernière intervention 20 mai 2011
20 mai 2011 à 08:43
ok, merci j'ai déja trouvé la solution merci pour votre intention
cordialement
0
Rejoignez-nous