VB.net & Excel

Résolu
Raul duke Messages postés 70 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 17 mai 2019 - 4 avril 2007 à 15:04
Raul duke Messages postés 70 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 17 mai 2019 - 4 avril 2007 à 16:30
salut,

je souhaiterais, dans mon appli vb.net, selectionner une plage de cellules d'un fichier excel pour la copier, dans un autre fichier excel.

voici mon code : pb en gras

Sub MAJSTATS()

        'Déclarations
        Dim monBook, monBook2 As Excel.Workbook
        Dim maSheet, maSheet2 As Excel.Worksheet
        Dim PlageValeurs As Excel.Range
        Dim tamp As String
        Dim NbrChamps As Integer
        Dim DTS As New DTS.Package
        Dim DTS2 As New DTS.Package
        Const DTSSQLStgFlag_UseTrustedConnection = 256

        'execution des lots DTS
        Try
            DTS.LoadFromSQLServer(ServerName:="DIN04002", Flags:=DTSSQLStgFlag_UseTrustedConnection, PackageName:="En_Cours")
            DTS.Execute() ' chiffres pour la journéé
            DTS2.LoadFromSQLServer(ServerName:="DIN04002", Flags:=DTSSQLStgFlag_UseTrustedConnection, PackageName:="Realiser")
            DTS2.Execute() ' En cours
        Catch ex As Exception
            MsgBox("xxx--ERROR--xxx " & ex.message)
        End Try

        'creation du fichier Indicateurs a partir du modele
        tamp = TimeOfDay.Now.ToLongDateString & " " & TimeOfDay.Now.ToShortTimeString
        tamp = CStr(tamp)
        tamp = Replace(tamp, ":", "h")
        'MsgBox(tamp)
        FileCopy("C:\sauvegarde\modele.xls", "C:\sauvegarde\Indicateurs\indicateurs " & tamp & ".xls")

        'copier les données des DTS dans le fichier indicateurs
        '- recuperation de l'En Cours
        Try
            NbrChamps = 2
            monBook = GetObject("C:\sauvegarde\excel\Excel.xls")
            monBook2 = GetObject("C:\sauvegarde\Indicateurs\indicateurs " & tamp & ".xls")
             'Calcul du nombre de lignes a copier(nbrChamps) dans le fic excel
            Do While monBook.Worksheets("Résultats").range("A" & NbrChamps).value <> ""
                NbrChamps += 1
            Loop

            maSheet = monBook.Worksheets("Résultats")
            maSheet.Activate()
            maSheet.Range("A2:O" & NbrChamps).Copy()
            'cette copy se fait sans probleme

            MsgBox("A2:O" & NbrChamps & " " & "A3:O" & NbrChamps + 1)
            maSheet2 = monBook2.Worksheets("En Cours")
            maSheet2.Activate()
            maSheet2.Range("A3:O" & NbrChamps + 1).PasteSpecial()   ' le programme plante ici
        Catch ex As Exception
            MsgBox(ex.Message & " " & ex.Source & " " & ex.ToString)
        End Try

    End Sub

a la sorti du prog, la plage de cellules est présente dans le presse papier.... seul le "paste" pose pb.

j'ai egalement essayer :
- maSheet2.Range("A3").pasteSpecial
- maSheet2.Range("A3") = maSheet.Range("A2:O" & NbrChamps)

sans succès
l'un de vous a t'il deja rencontrer ce genre de pb ?

3 réponses

drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
4 avril 2007 à 15:08
Salut, déjà ton code ressemble plus à du vb6 que du point .net

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
3
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
4 avril 2007 à 15:11
Tu fais ceci:       
Dim DTS As New DTS.Package
Dim DTS2 As New DTS.Package

Pourquoi ne procède tu pas de la même manière avec excel

http://www.vbfrance.com/codes/OUVERTURE-APPLICATION-EXCEL-AVEC-OPENFILEDIALOG-VUE-MANIPULER-APPLICATION_38376.aspx
http://www.vbfrance.com/codes/CODE-PERMETTANT-MANIPULER-OBJETS-EXCEL-NET_38534.aspx

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
3
Raul duke Messages postés 70 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 17 mai 2019 2
4 avril 2007 à 16:30
pb résolu :

sub Excel_V_Excel()

dim monApp as new Excel.application
dim monApp2 as new Excel.Application

monApp.workbooks.open("c:\test.xls")
monApp.workbooks.open("c:\test_copy.xls")

monApp.worksheets("Feuil1").Activate()
monApp.range("A2:O" & nbrChamps).copy()
monApp2.range("A3").pasteSpecial(Excel.xlPasteType.xlPasteValues)

end sub
3
Rejoignez-nous