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 :

Copier et coller d"un classeur Excel vers un autre


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 28
    Points : 14
    Points
    14
    Par défaut Copier et coller d"un classeur Excel vers un autre
    Bonjour à tous !

    J'essaie actuellement de copier une case d'un classeur excel vers un autre.

    Voici le code que j'utilise mais apparement une erreur survient a chaque fois :

    la méthode select() de la classe worksheet a échouée
    voici le code :

    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
    Dim objExcel, objExcel2 As Excel.Application
            Dim objWorkbook, objWorkbook2 As Excel.Workbook
     
            'On ouvre les 2 fichiers
            objExcel = CreateObject("Excel.Application")
            objWorkbook2 = objExcel.Workbooks.Open(adresse_complete & origine)
            objWorkbook = objExcel.Workbooks.Open(adresse_complete & "mondossier\" & destination)
     
            'On ne montre pas ce que fait Office (pas d'ouverture de fenêtre)
            objExcel.ScreenUpdating = True
            objExcel.DisplayAlerts = False
            objExcel.Visible = True
     
     
            'On copie les infos
            objWorkbook2.Activate()
            objWorkbook2.Sheets(feuilleacopier).Select()
            With objWorkbook2.Sheets(feuilleacopier)
                objWorkbook2.Range("B1").Select()
                objWorkbook2.Selection.Copy()
            End With
     
            'On colle dans le bon classeur (déterminée par var intakeOutake de la function
            objWorkbook.Sheets(intakeOuttake & " planning").Select()
            With objWorkbook.Sheets(intakeOuttake & " planning")
                objWorkbook.Range("H11").PasteSpecial(Excel.XlPasteType.xlPasteFormats, _
                                           Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, _
                                           False, False)
            End With
     
            objWorkbook.SaveAs(adresse_complete & "\mondossier\extractionMcCain.xls")
     
            'On vide le presse-papier pour éviter les message demandant si on veut garder les infos
            Clipboard.Clear()
            'On ferme tout ce qui concerne Excel (appli)
            objWorkbook.Close(True)
            objWorkbook = Nothing
            objWorkbook2.Close(True)
            objWorkbook2 = Nothing
            objExcel.Quit()
            objExcel = Nothing
    Une idée ?

    Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Quelqu'un aurait une petite idée svp ?

    J'ai même cherché du coté des activate mais rien n'y fait ...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Apparement ça fonctionne mieux mais il ne sauvegarde pas les modifications ...

    Une idée ?

    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
    adresse = File.ReadAllText(fichierClient)
            adresse_complete = "\\" & adresse & "\SharedDocs\logistique\appli\"
     
            Dim objExcel As Excel.Application
            Dim objWorkbook, objWorkbook2 As Excel.Workbook
     
            'On ouvre les 2 fichiers
            objExcel = CreateObject("Excel.Application")
            objWorkbook2 = objExcel.Workbooks.Open(adresse_complete & origine)
            objWorkbook = objExcel.Workbooks.Open(adresse_complete & "MacCain\" & destination)
     
            'On ne montre pas ce que fait Office (pas d'ouverture de fenêtre)
            objExcel.ScreenUpdating = True
            objExcel.DisplayAlerts = False
            objExcel.Visible = True
     
     
            'On copie les infos
            objWorkbook2.Activate()
            objWorkbook2.Sheets(feuilleacopier).Select()
            With objWorkbook2.Sheets(feuilleacopier)
                objExcel.Range("B1").Select()
                objExcel.Selection.Copy()
            End With
     
            'On colle dans le bon classeur (déterminée par var intakeOutake de la function
            objWorkbook.Activate()
            objWorkbook.Sheets(intakeOuttake & " planning").Select()
            With objWorkbook.Sheets(intakeOuttake & " planning")
                objExcel.Range("H11").PasteSpecial(Excel.XlPasteType.xlPasteValues, _
                                           Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, _
                                           False, False)
            End With
     
            objWorkbook.SaveAs(adresse_complete & "\MacCain\extractionMcCain.xls")
     
            'On vide le presse-papier pour éviter les message demandant si on veut garder les infos
            Clipboard.Clear()
            'On ferme tout ce qui concerne Excel (appli)
            objWorkbook.Close(True)
            objWorkbook = Nothing
            objWorkbook2.Close(True)
            objWorkbook2 = Nothing
            objExcel.Quit()
            objExcel = Nothing
    Une idée ?

    Merci d'avance !

  4. #4
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Ce n'est pas la peine de copier, si tes deux classeurs sont ouverts tu peux faire comme dans l'exemple ci-dessous (aucune sélection étant nécessaire) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks("Classeur2.xls").Worksheets("Feuil1").Range("A1") = Workbooks("Classeur1.xls").Worksheets("Feuil1").Range("A1")
    Hervé.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Salut,

    Ton idée me plait beaucoup mais je me retrouve avec l'erreur "index non valide" si je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objExcel.Workbooks(adresse_complete & "MacCain\" & destination).Worksheets(intakeOuttake).Range("H11") = objExcel.Workbooks(adresse_complete & origine).Worksheets(feuilleacopier).Range("B1")

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    J'ai maintenant "membre introuvable"...

    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
    adresse = File.ReadAllText(fichierClient)
            adresse_complete = "\\" & adresse & "\SharedDocs\logistique\appli\"
     
            Dim objExcel As Excel.Application
            Dim objWorkbook, objWorkbook2 As Excel.Workbook
     
            'On ouvre les 2 fichiers
            objExcel = CreateObject("Excel.Application")
            objWorkbook2 = objExcel.Workbooks.Open(adresse_complete & origine)
            objWorkbook = objExcel.Workbooks.Open(adresse_complete & "MacCain\" & destination)
     
            'On ne montre pas ce que fait Office (pas d'ouverture de fenêtre)
            objExcel.ScreenUpdating = True
            objExcel.DisplayAlerts = False
            objExcel.Visible = True
     
            objWorkbook.Worksheets("intake planning").Range("H11") = objWorkbook2.Worksheets("Feuil1").Range("B1")
     
            objWorkbook.SaveAs(adresse_complete & "\MacCain\extractionMcCain.xls")

  7. #7
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir Anthos59,

    As tu testé les chemins complets avec un Debug.Print ou un MsgBox pour voir si ils étaient bien construits ?

    Hervé.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonjour,
    en effet, le chemin suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adresse_complete = "\\" & adresse & "\SharedDocs\logistique\appli\"
    Ca ne serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adresse_complete = adresse & "\..\..\SharedDocs\logistique\appli\"
    Chaque "\.." remonte d'un rang dans l'arbre des dossiers.

Discussions similaires

  1. [XL-2013] copie de cellules en VBA d'un classeur excel vers un autre
    Par Invité dans le forum Excel
    Réponses: 7
    Dernier message: 17/05/2015, 22h55
  2. Réponses: 0
    Dernier message: 12/05/2015, 16h25
  3. [WD17] Copier feuille excel vers un autre classeur‎
    Par THOMAS Patrice dans le forum WinDev
    Réponses: 4
    Dernier message: 30/05/2012, 15h17
  4. [PPT-2010] Copier puis coller avec liaison un graphique Excel 2010
    Par Daejung dans le forum Powerpoint
    Réponses: 1
    Dernier message: 13/03/2012, 00h05
  5. [AC-2003] Copier/Inserer une feuille dans un classeur Excel depuis ACCESS
    Par moilou2 dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/08/2009, 14h45

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