nono78220
Messages postés181Date d'inscriptiondimanche 3 décembre 2006StatutMembreDernière intervention28 octobre 2010
-
23 mars 2007 à 09:06
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
23 mars 2007 à 11:09
Hello,
D'abord voici mon code, ce sera plus simple pour répondre à mes questions :
Private Sub mnuOutilsScannerCourrier_Click()
'on entre un titre pour le document
Dim NomFichier As String
NomFichier = InputBox("Nom du courrier scanné :", "Scanner un courrier")
If NomFichier = "" Then
MsgBox "Nom obligatoire !"
Exit Sub
End If
'on entre une date pour le document
Dim datedocument As String
datedébut:
datedocument = InputBox("Date du courrier (ex: 21.12.2003) :", "Taper OK pour la date d'aujourd'hui : " & Date)
If datedocument = "" Then
datedocument = Date
End If
DoEvents
Dim DateTemporaire
datedocument = Trim(datedocument)
If Len(datedocument) <> 10 Then GoTo datedébut '10 caractères
Dim ChiffreGaucheDate As String, ChiffreCentreDate As String, ChiffreDroitDate As String
ChiffreGaucheDate = Left(datedocument, 2)
If IsNumeric(ChiffreGaucheDate) = False Or Val(ChiffreGaucheDate) > 31 Then GoTo datedébut
ChiffreCentreDate = Mid(datedocument, 4, 2)
If IsNumeric(ChiffreCentreDate) = False Or Val(ChiffreCentreDate) > 12 Then GoTo datedébut
ChiffreDroitDate = Right(datedocument, 4)
If IsNumeric(ChiffreDroitDate) = False Then GoTo datedébut
Dim reponse As Integer
reponse = MsgBox("Plusieurs pages à scanner ?", vbQuestion + vbYesNo + vbDefaultButton1, "Scanner - Courrier")
If reponse = 6 Then 'Yes
ImgScan1.ScanTo = FileOnly
'pour scanner chaque page dans des fichiers différents et numérotés , mettre 4 et multipage false
'à noter : s'il te rest des fichiers img0001 ou img0002 dansd le répertoire, ceux-ci ne seront
'pas écrasés, de nouveaux fichiers avec un numéro
'Set the image property to a template name.
'Dim ee: ee = Format(Time, "hh-mm-ss")
'imgscan1.Image = chemin + NomFichier 'MultiPage must be true in order to create files with
'more than one page.
ImgScan1.MultiPage = True
'mettre le nombre maxi de pages à scanner, lorsque le conteneur est vide la numérisation s'arrête
'mettre le nombre maxi de pages à scanner, lorsque le conteneur est vide la numérisation s'arrête
ImgScan1.PageCount = 100
'Do not show the scanner's TWAIN UI.
ImgScan1.ShowSetupBeforeScan = True
'Scan without using dialog box.
ImgScan1.StartScan
End If
'IL FAUT PLACER LE NOM DU DOCUMENT SCANNE DANS LA LISTBOX courrier SCANNEE
lstCourrier.AddItem NomFichierScanne, 0
'ON ENREGISTRTE LE NOM DANS LA LISTBOX.LIST EN APPELANT LA FONCTION ListBoxCourrierScanne
Call ListBoxResourceCourrierScann(lstCourrier, LA_EcrireCourrierScanne)
Private Sub ScannerDoc(NomFichier As String)
'If Val(Nbpage.Text) = 0 Then Exit Sub
ImgScan1.ScanTo = FileOnly
'pour scanner chaque page dans des fichiers différents et numérotés , mettre 4 et multipage false
'à noter : s'il te rest des fichiers img0001 ou 0002 dansd le répertoire, ceux-ci ne seront
'pas écrasés, de nouveaux fichiers avec un numéro
'Set the image property to a template name.
'Dim ee: ee = Format(Time, "hh-mm-ss")
ImgScan1.Image = "c:\Courrier scanné" + NomFichier
'MultiPage must be true in order to create files with
'more than one page.
ImgScan1.MultiPage = True
'mettre le nombre maxi de pages à scanner, lorsque le conteneur est vide la numérisation s'arrête
ImgScan1.PageCount = 100 'Val(Nbpage.Text)
'Do not show the scanner's TWAIN UI.
ImgScan1.ShowSetupBeforeScan = True
'Scan without using dialog box.
ImgScan1.StartScan
End Sub
Questions:
1/ Je ne comprend pas pourquoi lorsque je choisi de scanner une seul page, le document n'est pas enregistrer sous le nom de mon fichier ("NomFichier") mais sous forme de numéros !
2/ Je ne comprend pas pourquoi lorsque je choisi de scanner en multipage, le fichier ne peut être enregistrer qu'avec une seul mot !!
ex: si je décide que NomFichier soit par exemple Lettre Nono eh bien il y a un bug. PAr contre si je met lettre il enregistrera mon fichier sans problème !!
3/ Est-ce lié au fait que mon scanner ancien ne peut pas enregistrer en miltipage ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 mars 2007 à 11:09
Salut
Sans avoir eu le courage de lire tout en détail, je remarque que tu utilises des GOTO et que tu dimensionnes tes variables en plein milieu du code.
Si le programme rencontre plusieurs fois le même DIM, je pense qu'il n'aime pas et qu'il plante.
Commence donc par ramener tous les DIM au début de tes procédures.
Pense aussi à dimensionner correctement tes variables : "Dim maVariable" la dimensionne en Variant. Ce n'est pas terrible. Essaye de bien définir ce que tu vas ranger dedans, cela peut éviter des erreurs de format.
Essaye aussi de remplacer tes GOTO par des structures If-Then-Else ou des Do-Loop, tu y gagneras en clarté et en facilité de débuggage.
If reponse 6 Then 'Yes > If reponse = vbYes Then
Beaucoup plus parlant, non ?
Dim datedocument As String
...
datedocument = Date
Futur problème de compatibilité de format. Utilise les fonctions de conversion, plus sûre :
datedocument = CStr(Date) ou Dim datedocument As Date, au choix
Apprends à debugguer :
Pose ta souris sur la ligne du Shell et appuie sur F9, la ligne change de couleur
Le programme s'arrêtera dessus au prochain passage
A ce moment là, survole avec ta souris ta variable NomFichierScanne et il affichera son contenu.
Si le contenu est trop long, il n'affichera pas tout. Alors, va dans la fenêtre de debug (Ctrl-G) et tape ? NomFichierScanne
Si ce n'est pas le bon nom, place de nouveaux F9 sur des lignes précédente et remonte ainsi jusqu'à l'endroit où sa merdouille
Pour continuer à exécuter le programme d'une seule ligne de code : F8
Pour continuer à exécuter le programme normalement : F5
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)