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

Excel Discussion :

Problème de sauvegarde pour un fichier excel en vb.net [Toutes versions]


Sujet :

Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut Problème de sauvegarde pour un fichier excel en vb.net
    Bonjour,

    Bon je tiens tout d'abord à m'excuser si jamais ce sujet est mal placé (ou si il est en doublon mais je n'en ai pas trouvé en faisant quelques recherches).

    Donc mon soucis, à l'aide d'une application vb.net, je souhaite modifier un fichier excel. J'insère tout d'abord neuf lignes en partant de la cellule A1. Puis, en fonction des demandes de mon client, je dois insérer du texte dans certaines cellules, faire fusionner certaines cellules, changer la police....

    Après, plusieurs tests, j'insère bien les neufs lignes, les textes bruts sans modification mais par contre tous les effets de style que je souhaite faire n'apparaissent pas. Au début, je pensais qu'il s'agissait d'un problème de codage pour la mise en forme. J'ai donc mis un appExcel.visible = true, et pleinnnnnnnsss de points d'arrêt, pour voir ce qu'il faisait. Et bien il me les fait mes modifs !!! Alors, j'ai cherché, cherché....tout ce que je pouvais trouver sur la sauvegarde après modification du fichier et rien ne marche....

    Donc j'ai forcé la sauvegarde sans avoir de message me signifiant des modifs, j'ai déplacé la ligne de fermeture du workbook....

    Dîtes que vous voyez d'où cela vient

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Pour aider, le code serait bien pratique.

    A tout hasard le fichier excel est il bien avec extension xls?
    Jérôme

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Voilou :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    'Insertion entête fichier excel
        Private Sub beta_insertion_entete_excel(ByVal fileName As String, ByVal date_deb As String, ByVal date_fin As String)
     
     
            'Objets nécessaire à la manipulation de fichier.
            Dim appExcel As Excel.Application
            Dim wbExcel As Excel.Workbook
            Dim wsExcel As Excel.Worksheet
            Dim exRange As Excel.Range
            Dim celluleStyle As Excel.CellFormat
     
            Dim i As Integer = 1
            Dim j As Integer = 0
            Dim cpt_colonne As Integer = 0
            Dim contenu As String = "'"
            Dim test As String = ""
     
            Try
                'Ouverture de l'application
                appExcel = CreateObject("Excel.Application")
                'Ouverture d'un fichier
                wbExcel = appExcel.Workbooks.Open(fileName)
                'Ouverture de la première feuille du classeur
                wsExcel = wbExcel.ActiveSheet
     
                appExcel.Visible = True
     
                While contenu <> ""
                    cpt_colonne = cpt_colonne + 1
                    exRange = wsExcel.Cells(1, cpt_colonne)
                    contenu = exRange.Value
                End While
     
                While i <> cpt_colonne
     
                    exRange = wsExcel.Cells(1, i)
     
                    For j = 1 To 9
                        exRange.Insert(Excel.XlInsertShiftDirection.xlShiftDown)
                    Next
     
                    i = i + 1
                End While
     
                wsExcel.Cells(1, 1) = Date.Today
     
                exRange = wsExcel.Range(wsExcel.Cells(3, 1), wsExcel.Cells(3, i))
                exRange.Merge()
     
                exRange = wsExcel.Cells(3, 1)
                With exRange
                    .Value = "LISTE DES DEMANDES D'EXPEDITION SANS FACTURATION"
                    .Font.Size = 14
                    .Font.Name = "Georgia"
                    .Font.Bold = True
                    .HorizontalAlignment = -4108
                End With
     
                exRange = wsExcel.Cells(5, 1)
                With exRange
                    .Value = "EN RETRAITS GRATUITS ET A ENVOYER PAR LA POSTE"
                    .Font.Size = 12
                    .Font.Name = "Georgia"
                    .Font.Bold = True
                End With
     
     
                exRange = wsExcel.Cells(6, 1)
                With exRange
                    .Value = "BORDEREAU N°"
                    .Font.Size = 12
                    .Font.Bold = True
                    .Font.Color = RGB(0, 0, 255)
                End With
     
                exRange = wsExcel.Range(wsExcel.Cells(8, 1), wsExcel.Cells(8, i))
                exRange.Merge()
                With exRange
                    .Value = "LISTE DES OUVRAGES POUR LA PERIODE DU " & date_deb & " AU " & date_fin & " A ENVOYER"
                    .Font.Size = 12
                    .Font.Bold = True
                    .Font.Color = RGB(255, 0, 0)
                    .HorizontalAlignment = -4108
                End With
     
     
            Catch ex As COMException
                MessageBox.Show(ex.ToString() + " Erreur Génération entête fichier excel")
            Finally
                wbExcel.Close(True)
                wbExcel = Nothing
                appExcel.Quit()
                appExcel = Nothing
            End Try
     
        End Sub
    Merci d'avance ^^ Et oui, le fichier a bien une extension en xls

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    code non testé, mais je ferais plutot la sauvegarde dans le try et en utilisant Save

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                   End With
     
               wbExcel.Save()
     
            Catch ex As COMException
                MessageBox.Show(ex.ToString() + " Erreur Génération entête fichier excel")
            Finally
                wbExcel.Close(false)
                wbExcel = Nothing
                appExcel.Quit()
                appExcel = Nothing
            End Try
    pour info
    Pour vider les variables excel j'utilise une méthode qui supprimer les instances immediatement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Finally
     
                If Not IsNothing(wsExcel) Then System.Runtime.InteropServices.Marshal.ReleaseComObject(wsExcel)
                If Not IsNothing(WbExcel) Then System.Runtime.InteropServices.Marshal.ReleaseComObject(WbExcel)
                If Not IsNothing(appExcel) Then
                    appExcel.Quit()
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(appExcel)
                End If
                GC.Collect()
                GC.Collect()
            End Try
    Jérôme

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Je viens de tester, toujours le même problème...Ce que je ne comprend vraiment pas c'est qu'il remplit bien les cellules ciblées des valeurs que je lui attribue et que la mise en forme que je souhaite n'est pas sauvegardée....

    Ne serait-il pas possible que cela soit dû à ma config d'Excel ? J'ai déjà eu un problème légèrement similaire concernant la présence de "0" devant un nombre (pour représenter un code"), ils étaient retirés automatiquement sur mon poste, tandis que sur un autre, ils étaient conservés....

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

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Après avoir tester sur un autre poste, j'ai toujours le même problème....Cela ne vient pas du paramétrage d'excel...

    Je viens de tester aussi une sauvegarde après chaque édition des données, mais rien....toujours que le texte saisie dans les cellules ciblées.

    Je ne vois pas ce que je dois modifier...

  7. #7
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Essaie de sauvegarder manuellement apres avoir mis le code du finally en commentaire.
    vérifie aussi la version du fichier xls ouvert
    Jérôme

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    La version ? Tu parles du nom de fichier qui est traité ?

  9. #9
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    je veux parler de la version du fichier xls traité (sous quelle version d'Excel a t'il été créé ou enregistré)
    Jérôme

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

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Youhou !!! En faisant la sauvegarde manuelle, je découvre la raison de mon problème ^^ Donc maintenant, il y a-t-il un moyen de pouvoir sélectionner non ou d'empêcher ce problème :


  11. #11
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Tu devrais pouvoir en utilisant SaveAs et en spécifiant le format du fichier de sortie par exemple fileformat:=xlNormal
    Jérôme

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

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Merci bien !!! Ca marche !!! Merci à toi d'avoir pris du temps pour moi ^^

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

Discussions similaires

  1. Problème de close() pour un fichier Excel.
    Par Bouffe dans le forum Langage
    Réponses: 2
    Dernier message: 22/04/2011, 09h13
  2. Réponses: 7
    Dernier message: 23/01/2008, 13h02
  3. [VB6] Problème de lecture d'un fichier excel
    Par Requin15 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/03/2006, 17h10
  4. problème d'ouverture d'un fichier EXCEL!!
    Par JauB dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/11/2005, 13h37
  5. Réponses: 7
    Dernier message: 23/11/2005, 18h20

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