(vb6) aide pour correction imposs+optimisat°

Résolu/Fermé
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 - 27 févr. 2012 à 18:07
manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 - 23 mars 2012 à 12:09
Bonjour,
je me permet de revernir vers vous pour vous demander une grande aide,

- j'ai écris un programme qui permet de deployer un fichier excel (en ressource)
- le nom du fichier excel à la sortie doit comporter l'année inscrite par lutilsateur (textbox1)
- ce fichier est depliyer dans un repértoire qui s'il n'existe pas est créer automatiquement
- le nom du repertoire est donné par l'utilisateur ==> normalement l'année marqué par l'tilisateur (textbox1)

j'arrive parfaitement à créer le repertoire si il n'exiiste pas , arreter le process si l'utilisateur n'ecrit rien mais il y a un problème à la fin de mon code et je ne sais pas pourquoi

Voici mon code avec en gras ce qui pose problème + message d' erreur à la fin



'Creer un fichier Excel avec System.Reflection
' et Methode shared AssemblyGetManifestResourceStream("namespace.nomfichier.ext"
'---------------------------------------------------------------------------
'NOTA-BENE:
'1/Recuperer la chaine namespace dans proprites du projet
'2/Proprietes Projet->Resources->Ajouter Fichier...
'3/Eplorateur Solution-> Fichier resource ->Proprietes
'- action de generation =>mettre resource incoporeee
Imports System
Imports System.Windows
Imports System.Reflection
Imports System.IO

Public Class Window3



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click


'Contrôler si répertoire existe?
Dim MyPath As String 'Définition des variables
Dim MyName As String
Dim yearname As String
yearname = TextBox1.Text

MyPath = "C:\Documents and Settings\JSEBBAN\Bureau\projet" & yearname 'On initialise la variable
If TextBox1.Text = "" Then
Title$ = "Création d'un répertoire"
Dim Messagek = ("Veuillez saisir le nom du répertoire à créer!")
MsgBox(Messagek, 64, Title$)
TextBox1.Focus()
Else
'Instructions

End If
'Si l'utilisateur n'a pas saisie un nom... alors sortie du programme
If TextBox1.Text = "" Then Exit Sub
'Puisqu'il a saisi un nom, nous traitons sa demande!
If MyName = Dir(MyPath, vbDirectory) = vbEmpty Then
'On teste l'existence du répertoire
MsgBox("Le répertoire " & Chr(34) & MyPath & Chr(34) & " existe bien!")
'Si le répertoire saisie existe... alors sortons....
Exit Sub
Else
MsgBox("Le répertoire " & Chr(34) & MyPath & Chr(34) & " n 'existe pas!", vbExclamation)
'Alors...créons le répertoire
yearname = TextBox1.Text
MkDir("c:\windows\" & yearname) 'Indiquez le chemin ou doit être stocké le répertoire
End If
'Ouverture d'une fenêtre de dialogue
MsgBox("Le répertoire " & yearname & " vient d'être créé!")




'---------------------------------------------------------------------------
'-------------------------Creation du Fichier Excel-------------------------------
'---------------------------------------------------------------------------

' ---------------------------------------------------------------------------
'NB: le namespace n'est pas accesible dans System.Reflection
'sera code en "dur".Ici ce sera "ExcelResources"

'Nom Dossier application
Dim DossierApplication As String = MyPath
'Nom du Fichier Excel apres Recuperation dans My.Resources
'Ce nom n'est pas forcement celui d'origine mais peut etre saisi par user
Dim nomFichierSave As String = "test" & yearname & ".xls"
Dim dot As String = "."

Dim objStream As Stream
Dim objAssembly As Assembly
Dim objFileStream As FileStream
'Dim objNameSpace As String

'Tableau octets pour recopie "octets par octets"
Dim OctetResources() As Byte = New Byte() {}

'Obtient Assembly de l'Application
objAssembly = Assembly.GetExecutingAssembly

'Nom du Fichier Excel original dans My.Resources
Dim nomFichierRes As String = "MKG_FUND.xls"

'Lecture de My.resources
'-----------------------
objStream = objAssembly.GetManifestResourceStream("ExcelResources" & dot & nomFichierRes)
If objStream IsNot Nothing Then
MessageBox.Show(objStream.Length.ToString)
End If

'Ecriture du fichier Excel recupere dans dossier Application
'-----------------------

ReDim OctetResources(objStream.Length)
objStream.Read(OctetResources, 0, objStream.Length)
objFileStream = New FileStream(DossierApplication & "\" & nomFichierSave, FileMode.Create)
objFileStream.Write(OctetResources, 0, objStream.Length)


End Sub
End Class


==> le message d erreur

l'exeption NullReferenceExeption n'a pas été gérée
le référence objet n'est pas définie à une instance d'objet


Merci d'avance de votre aide


A voir également:

1 réponse

manautop Messages postés 138 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 24 janvier 2013 3
23 mars 2012 à 12:09
et voici ma solution


Creer un fichier Excel avec System.Reflection
' et Methode shared AssemblyGetManifestResourceStream("namespace.nomfichier.ext"
'---------------------------------------------------------------------------
'NOTA-BENE:
'1/Recuperer la chaine namespace dans proprites du projet
'2/Proprietes Projet->Resources->Ajouter Fichier...
'3/Eplorateur Solution-> Fichier resource ->Proprietes
'- action de generation =>mettre resource incoporeee
Imports System
Imports System.Windows
Imports System.Reflection
Imports System.IO

Public Class Window3
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click
Me.Close()
End Sub


Private Sub Button3_Click_1(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button3.Click
Dim MyPath As String 'Définition des variables
Dim MyName As String
Dim yearname As String
yearname = TextBox1.Text



'Contrôler si répertoire existe
MyPath = "C:\Documents and Settings\JSEBBAN\Bureau\projet\" & yearname 'On initialise la variable
If TextBox1.Text = "" Then
Title$ = " Creating a directory"
Dim Messagek = ("Please enter the directory name to create!")
MsgBox(Messagek, 64, Title$)
TextBox1.Focus()
Else
'Instructions

End If
'Si l'utilisateur n'a pas saisie un nom... alors sortie du programme
If TextBox1.Text = "" Then Exit Sub
'Puisqu'il a saisi un nom, nous traitons sa demande!
If MyName = Dir(MyPath, vbDirectory) = vbEmpty Then
'On teste l'existence du répertoire
MsgBox("the directory " & Chr(34) & MyPath & Chr(34) & " exists!")
'Si le répertoire saisie existe... alors sortons....
Exit Sub
Else
MsgBox("the directory " & Chr(34) & MyPath & Chr(34) & " does not exists!", vbExclamation)
'Alors...créons le répertoire
yearname = TextBox1.Text
MkDir("C:\Documents and Settings\JSEBBAN\Bureau\projet\" & yearname) 'Indiquez le chemin ou doit être stocké le répertoire
End If
'Ouverture d'une fenêtre de dialogue
MsgBox("the directory " & yearname & " newly created!")


' creation du excel par la ressource
Dim path_excel As String
path_excel = MyPath & "\" & TextBox1.Text & " " & "MkgFund.xlsx"
IO.File.WriteAllBytes(path_excel, My.Resources.MkgFund)

path_excel = MyPath & "\" & TextBox1.Text & " " & "AFRICA" & " " & "MkgFund.xlsx"
IO.File.WriteAllBytes(path_excel, My.Resources.MkgFund)

'etc copier ces trois derniere ligne en modifiant le path-excel pour rejouter une copie e, changeant le nom
' pensez à mettre le doc ds vos ressources ex ici MkgFund.xls est dans es ressources



End Sub
End Class
0