none
Aide pour modification. RRS feed

  • Question

  • Bonjour,

    Je suis en train de faire du traitement d'information sous Excel.

    Je recupère des données, mise n'importe où dans le fichier, et je les "range" a ma quise.

    Mon code marche, mais vu que je récupère avec des boucles, je ne peux pas effacer les anciennes données ( qui ne m'interresse plus d'ailleurs).

    Donc au lieu de ré-écrire dans le même fichier, je me suis dis que cela était peut-etre possible d'enregistrer dans un nouveau fichier excel ?

    Donc en somme :

    - Récuperer les cellules du fichier Excel A

    - Recopier dans les cellules du fichier Excel B

    -Sauvegarde du fichier Excel B.

    J'espère avoir été clair :x

    Merci d'avance :)

    Voici le code que j'ai :

    (D'ailleurs, je recupère toutes les informations via un autre interface, donc une autre "page", voila pour le code où je stocke mes valeurs n'est pas dedans)

    'Definition d Excel
        Dim appliexcel As New Excel.Application
        Dim workexcel As Excel.Workbook
        Dim sheetexcel As Excel.Worksheet
        Sub Modification_Format(ByVal NomDuFichier)
            'Structure de modification des fichiers
            'Configuration des chemins de sauvegarde
            Dim cheminfichier As String = Configuration_LieuEnregistrement.CheminSauvegarde + "\"
            Dim cheminacces As String = String.Empty
            'Ouverture du fichier
            workexcel = appliexcel.Workbooks.Open(NomDuFichier)
            sheetexcel = DirectCast(workexcel.Worksheets(1), Excel.Worksheet)
            'Modification/Récuperation
            Dim nb_Sca = 0
            Dim nb_Vec = 0
            For i = 0 To Configuration_Des_Formats.ListView1.Items.Count - 1
                Dim varia = Configuration_Des_Formats.ListView1.Items(i).Text.ToString
                Dim test = Definition_Scalaire.Stockage(varia)
                If test(0) = "Scalaire" Then
                    Call Format_Utilisé_Scalaire(varia, nb_Sca)
                    nb_Sca += 1
                Else
                    Call Format_Utilisé_Vecteur(varia, nb_Vec)
                    nb_Vec += 1
                End If
            Next
            'Sauvegarde des Fichiers Excel
            cheminacces = String.Format("{0}{1}", cheminfichier, ("modifié." + workexcel.Name))
            workexcel.SaveAs(cheminacces)
            appliexcel.Visible = True
            'Fermeture d'Excel
            workexcel.Close()
            appliexcel.Quit()
        End Sub
    Sub Format_Utilisé_Vecteur(ByVal B, ByVal Inc)
            'Mise en place du formatage des fichiers si on prends une colonne
            'CONFIGURATION
            'recuperation information
            Dim Info = Definition_Scalaire.Stockage(B)
            ' On récupère la valeur de debut
            Dim Début_Selection As Integer = Info(3)
            ' On récupère la valeur de fin
            Dim Fin_Selection As Integer = Info(4)
            ' On récupère la colonne d'extraction
            Dim Colonne_Selection As Integer = Info(2)
            'MODIFICATION
            'Definition tableau
            Dim List() As String
            ReDim List(0)
            List(0) = sheetexcel.Cells(Début_Selection, Colonne_Selection).text
            Dim nb = 0
            'Remplissage du tableau
            For i = Début_Selection + 1 To Fin_Selection
                nb = nb + 1
                'Je la garde
                ReDim Preserve List(nb)
                List(nb) = sheetexcel.Cells(i, Colonne_Selection).text
            Next
            'Je réécris
            sheetexcel.Cells(5, 1 + Inc) = B
            For r = 0 To nb
                sheetexcel.Cells(r + 6, 1 + Inc).value = List(r)
            Next
        End Sub
        Sub Format_Utilisé_Scalaire(ByVal B, ByVal Inc)
            'CONFIGURATION
            'recuperation information
            Dim Info = Definition_Scalaire.Stockage(B)
            ' On récupère la ligne
            Dim Ligne As Integer = Info(1)
            ' On récupère la colonne
            Dim Colonne As Integer = Info(2)
            'MODIFICATION
            ' On récupère la donnée voulu grâce au couple (L,C)
            Dim Valeur = sheetexcel.Cells(Ligne, Colonne).text
            Dim nb = 1
            ' on donne sa valeur
            sheetexcel.Cells(nb + Inc, 2).Value = Valeur
            ' On ecrit la variable
            sheetexcel.Cells(nb + Inc, 1).Value = B.ToString
        End Sub


    • Modifié Tom57000 mercredi 11 juin 2014 08:48
    mercredi 11 juin 2014 08:47

