Copie de données d'un classeur à l'autre

olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008 - 11 févr. 2007 à 02:45
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008 - 14 févr. 2007 à 23:48
Bonjour à tous,

J'ai un problème de copie de donées d'un classeur à l'autre et ne trouve pas de solution. Apparement le problème provient de ma demarche de selection des cellules avant collage des données, celles-ci ne noit pas correspondre à ma cellule copier, ou bien alors je ne suis peut être pas le bonne ordre pour activer le classeur, la feuille et les cellules,...

Voici mon code, on y retrouve en rouge la partie problématique :

Private Sub cmd_import_Click()


    Dim fichier_valfor As Variant
    Dim classeur_cible As Workbook
    Dim feuille_cible As Worksheet
    Dim ligne As String
    Dim premier_decoupage() As String
    Dim donnees_generales() As String
    Dim donnees_libelles() As String
    Dim donnees_PR() As String
    Dim donnees_LU() As String
    Dim detail_donnees_PR()
    Dim detail_donnees_LU()
    Dim i  As Long
    Dim depart, count, j, k, l, x As Integer
    Dim monTab() As String


'''''Initialisationde de la fenêtre destination''''''''''''''''''''''''''''''''''
    Destination.cmd_old.Locked = True
    Destination.Option_new = True
    Destination.Option_old = False
    Destination.txt_new_ch_classeur.Locked = False
    Destination.txt_new_nom_classeur.Locked = False
    Destination.txt_new_onglet.Locked = False
    Destination.txt_old_classeur.Locked = True
    Destination.txt_old_onglet.Locked = True
    Destination.txt_new_ch_classeur.BackStyle = fmBackStyleOpaque
    Destination.txt_new_nom_classeur.BackStyle = fmBackStyleOpaque
    Destination.txt_new_onglet.BackStyle = fmBackStyleOpaque
    Destination.txt_old_classeur.BackStyle = fmBackStyleTransparent
    Destination.txt_old_onglet.BackStyle = fmBackStyleTransparent
    Destination.txt_new_ch_classeur.Text = "G:\Outil Valfor\Valfor excel"
    Destination.txt_new_nom_classeur.Text = ""
    Destination.txt_new_onglet.Text = ""
    Destination.txt_old_classeur.Text = ""
    Destination.txt_old_onglet.Text = ""
    Destination.txt_type_forfait.Text = ""
    quit = False
       
'''''Affichage de la fenêtre destination'''''''''''''''''''''''''''''''''''''''''
    Destination.Show


'''''Test si la fenêtre destination à été quitté proprement''''''''''''''''''''''
    If quit = True Then Exit Sub

''''''Copie du masque de donnée'''''''''''''''''''''''''''''''''''''''''''''''
    If old = True Then  'Copie dans un nouvel onglet d'un classeur existant
        Worksheets("macro").Select
        Cells.Select
        Selection.Copy
        Workbooks.Open Destination.txt_old_classeur.Text
        Sheets.Add
        ActiveSheet.Name = Destination.txt_old_onglet.Text
        Sheets(Destination.txt_old_onglet.Text).Select
        Cells.Select
        ActiveSheet.Paste
        Range("C1") = Destination.txt_type_forfait.Text
        Range("C2") = Destination.txt_date_camp.Text
        Range("C3") = Destination.txt_cdp.Text
        Set classeur_cible = ActiveWorkbook
        Set feuille_cible = ActiveSheet
    ElseIf old = False Then 'Copie dans un nouveau classeur
        Worksheets("macro").Select
        Cells.Select
        Selection.Copy
        Application.Workbooks.Add
        Application.DisplayAlerts = False
        ActiveWorkbook.Worksheets(3).Delete
        ActiveWorkbook.Worksheets(2).Delete
        ActiveWorkbook.Worksheets(1).Name = Destination.txt_new_onglet.Text
        Application.DisplayAlerts = True
        ActiveWorkbook.Activate
        Sheets(Destination.txt_new_onglet.Text).Select
        Cells.Select
        ActiveSheet.Paste
        Range("C1") = Destination.txt_type_forfait.Text
        Range("C2") = Destination.txt_date_camp.Text
        Range("C3") = Destination.txt_cdp.Text
        Set classeur_cible = ActiveWorkbook
        Set feuille_cible = ActiveSheet
    End If

Voilà si quelqu'un peut m'espliquer mon erreur ca serait génial.

Merci d'avance

Olivier

21 réponses

olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
14 févr. 2007 à 23:48
J'ao oublé de présisé que pour le collage des données, il y a 2 version qui marche.

La tienne :

   'Workbooks(classeur_cible).Worksheets(feuille_cible).Cells.PasteSpecial
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Workbooks(classeur_cible).Worksheets(feuille_cible).Cells.PasteSpecial
Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False

Et celle-ci :

Workbooks(classeur_cible).Worksheets(feuille_cible).Paste

Mais par contre ca non :

Workbooks(classeur_cible).Worksheets(feuille_cible).Cells.Paste

Alors voilà, quel version utiliser, la seconde est plus courte et simple mais est t'elle réellement bien conseillée ?
0
Rejoignez-nous