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 :

Données à écrire dans un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 163
    Points : 39
    Points
    39
    Par défaut Données à écrire dans un autre classeur
    Bonsoir A tous,

    je viens vers vous concernant des données à écrire dans un autre classeur

    A l'heure actuelle je le fais en ouvrant le fichier de destination, en écrivant les données et en e refermant le tout en vision cachée


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Workbooks.Open Chemin & NewFichier
     
    Workbooks(NewFichier).Worksheets("Projet").Range("E3") = Project_Acronym
    etc...
     
    Workbooks(NewFichier).Close True
    ceci étant dit:
    1) sachant que je renseigne des cellules pré-déterminées dans des onglets connus, comment puis je procéder afin de ne pas avoir à ouvrir le fichier puis le fermer ce qui est assez lourd mais va le devenir plus en plus car j'ai plusieurs fichiers à générés de suite prochainement même si je dois pouvoir distancier les actions je pense

    2) j'ai parcouru https://silkyroad.developpez.com/ sur l'écriture dans classeur fermé.

    Aussi et tournant sur office 2016 peut on effectivement écrire dans un classeur fermé et de manière assez simple compte tenu de mon point 1?

    Merci par avance pour votre aide
    bonne soirée

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Darkangel2014 Voir le message
    2) j'ai parcouru https://silkyroad.developpez.com/ sur l'écriture dans classeur fermé.
    Si tu as lu ce didacticiel, tu devrais déjà avoir ta réponse.

    Cela dit, le titre de ce didacticiel (très intéressant en soi) est quelque peu abusif puisque le classeur n'est pas réellement fermé (il est impossible de lire/écrire dans un fichier fermé). Il serait plus juste de dire qu'il est ouvert d'une manière différente.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2014
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Octobre 2014
    Messages : 163
    Points : 39
    Points
    39
    Par défaut
    Bonjour et merci à vous pour votre retour.

    C'est bien ce que je pensais mais souhaitait avoir confirmation: on ne peut écrire dans un classeur complètement fermé sans l'ouvrir.
    Aussi ma question est qu'elle la façon la plus optimisée pour écrire dans un classeur?

    A l'heure actuelle je fonctionne comme cela et même de manière cachée je pense mais trouvant cela assez lourd je m'interroge:

    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
    Name Chemin & "copie.xlsm" As Chemin & NewFichier
     
     
    'Empêche le raffraichissement de l'écran
    Application.ScreenUpdating = False
     
    'Ouverture du fichier
    Workbooks.Open Chemin & NewFichier
     
    'on ecrit dans le fichier
    Workbooks(NewFichier).Worksheets("Projet").Range("E3") = Project_Acronym
    ....
     
    Workbooks(NewFichier).Close True
     
    Application.ScreenUpdating = True
    peut on faire moins lourd?


    car je vois le code sur silkroad du type:
    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
    Il me semble qu'il faudra répéter ce code pour chaque ligne à insérer ce qui me semble d'avance encore plus lourd mais peut etre à tort
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        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

    merci à vous par avance

Discussions similaires

  1. [XL-2007] Import des Données d'une feuille dans un autre classeur
    Par Mickeylemotard dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/09/2012, 17h25
  2. Recopier des données sur condition dans un autre classeur
    Par niafron71 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/09/2012, 10h25
  3. [XL-2007] exportation de données dans un autre classeur
    Par blackstrange dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/07/2012, 16h28
  4. Enregistrer des données d'un Userform dans un autre classeur
    Par LinC49 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/01/2011, 17h51
  5. [XL-2003] Formule Somme.si allant chercher des données dans un autre classeur
    Par spoutnikk dans le forum Excel
    Réponses: 4
    Dernier message: 24/04/2010, 18h56

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