Réponses

  • Je vous propose ce code :

    Dim missing As Object = Type.Missing Dim appliexcel As New Excel.Application Dim workexcel As Excel.Workbook Dim save2 As Excel.Workbook Dim sheetexcel As Excel.Worksheet Dim sheetexceldest As Excel.Worksheet Dim NomDuFichier As String = "D:\Docs\Test.xlsx" appliexcel.DisplayAlerts = False ' ne pas afficher messages de sur écrire le fichier  s'il existe déjà

    workexcel = appliexcel.Workbooks.Open(NomDuFichier) sheetexcel = DirectCast(workexcel.Worksheets(1), Excel.Worksheet) save2 = appliexcel.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet) sheetexceldest = DirectCast(save2.Worksheets(1), Excel.Worksheet) Dim rngSrc = sheetexcel.Range("A1") Dim rngDest = sheetexceldest.Range("A1") rngSrc.Copy(rngDest) rngSrc = sheetexcel.Range("A3:D5") rngDest = sheetexceldest.Range("A3:D5") rngSrc.Copy(rngDest) save2.SaveAs("d:\Docs\cpy.xlsx", missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing, missing) rngSrc = Nothing rngDest = Nothing save2.Close() workexcel.Close() save2 = Nothing workexcel = Nothing appliexcel.Quit()



    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse Tom57000 vendredi 13 juin 2014 07:42
    jeudi 12 juin 2014 13:06

Toutes les réponses

  • Bonjour

    C'est bien possible.

    Je vous propose cet example :

    http://msdn.microsoft.com/fr-fr/library/ms173186(v=vs.80).aspx

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 12 juin 2014 06:24
  • ça m'a aidé un peu,

    Mais j'ai un autre souci :

    Le fichier que j'enregistre avec

            'Sauvegarde des Fichiers Excel
            cheminacces = String.Format("{0}{1}", cheminfichier, ("modifié." + work.Name))
            workexcel.SaveAs(cheminacces)
            appliexcel.Visible = True

    est le fichier d'origine et non le fichier modifié. (Modifié.feuille3) type inconnu.

    En fin de code, il me demande si je veux enregistrer le "classeur3", et si je choisi un emplacement, il m'enregistre feuille3.XLS

    Voici le code que j'ai rajouté :

        Dim Appli As New Excel.Application
        Dim work As Excel.Workbook
        Dim feuille As Excel.Worksheet
    Sub Modification_Format(ByVal NomDuFichier)
    ....
    ....
            'Creation du fichier de sauvegarde
            Appli = CreateObject("Excel.Application")
            Appli.Visible = True
            work = Appli.Workbooks.Add
            feuille = work.ActiveSheet
    ....
    ....
    end sub

    J'ai aussi changé les lignes d'ecriture dans les fichiers :

    sheetexcel.Cells(nb + Inc, 1).Value = B.ToString
    En ça :
    feuille.Cells(nb + Inc, 1).Value = B.ToString
    Enfin d'ecrire dans le nouveau fichier.

    Et donc, il faudrait qu'il me demande pas d'enregistré un fichier ailleurs, vu que je lui donne déja le chemin ...

    Où est l'erreur ? ^^

    jeudi 12 juin 2014 07:06
  • Quel est le type du workexcel?
    En effet vous devez créer un nouveau Workbook  qui contient Worksheet et enregistrer le WorkBook.

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 12 juin 2014 09:12
  • Je ré explique pour que ce soit plus clair :

    Je cherche à :

    1- Ouvrir un fichier

    2- lire dans le fichier des cellules

    3- Créer un deuxième fichier

    4- Mettre les données lues dans le deuxième fichier (donc transfert entre 2 fichiers)

    5- Enregistrer le deuxième fichier

    jeudi 12 juin 2014 09:16
  • Maintenant j'ai compris.

    Ne sera plus simple d’enregistrer le fichier sous un autre nom et modifier après?

    Bien cordialement, 


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 12 juin 2014 09:32
  • Vu que je dois récuperer seulement une partie des informations, je peux pas faire comme ça

    jeudi 12 juin 2014 12:22
  • Je vous propose ce code :

    Dim missing As Object = Type.Missing Dim appliexcel As New Excel.Application Dim workexcel As Excel.Workbook Dim save2 As Excel.Workbook Dim sheetexcel As Excel.Worksheet Dim sheetexceldest As Excel.Worksheet Dim NomDuFichier As String = "D:\Docs\Test.xlsx" appliexcel.DisplayAlerts = False ' ne pas afficher messages de sur écrire le fichier  s'il existe déjà

    workexcel = appliexcel.Workbooks.Open(NomDuFichier) sheetexcel = DirectCast(workexcel.Worksheets(1), Excel.Worksheet) save2 = appliexcel.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet) sheetexceldest = DirectCast(save2.Worksheets(1), Excel.Worksheet) Dim rngSrc = sheetexcel.Range("A1") Dim rngDest = sheetexceldest.Range("A1") rngSrc.Copy(rngDest) rngSrc = sheetexcel.Range("A3:D5") rngDest = sheetexceldest.Range("A3:D5") rngSrc.Copy(rngDest) save2.SaveAs("d:\Docs\cpy.xlsx", missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlExclusive, missing, missing, missing, missing, missing) rngSrc = Nothing rngDest = Nothing save2.Close() workexcel.Close() save2 = Nothing workexcel = Nothing appliexcel.Quit()



    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse Tom57000 vendredi 13 juin 2014 07:42
    jeudi 12 juin 2014 13:06
  • Merci bien ! je garde ce bout de code en poche :)

    Mais suite a une réunion, mon programme ne corresponds pas au attente, donc la question n'est plus vraiment utile !

    vendredi 13 juin 2014 07:41