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 :

classeur fermé => ecrire dans un nouveau classeur


Sujet :

Macros et VBA Excel

  1. #1
    re
    re est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Points : 43
    Points
    43
    Par défaut classeur fermé => ecrire dans un nouveau classeur
    Bonjour,
    Je sais c'est un peu la même question qui a été posé mais il y a un truc en plus ,-)
    En s'inspirant du code ci-dessous (peut etre, car je suis nul en VBA) je souhaiterai :
    1 - a partir d'un ou plusieurs classeurs fermer extraire la valeur d'une cellule et la copier dans un nouveau classeur (ouvert) dans laquelle il y aura la macro

    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
    Vba 
     
    Sub RequeteClasseurFerme_Excel2007()
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Dim Rst As ADODB.Recordset
     
        'Définit le classeur fermé servant de base de données
        Fichier = "C:\Documents and Settings\mimi\dossier\NomClasseur.xlsx"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "Feuil1"
     
        Set Cn = New ADODB.Connection
     
        '--- Connexion ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
            .Open
        End With
        '-----------------
     
     
        '
        '... la requête ...
        '
     
     
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
     
    End Sub
    Idealement, il faudrait que l'on puisse selectionner le fichier ou les fichiers fermés dans un boite de dialogue et que l'on incrémente la nouvelle feuille avec les données du ou des classeurs fermés, il ne doit pas y avoir de doublon pour le nom du classeur fermé.

    Nom du classeur fermé---copie de la cellule A1-----copie de la cellule A2
    Classeur_1.xlsx---------copie de la cellule A1-------copie de la cellule A2
    classeur_2.xlsm---------copie de la cellule A1------copie de la cellule A2
    classeur_3.xlsm---------copie de la cellule A1-------copie de la cellule A2
    classeur_4.xls---------copie de la cellule A1--------copie de la cellule A2


    Merci beaucoup de votre aide

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Un peu de lecture ?
    Je vois que tu l'a déjà trouver, l'exemple que tu donne en est la copie.
    Mais lis un peu mieux et tu pourras faire ta 1ère requète.
    Ensuite tu remet le code complet et ont t'aideras pour boucler sur tout les classeurs.
    A+

  3. #3
    re
    re est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    Bonjour

    J'avais lu ce tuto mais...
    Extraire la valeur d'une cellule d'un classeur fermé, ça marche ;-) sur excel 2003, je ne sais pas pourquoi sur 2007 ca me copiait tout la feuille, j'ai du certainement faire une erreur, je vais re tester.
    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
     
    Sub extractionValeurCelluleClasseurFerme()
        Dim Source As ADODB.Connection
        Dim Rst As ADODB.Recordset
        Dim ADOCommand As ADODB.Command
        Dim Fichier As String, Cellule As String, Feuille As String
     
        'Adresse de la cellule contenant la donnée à récupérer
        Cellule = "A3:A3"
          'Pour une plage de cellules, utilisez:
          'Cellule = "A4:C10"
     
        ' Nom de la feuille du classeur fermé
        Feuille = "Feuil1$" 'n'oubliez pas d'ajouter $ au nom de la feuille.
     
        'Chemin complet du classeur fermé
        Fichier = "F:\TMP\T1.xls"
     
        Set Source = New ADODB.Connection
        Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
     
        Set ADOCommand = New ADODB.Command
        With ADOCommand
            .ActiveConnection = Source
            .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
        End With
     
        Set Rst = New ADODB.Recordset
        Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
     
        Set Rst = Source.Execute("[" & Feuille & Cellule & "]")
     
        ' Cellule ou commence la copie
        Range("A2").CopyFromRecordset Rst
     
        Rst.Close
        Source.Close
        Set Source = Nothing
        Set Rst = Nothing
        Set ADOCommand = Nothing
    End Sub
    Maintenant il reste la deuxieme partie, je cherche mais si vous pouvez m'aider je n'y passerait pas le we...

    Merci et bon WE

  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 272
    Points
    11 272
    Par défaut
    Salut, tu n'as pas tout lu
    sinon tu aurais vu qqch sur http://silkyroad.developpez.com/VBA/...Fermes/#LIII-C

  5. #5
    re
    re est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 116
    Points : 43
    Points
    43
    Par défaut
    c'est un jeu de piste...
    je suppose qu'il faut inserer un code à l'emplacement de "... requette" ? pour obtenir la copie dans la cellule, mais je ne sais pas lequel

    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
     '--- Connexion ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
            .Open
        End With
        '-----------------
     
     
        '
        '... la requête ...
        '
     
     
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
     
    End Sub

Discussions similaires

  1. [VBA][Excel]Copier une feuille dans un nouveau classeur
    Par illight dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/10/2020, 12h51
  2. Ecrire dans un nouveau classeur apres l'avoir créé en macro
    Par cheerleaders dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/05/2015, 14h03
  3. [XL-2007] Sauvegarder nouveau classeur avec nom contenu dans cellule du classeur courant
    Par cathodique dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/04/2013, 10h27
  4. Réponses: 0
    Dernier message: 23/11/2009, 18h35
  5. [VBA-E] Copie par valeur d'une feuille dans un nouveau classeur
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/05/2006, 22h38

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