Erreur

Signaler
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015
-
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015
-
Bonjour je travaille sous vb6 et j'ai une application qui consulte des fichiers Excel. Sur certains fichiers tout se passe bien, sur d'autres une erreur bizarre survient. le gestionnaire d'erreur n'a aucune réaction même dans la fenêtre d'exécution. pas de message d'erreur juste un gros bug, rien ne se passe alors qu'on attend une réaction de l'application. lorsque je clique sur la croix en haut à droite de la fenêtre active de l'application, même vb6 se ferme. Je n'y comprend rien alors qu'apparament tout devrais bien marcher. Aidez moi svp.

nitho l'amateur

19 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
la version des fichiers excel est bonne ?
est-ce que cela se produit toujours sur les même fichiers ?

si oui, peut etre tenter de les réenregistrer depuis Excel

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

si par version tu entends 2003, 2007 alors c'est bon c'est toujours des fichiers *.xls et l'erreur se produit toujours sur les mêmes fichiers. C'est très énervant, il n'y a rien qui semble clocher pourtant.


nitho l'amateur
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
as tu tenté de les réenregistrer via excel

pense a couper ta gestion d'erreur (mettre sur "arret sur toutes les erreurs")


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

Oui j'ai tenté de les reenregistrer, même de les recopier sur une nouvelle feuille vierge mais rien à faire . et couper la gestion d'erreur appararemment ne change rien


nitho l'amateur
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

http://www.codyx.org/snippet_connexion-fichier-excel-comme-base-donnees_790.aspx#2374

voici ma méthode d'accès aux fichiers

nitho l'amateur
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

j'en arrive souvent a avoir 2 fichier apparemment identique mais l'un marche et l'autre pas... mais je ne sais pas par où regarder


nitho l'amateur
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Ce qui est inquiétant, c'est que rien n'apparaisse en debug.print

Précise quelle est exactement la fenêtre active lorsque se passe ce que tu exposes là :

lorsque je clique sur la croix en haut à droite de la fenêtre active de l'application, même vb6 se ferme. Je n'y comprend rien alors qu'apparament tout devrais bien marcher. Aidez moi svp.



____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

Il s'agissait de la fenêtre principale de mon application. et à ce moment là j'exécutais mon programme sous vb6. Bref
j'ai fini par comprendre que c'était une autre fonction qui buggait à cause d'une cellule vide inattendu.
Mais je n'arrive pas à savoir comment modifier le code de codyx dont j'ai parlé plus haut pour ouvrir un fichier Excel protégé en lecture
Dans la fonction DBConnect j'ai essayé ça

.ConnectionString = "Data Source=" & sXlsPath & ";Extended Properties=""Excel 8.0;HDR=" & IIf(bUseFirstRowAsHeader, "Yes", "No") & ";IMEX=1;""password=""nitho"""

Est-ce que ça vous à l'air correct

nitho l'amateur
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
elle est pas correcte...

ça donne, en gros :

Data Source=sXlsPath;Extended Properties="Excel 8.0;HDR=No;IMEX=1;"password="nitho"


en gros, tu as du bol si ton mot de passe passe

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

bonjour,
au final j'ai écris ça:

.ConnectionString = "Data Source=" & sXlsPath & ";Extended Properties=""Excel 8.0;HDR=" & IIf(bUseFirstRowAsHeader, "Yes", "No") & ";IMEX=1;""password=""nitho"""

et dans une autre partie de mon code ou je liste les feuilles du classeur j'ai écris ça:

cn.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";Extended Properties=Excel 8.0;" & _
"password=""nitho"""

est ce que c'est bon? parceque ça ne marche toujours pas

nitho l'amateur
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
.ConnectionString = "Data Source=" & sXlsPath & ";Extended Properties=""Excel 8.0;HDR=" & IIf(bUseFirstRowAsHeader, "Yes", "No") & ";IMEX=1;""password=""nitho""" 


toujours pas bon...

regarde ce que cela donne :

Data Source=C:\...xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1;"password="nitho"

ici, tu colle encore le mot password a la chaine de données qui précède.
tu devrais là encore ajouter un point virgule...

si on regarde ici :

http://www.connectionstrings.com/excel

on voit que ta chaine est pas mal du tout, mais que le point-virgule est bien en dehors des quotes :

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

et non, comme tu as :


Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1;"


A quoi ressemblent tes requetes ?


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

si je comprends bien, je dois écrire:

.ConnectionString = "Data Source=" & sXlsPath & ";Extended Properties=""Excel 8.0;HDR=" & IIf(bUseFirstRowAsHeader, "Yes", "No") & ";IMEX=1"";password=""nitho""

et pour le cn.open c'est ok?

nitho l'amateur
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
inutile de respécifier la chaine de connection....

SOIT tu la définit via la propriété ConnectionString
SOIT tu la transmet dans le Open




Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

la fonction qui utilise open est totalement indépendante de la classe qui utilise le connectionstring. cette fonction ne sert qu'à lister les noms de feuilles d'un classeur alors que la classe permet de lire une cellule précise d'une feuille spécifiée.

bref les deux sont complémentaires, j'ai essayé ça pour le open

cn.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";Extended Properties=""Excel 8.0"";password=""antho"""

ça ne marche pas


nitho l'amateur
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

Bonsoir, je suis de retour avec de très mauvaises nouvelles. J'ai appris qu'il est tout simplement impossible d'ouvrir un classeur Excel protégé en passant par les connection strings. C'est à cette addresse que j'ai effectué la découverte macabre!!!

http://www.connectionstrings.com/excel
rechercher le mot password

ce qui est domage c'est que je voulais protégé les classeurs pour que les gens ne puisse pas copier les données confidencielles qu'ils contiennent. Je suis obligé de mettre ces classeurs sur le réseau car mon application qui sera installée sur plusieurs poste a besoin de ces données. à l'installation elle demande même l'emplacement du dossier qui contient les classeurs. Maintenant je me demande si grâce à window serveur ou je ne sais pas quoi il est possible que seul mon application ait accès à un certains répertoire sur le réseau??? je sais que je perds la tête mais on me juge sur ce boulo et on me met la pression sur la sécurité des infos, je tiens le coups de toute les façons je ne peux pas faire l'impossible!

nitho l'amateur
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
renomme les fichiers
changges en l'extension

si cela fonctionne, c'est un premier frein...

inutilisable sous notepad, qui ouvrirai un fichier avec une extension inconnue sous excel ?


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

Merci pour ta réponse
je ne comprends pas, le logiciel lit des fichier Excel grâce à ADO. Et se sont ces fichiers Excel qui sont confidentielles. Si je change l'extension des fichiers Excel je crainds fort de ne plus pouvoir les lire.

nitho l'amateur
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
crains pas, testes ...

c'est la connection string qui dit que c'est excel, c'est pas l'extension .xls

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
130
Date d'inscription
jeudi 16 avril 2009
Statut
Membre
Dernière intervention
8 décembre 2015

C'est vrai, ça marche.

nitho l'amateur