IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème avec Excel


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut Problème avec Excel
    Bonjour,
    Depuis quelques jours, je tente de transferer des données acquises par un logiciel en VB.NET 2008 (Visual Studio Express 2008) vers un fichier (à créer) Excel. Je penssais avoir reussi jusqu'à l'installation de Excel 2007 necessaire à mon entreprise. Depuis ce moment, l'enregistrement s'effectue normalement mais une fois que je desire reouvrir mon fichier Excel, enregistré en xls, un message s'affiche et ne me permet plus de voir les données inscrites dans mon fichier. Le message est le suivant :
    Le format que vous tentez d'ouvrir,"fichier.xls", est différent de celui spécifié par l'extension de fichier. Assurez-vous que le fichier n'est pas endommagé et qu'il provient d'une source fiable avant de l'ouvrir. Souhaitez-vous ouvrir le fichier?
    Arrivé la, si je click sur non rien ne se passe, et si je click sur oui, un classeur vide s'affiche.

    Je precise que je suis utra debutant en programmation.
    Merci de m'aider.
    Babar03

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    Salut ^^

    Tu pourrais mettre le code que tu as pour générer ton fichier Excel ? C'est peut-être juste une petite erreur

  3. #3
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut
    Je te remerci de t'occupé de mon cas^^.
    Voici le code de ma fonction sauvegarder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Sub Sauvegarde() 
    
            spy = True   'espion pour savoir si une sauvegarde à été effectuée
    
             Dim Nom As String
    
            SaveFileDialog1.Filter = "Feuille Microsoft Office Excel (*.xls)| *.xls"
    
            Nom = "essai en cours"
    
            If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
    
                NomFichier = SaveFileDialog1.FileName
                NomFichier = NomFichier
                chemain = SaveFileDialog1.InitialDirectory
                appExcel = CType(CreateObject("Excel.Application"), Excel.Application)
    
    'Ouverture d'un fichier pour creer celui-ci si il n'existe pas (dans le cas réel, le fichier n'existe jamais)
    
                FileOpen(3, chemain & NomFichier, OpenMode.Append)
                FileClose(3)
    
                wbExcel = appExcel.Workbooks.Open(chemain & NomFichier)
                wsExcel = CType(wbExcel.Worksheets(1), Worksheet)
                wbExcel = appExcel.ActiveWorkbook
                wsExcel = CType(wbExcel.ActiveSheet, Worksheet)
    
    'Remplis la premiere colonne avec des valeurs (juste pour le test) contenues dans une listbox
    
                For i As Integer = 0 To 100
                    WriteToExcel(wsExcel, i + 1, 1, LstBox1.Items(i).ToString)
                Next
    
                'ferme excel et nettoie l'instance
    
                wbExcel.Saved = True  'pour éviter un message demandant de sauvegarder            
                wbExcel = Nothing
                wsExcel = Nothing
                appExcel.Application.Quit()
                appExcel = Nothing
    
            End If

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    Tu pourrais le mettre en les Balises [ code][/ code] c'est le symbôle #, comme tu l'as mis c'est un peu illisible ^^

  5. #5
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut
    voila j'espere que cela sera plus lisible comme sa. Désolé j'ai un pc avec VB mais sans internet et un autre pc avec internet mais sans VB.
    Donc je suis obligé de te faire un texte de cette forme.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    Il y a plein de choses que je ne comprend pas dans ton code mais bon pour bien commencé il vaut mieux faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Dim appExcel As Excel.Application
    Dim wbExcel As Excel.Workbook
    Dim wsExcel As Excel.Worksheet
    Dim exRange As Excel.Range
     
    If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
     
                NomFichier = SaveFileDialog1.FileName
                Try
                    'Ouverture de l'application
                    appExcel = CreateObject("Excel.Application")
                    'Ouverture d'un fichier
                    wbExcel = appExcel.Workbooks.Open(NomFichier)
                    'Ouverture de la première feuille du classeur
                    wsExcel = wbExcel.ActiveSheet
     
                    'Ton test
                    For i = 0 to 100
                        exRange(wsExcel.Cells(i, 1)) 'Adresse de cellule à remplir
                        exRange.value = LstBox1.Items(i).ToString
                    Next
     
                    wbExcel.Saved = true
     
                Catch ex As COMException
                      MessageBox.Show(ex.ToString())
                Finally
                   wbExcel = Nothing
                   appExcel.Quit()
                   appExcel = Nothing
                End Try
    End If

  7. #7
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut C'est quoi exRange pour toi?
    J'ai essayé ton code mais je ne vois pas trop ce qu'est exRange. Enfin si je pense que cela represente la cellule a atteindre.
    Mais marqué comme ceci, une erreur apparai:
    L'expression n'est pas une méthode.
    Donc je pense qu'il manque un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
              for i = 0 to  100
                       exRange.quelquechose(wsExcel.Cells(i, 1)) 'Adresse de cellule à remplir
                       exRange.value = LstBox1.Items(i).ToString
    Next
    Non?
    Le code tel que tu me l'as écrit fonctionne-t-il pour toi?

  8. #8
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut ou alors...
    C'est peut etre plus un "=" qu'il manque à ton code.
    J'ai essayé avec le fameux "=", et il me met un message d'erreur qui correspond (à priori) au fait que le fichier n'est pas créé.
    C'est pour cela que dans mon code de base, il existait un OpenFileDialog. Cette fonction me permettai, de facon très simple, de créer un fichier pour, ensuite, y enregistrer mes valeurs.

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    Oups, j'ai mal écrit ^^ Désolé, la ligne c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exRange = wsExcel.Cells(i, 1)
    Et ExRange correspond à une zone de sélection dans ta feuille Excel, tu peux soit choisir une cellule, soit un ensemble de cellule, la ligne de code dans ce cas c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exRange = wsExcel.Range("A1:C15")

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    Tu peux me mettre le message qu'il t'affiche ?

  11. #11
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut erreur
    Voila j'espère que sa sera bon
    Images attachées Images attachées  

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Dim appExcel As Excel.Application
    Dim wbExcel As Excel.Workbook
    Dim wsExcel As Excel.Worksheet
    Dim exRange As Excel.Range
    
    If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
    
                NomFichier = SaveFileDialog1.FileName
                Try
                    'Ouverture de l'application
                    appExcel = CreateObject("Excel.Application")
                    
                    wbExcel = appExcel.Workbooks.Add
                    'Ouverture de la première feuille du classeur
                    wsExcel = wbExcel.ActiveSheet
     
                    'Ton test
                    For i = 0 to 100
                        exRange = wsExcel.Cells(i, 1) 'Adresse de cellule à remplir
                        exRange.value = LstBox1.Items(i).ToString
                    Next
                
                    wbExcel.SaveAs(NomFichier)
    
                Catch ex As COMException
                      MessageBox.Show(ex.ToString())
                Finally
                   wbExcel = Nothing
                   appExcel.Quit()
                   appExcel = Nothing
                End Try
    End If
    Remplace par ce que j'ai mis en rouge, je pense que cela devrait marcher là. Je n'avais pas pris en compte le fait que tu n'avais pas de fichier excel.

  13. #13
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut s'eu été trop beau^^
    Bon déjà je tiens vraiment à te remercier pour ce que tu fais pour moi.
    Seulement ce fu trop beau si cela avait fonctionné.
    J'ai donc changer de message d'erreur. Mais un message d'erreur aparait toujours. Cette fois ci je prend les devants et je te join l'image du message^^
    Images attachées Images attachées  

  14. #14
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut mode pas a pas
    Bon j'ai essayé le programme en mode pas à pas pour visualiser ou ce produit le problème.
    Je constate qu'avec les dernières modifs, l'execution se fait jusque dans la boucle. Cependant, après avoir effectué la premiere ligne de la boucle forNext, elle ne continue pas et passe directement à la msgbox qui doit générer l'erreur.
    Bon par contre je sais que sa fai sa mais je sais pas pourquoi...

  15. #15
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Par défaut
    Tu devrais executer ton code en pas à pas et voir ce qui génère l'erreur, tu ne progresseras jamais si tu demandes la solution sans jamais chercher à comprendre.

  16. #16
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut
    justement j'ai executer en pas à pas!!!!
    Et je sais ce qui me génère l'erreur mais pas pourquoi elle est générée!

  17. #17
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    948
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 948
    Par défaut
    Pardon, je n'avais pas vu le dernier message en répondant.
    est ce que par hasard en mettant i entre 1 et 100 plutot qu'entre 0 et 100 ca ne passerait pas mieux?

  18. #18
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Par défaut
    Et tu as bien pensé à remettre le "=" pour ExRange ? Je viens de voir que j'ai oublié de le remettre dans le code :p

  19. #19
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut
    Pour Sebnantes, oui je l'ai bien remis.
    Et pour Flamby38, ba tu gère. Effectivement je n'ai pas pensé que Excel n'a pas de ligne 0!!!!
    Donc la boucle comprise entre 1 et 100 sa fonctionne très bien.
    Je n'est plus aucun message d'erreur. Ni lors de l'exécution, ni lors de la réouverture du fichier.
    Un grand merci à tous les 2. Je vais essayer de pus avoir de problèmes à vous poser^^.
    Merci beaucoup
    @+
    Olivier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec Excel et Paradox
    Par Ninjodo dans le forum Bases de données
    Réponses: 30
    Dernier message: 05/11/2007, 07h35
  2. problème avec excell
    Par joooooo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 06/05/2007, 19h13
  3. Problème avec Excel
    Par kmaniche dans le forum C++Builder
    Réponses: 11
    Dernier message: 26/03/2007, 10h05
  4. Problème avec Excel et tableau croisé dynamique
    Par françois62 dans le forum VBScript
    Réponses: 9
    Dernier message: 19/11/2006, 22h17
  5. [MFC] [CRecordset] Problème avec Excel
    Par Yellowmat dans le forum MFC
    Réponses: 4
    Dernier message: 20/07/2005, 15h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo