Creer une DLL pour excel

44ced Messages postés 3 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 22 juillet 2008 - 21 juil. 2008 à 09:12
hamid_raf Messages postés 36 Date d'inscription mercredi 25 janvier 2006 Statut Membre Dernière intervention 28 décembre 2008 - 22 juil. 2008 à 12:10
Bonjour,

J'ai une application excel qui necessite une base de donnée.
Cette BD (qui est au format excel) est constituée de 6 colonnes et d'un nombre de lignes indéfinies, 3400 aujourd'hui.
La premiere ligne est consacrée au nom des colonnes, les étiquettes.

J'ai fait une appli avec ADO mais C super lent.
Cette appli permet, quand je un nom référence dans la colonne A, d'aller me chercher le Prix, la couleur, la taille ... correspondant dans les colonnes B, C D de la même ligne.

Je voudrais bien faire une DLL pour faire ca, mais je sais pas comment la faire. Je n'y connais encore rien.
Une DLL type resu(A, 2à5)  ou 2 à 5 est le résultat du choix de la colonne B à F)

Si QQ peux m'aider ou a déja fait ce genre de DLL, bien franchement, je suis super preneur car la, bien je suis bloqué de chez bloqué.

Merci,

Ced

5 réponses

hamid_raf Messages postés 36 Date d'inscription mercredi 25 janvier 2006 Statut Membre Dernière intervention 28 décembre 2008
21 juil. 2008 à 11:02
je suis entrein de faire moi aussi une application VB avec une base de donnée Excel, mais je le fait sans DLL, si tu veux je peux te donner qq indications.

hamid
I wana get the knowledge of the entire World,...........
0
44ced Messages postés 3 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 22 juillet 2008
21 juil. 2008 à 15:10
Bonjour,

Bien oui, je suis preneur.
toutes les infos sont les bien venues.
0
hamid_raf Messages postés 36 Date d'inscription mercredi 25 janvier 2006 Statut Membre Dernière intervention 28 décembre 2008
21 juil. 2008 à 15:24
alors, pour faire la connexion:
Public Sub connect()
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\Etat3.xls")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)
End Sub

pour la deconnexion:

Public Sub deconnect()

wbExcel.Close 'Fermeture du classeur Excel
appExcel.Quit 'Fermeture de l'application Excel
'Désallocation mémoire
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing

End Sub
pour moi j l'ai déclaré dans un module et je les fait appelle quand je veux.
pour lire :
dim x as string
x=wbExcel.worksheets(1).cells(1,1).value ' Pour lire la feuille 1 du workbook wbExcel, la ligne 1 la colonne 1.
ecrire c'est l'inverse.

alors bonne chance, si tu veux klke chose d'autre tu me le dis, je travail mainent avec car je suis dans une periode de stage et je fait une application VB excel.

hamid
I wana get the knowledge of the entire World,...........
0
44ced Messages postés 3 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 22 juillet 2008
22 juil. 2008 à 11:28
Salut Hamid

Merci pour ton code.
Je vais essayer de regarder ca avant la fin de la semaine.

Voici le mien ! qu'une personne m'a donné sur le news group excel de Microsoft.

Public resu2
Public resu3
Public resu4
Public resu5
Public resu6

Sub essai(nomcherche)
'MaBD =Feuil1!$A$1:$C$993
Dim rs
'Microsoft ActiveX DataObject doit être coché
' Champ nommé MaBD avec lignes vides
'Set cnn = New ADODB.Connection
Set cnn = CreateObject("ADODB.Connection")

T = Timer()
'nomcherche = "ces 10"

repertoire = "C:\Documents and Settings\cfradic\My Documents\Log Ced\Programmes Projet\Grille sans liaisons\lire fichier fermé\a_fichiers excelabo dont 1 ado"

'chez pierre
'repertoire = "C:\Documents and Settings\clucasp\My Documents\PROJET"

'repertoire = ThisWorkbook.Path & ""
'fichier = "classeur1.xls"
fichier = "listing.xls"

  cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & repertoire & fichier
Sql "SELECT Designation,Isolation_40,Isolation_15,GC,Materiel,MO,Compta FROM MaBD2 WHERE Designation'" & nomcherche & "'"'Sql "SELECT A,B,C,D,E,F,G FROM MaBD2 WHERE A'" & nomcherche & "'"

Set rs = cnn.Execute(Sql)
'[B1] = rs.GetRows
'[B1] = rs("prenom")
'[C1] = rs("salaire")

'[B1] = rs("prix")
'[C1] = rs("MO")

'resu = rs("Isol")
resu = rs("Materiel")
resu2 = rs("MO")
resu3 = rs("GC")
resu4 = rs("Isolation_15")
resu5 = rs("Isolation_40")
resu6 = rs("Compta")

rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
'MsgBox Timer() - t
End Sub

Tu cree ta base de donnée :
Colone 1 Designation
Colone 2 Isolation etc ...
La premiere ligne sert aux etiquettes (Designation, Isolation etc ...)

Ensuite, tu selectionnes toute ta base de donnée (etiquettes comprises) et tu la nomme dans la zone de nom. (appelé dans le code MaBD2
Tu la retrouvera dans l'onglet : Insertion, Nom, Definir.

Et voilou
Apres, tu peux travailler le fichier fermé sur réseau ou pas.
Mais C un peu lent sur des grosses apli.
0

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

Posez votre question
hamid_raf Messages postés 36 Date d'inscription mercredi 25 janvier 2006 Statut Membre Dernière intervention 28 décembre 2008
22 juil. 2008 à 12:10
c'est bien met je vois qu'iil est un peu compliqué, en comparant avec le mien, je vais le porté, merci ....

hamid
I wana get the knowledge of the entire World,...........
0
Rejoignez-nous