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 ligne et écrire dans un classeur fermé .


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut Copier une ligne et écrire dans un classeur fermé .
    Bonjour à vous,
    Je suis bloqué,en utilisant la méthode ADODB.Connection
    Exemple:
    j'aimerai à partir d'un classeur1 ouvert, copier la ligne 5 d'une feuil1 et l'envoyer vers un classeur2 fermé a la ligne 5 de la Feuil2 sans l'ouvrir.
    Par exemple au moment d'imprimer un texte, la macro ( imprime, copie, colle sans ouvrir le classeur2)
    J'ai téléchargé dans le forum :
    Lire et écrire dans les classeurs Excel fermés
    Et bien c'est coton....
    Quelqu'un a t'il une macro bien avancé ??
    Bien cordialement
    Bruno

  2. #2
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour,

    je ne maîtrise absolument pas ADO
    mais teste ce 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
    Option Explicit
     
     
    Sub exportDonneeDansCelluleClasseurFerme()
       Dim Cn As ADODB.Connection
       Dim Cd As ADODB.Command
       Dim Rst As ADODB.Recordset
       Dim Fichier As String
       Dim NomFeuille As String
       Dim DerCol As Integer
       Dim NomCol As String
       Dim i As Integer
     
       Fichier = "C:\Users\Fred\Desktop\Classeur2.xls"
       NomFeuille = "Feuil2"
       Set Cn = New ADODB.Connection
       ' pour Xl 2007
       Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
          "Data Source=" & Fichier & ";" & _
          "Extended Properties=""Excel 12.0;HDR=NO;"""
       '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
       DerCol = Rows(5).Find("*", , , , , xlPrevious).Column
       For i = 1 To DerCol
          NomCol = Split(Columns(i).Address, ":$")(1)
          Cd.CommandText = "SELECT * FROM [" & NomFeuille & "$" & NomCol & "5:" & NomCol & "5]"
          Set Rst = New ADODB.Recordset
          Rst.Open Cd, , adOpenKeyset, adLockOptimistic
          Rst(0).Value = Cells(5, i).Value
          Rst.Update
       Next i
       Cn.Close
     
       Set Cn = Nothing
       Set Cd = Nothing
       Set Rst = Nothing
    End Sub
    cordialement

  3. #3
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut lire et écrire dans un fichier fermé
    Bonsoir fred,

    Super ton code, merci.
    Néanmoins j'aimerai copier la ligne 5 en totalité.
    Alors que dans cette exemple je copie la case A5.

    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
    Dim Cn As ADODB.Connection
    Dim Cd As ADODB.Command
    Dim Rst As ADODB.Recordset
    Dim Fichier As String
    Dim NomFeuille As String
    Dim DerCol As Integer
    Dim NomCol As String
    Dim i As Integer
    Fichier = "C:\Documents and Settings\Bruno\Mes documents\Classeur1.xls"
    NomFeuille = "Feuil3"
    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
    DerCol = Rows("5:5").Column
    For i = 1 To DerCol
    NomCol = Split(Columns(i).Address, ":$")(1)
    Cd.CommandText = "SELECT * FROM [" & NomFeuille & "$" & NomCol & "5:" & NomCol & "5]"
    Set Rst = New ADODB.Recordset
    Rst.Open Cd, , adOpenKeyset, adLockOptimistic
    Rst(0).Value = Cells(5, i).Value
    Rst.Update
    Next i
    Cn.Close
    Set Cn = Nothing
    Set Cd = Nothing
    Set Rst = Nothing
    Comment faire.
    Bien cordialement

    edit

  4. #4
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut Ecrire et lire dans un fichier fermé
    Merci Fred
    J'ai résolu le probleme

    Bien cordialement


  5. #5
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour,

    peux tu nous faire profiter de ta solution.

    edit je vois que tu as modifier cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DerCol = Rows("5:5").Column
    donc DerCol = 1, tu n'auras effectivement que A5.

    @+

  6. #6
    Membre éclairé Avatar de BRUNO71
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2007
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 507
    Par défaut Ecrire dans un fichier Excel fermé
    Bonjour,

    Oui bien sur, voici le code...
    Par contre j'ai un petit souci à résoudre... J'aimerai inclure dans ma macro l'insertion d'une ligne vierge dan le classeur fermé, comme ça je peux a nouveau copier mes cellules dans la ligne 5...
    Mais comment faire ?

    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
     Dim Cn As ADODB.Connection
    Dim Cd As ADODB.Command
    Dim Rst As ADODB.Recordset
    Dim Fichier As String
    Dim NomFeuille As String
    Dim DerCol As Integer
    Dim NomCol As String
    Dim i As Integer
    Sheets("Récap").Select
    Range("B4").Value = TextBox1.Value
    Range("E4").Value = TextBox3.Value
    Range("A4").Formula = Format(Date, "DD - MMMM - yy")
    Range("G4").Value = 1
    Range("I4").Value = Environ("UserName")
    Range("H4").Value = ""
    Range("N4").Value = ""
    Sheets("Courriers").Select
    Range("E18").Select
    adresseclient.Hide
    Fichier = "Q:\GAR\Stat_Courriers_LT01\Récap_courriers_LT11.xls"
    NomFeuille = "Récap"
    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
    DerCol = Cells("15").Column
    For i = 1 To DerCol
    NomCol = Split(Columns(i).Address, ":$")(1)
    Cd.CommandText = "SELECT * FROM [" & NomFeuille & "$" & NomCol & "5:" & NomCol & "5]"
    Set Rst = New ADODB.Recordset
    Rst.Open Cd, , adOpenKeyset, adLockOptimistic
    Rst(0).Value = Worksheets("Récap").Cells(4, i).Value
    Rst.Update
    Next i
    Rows("5:5").Select
    Selection.Insert Shift:=xlDown
    Cn.Close
    Set Cn = Nothing
    Set Cd = Nothing
    Set Rst = Nothing
    J'ai incorporé (en rouge) cette insertion pour le classeur fermé mais ça ne fonctionne pas ...

    Bref quelqu'un a t'il une solution ?

    Merci, bien cordialement.

    Bruno

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

Discussions similaires

  1. Comment copier une ligne de JTable dans un autre JTable
    Par coolanso dans le forum Composants
    Réponses: 2
    Dernier message: 03/11/2011, 08h36
  2. [XL-2010] créer une application qui ecrit dans un classeur fermé
    Par letsProg dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/10/2011, 09h42
  3. écrire dans un classeur fermé
    Par rico99 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/07/2010, 21h48
  4. Copier une plage de cellules dans un fichier fermé
    Par COCONUT2 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/07/2007, 17h23
  5. [VBA] Copier une plage de cellules dans un fichier fermé
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2006, 16h52

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