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

Macros et VBA Excel Discussion :

copier une feuille sur un classeur fermé [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de zangaloni
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 474
    Points : 151
    Points
    151
    Par défaut copier une feuille sur un classeur fermé
    Bonsoir,
    En cherchant comment écrire sur un classeur fermé, je suis tombé sur le code suivant :
    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
    Sub exportDonneeDansCelluleClasseurFerme()
        Dim Cn As ADODB.Connection
        Dim Cd As ADODB.Command
        Dim Rst As ADODB.Recordset
        Dim Fichier As String
     
        Fichier = "C:\Documents and Settings\mimi\dossier\LeClasseur.xls"
     
        Set Cn = New ADODB.Connection
        Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & Fichier & ";" & _
            "Extended Properties=""Excel 8.0;HDR=No;"";"
     
        Set Cd = New ADODB.Command
        Cd.ActiveConnection = Cn
        Cd.CommandText = "SELECT * FROM [Feuil1$G30:G30]"
     
        Set Rst = New ADODB.Recordset
        Rst.Open Cd, , adOpenKeyset, adLockOptimistic
        Rst(0).Value = "Donnée test"
        Rst.Update
     
        Cn.Close
        Set Cn = Nothing
        Set Cd = Nothing
        Set Rst = Nothing
    End Sub
    Le code permet en effet d'écrire sur une cellule.
    Ce que je cherche c'est de pouvoir copier le contenu de toute la feuille ou au moins le contenu d'une grande plage de données.

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  3. #3
    Membre habitué Avatar de zangaloni
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 474
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    J'ai bien vu cet exemple, le problème c'est que moi je n'utilise pas access.

    Je n'utilise que des classeurs excel.
    Mon besoin est de transmettre une feuille de données ou tout simplement une plage de données d'un classeur ouvert à un classeur fermé.

    Je vais essayer de remplacer access par la plage que je veux copier, pour voir si ça donne quelque chose.

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  5. #5
    Membre habitué Avatar de zangaloni
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 474
    Points : 151
    Points
    151
    Par défaut
    J'ai beau essayer de combiner mais ça ne marche pas.

    Je récapitule mon besoin, est de copier des données de mon classeur ouvert pour les coller dans un classeur fermé.

    Merci de m'aider.

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    ben si ton classeur est fermé il suffit de l'ouvrir comme cela tu te retrouve avec 2 classeurs ouvert...
    Utiliser ADO pour accéder à un classeur excel n'as vraiment de l'intérêt que dans le cas ou tu ne fait pas cela depuis excel...

  7. #7
    Membre habitué Avatar de zangaloni
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 474
    Points : 151
    Points
    151
    Par défaut
    Oui, j'ai essayé ceci aussi, avec le code suivant
    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
    Sub output_action()
     
    '
    ' output_action Macro
    '
    Dim chemin1 As String
    Dim chemin As String
    '
     
    chemin = ThisWorkbook.Sheets("Tableau de bord").Range("E3").Value
     
    chemin1 = chemin
     
    Workbooks("Output_Action.xls").Sheets("Output_Action").Range("A:HI").ClearContents
     
     
        With Workbooks("Output_Action.xls").Sheets("Output_Action").QueryTables.Add(Connection:=Array( _
            "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & chemin1 & "" _
            , _
            ";Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet" _
            , _
            " OLEDB:Database Password="""";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet O" _
            , _
            "LEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Data" _
            , _
            "base=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
            ), Destination:=Workbooks("Output_Action.xls").Sheets("Output_Action").Range("A1"))
            .CommandType = xlCmdTable
            .CommandText = Array("OutPut_Actions$")
            .Name = "DonnéesExternes_1"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .SourceDataFile = chemin1
            .Refresh BackgroundQuery:=False
        End With
     
    End Sub
    Mais je n'arrivais pas à enregistrer mon classeur.
    message d'erreur "classeur non enregistré".

    Bonjour,

    Afin d'atteindre mon but(copier les données vers un classeur fermé) et en s'inspirant de l'idée d'ouverture et fermeture du classeur, j'ai utilisé le code suivant :
    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
    Sub OutPutr_Action()
     
        Application.DisplayAlerts = False
        Application.ScreenUpdating = False
     
        Dim titre As String
        Dim wbk1 As Workbook
        Dim wbk2 As Workbook
        Dim chemin As String
     
        'Chemin complet du classeur fermé
        titre = ThisWorkbook.Sheets("Tableau de bord").Range("E18").Value
     
        Set wbk1 = ThisWorkbook
        Set wbk2 = Workbooks.Open(titre) ' jouvre le classeur (titre)
     
        wbk2.Sheets("Feuil1").Range("A1:AJ500").Value = wbk1.Sheets("OutPut_Actions").Range("A1:AJ500").Value
        wbk2.Close
     
    End Sub
    je n'ai pas d'erreur signalé, mais mon fichier de réception réside vide.

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    pour sauver un classeur lors de la fermeture il faut mettre a true le paramètre saveChange


  9. #9
    Membre habitué Avatar de zangaloni
    Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 474
    Points : 151
    Points
    151
    Par défaut
    C'est exactement ce qui manquait.
    Merci beaucoup

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

Discussions similaires

  1. Copier une feuille d'un classeur fermé dans un autre fermé
    Par abdelkarim_1987 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/09/2013, 17h44
  2. [XL-2010] Copier une feuille d'un classeur existant sur un nouveau classeur avec vba
    Par missy060 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/06/2013, 00h46
  3. aller sur une feuille d'un classeur fermé par formule
    Par ericdev67 dans le forum Excel
    Réponses: 4
    Dernier message: 17/01/2011, 19h40
  4. je veu copier une feuille d'un classeur et il affiche erreur 424
    Par booskap dans le forum Macros et VBA Excel
    Réponses: 58
    Dernier message: 26/07/2007, 09h31
  5. Copier la feuille d'un classeur fermé
    Par sub73 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/04/2007, 20h02

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