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 :

Copie d'un classeur fermé [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut Copie d'un classeur fermé
    Bonjour,

    J'ai une adapté un code permettant de copier une feuille d'un classeur fermé dans mon classeur actif.
    Il marche bien sauf qu'il ne recopie pas les valeurs numériques.
    Pouvez-vous m'aider pour permettre la copie de nombres également?
    Merci

    Ci-dessous le 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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Sub ChargerRepertoireArticles()
     
     
        Repertoire = ThisWorkbook.Path & "\"
       Dim rs As ADODB.Recordset
       Set cnn = New ADODB.Connection
     
     
        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 = "Y:\BASE DOCUMENT\BASE TECHNIQUE\BASE ARTICLES.xls"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "Liste des articles"
     
        Set Cn = New ADODB.Connection
     
        '--- Connection ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & Fichier & _
                ";Extended Properties=Excel 8.0;"
            .Open
        End With
        '-----------------
     
        'Définit la requête.
        '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
        texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
     
        Set Rst = New ADODB.Recordset
        Set Rst = Cn.Execute(texte_SQL)
     
        'Ecrit le résultat de la requête
     
            Sheets("Base articles tempo").[A2:N65000].ClearContents
        Sheets("Base articles tempo").[A2:N65000].CopyFromRecordset Rst
     
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
     
        'Tri par type d'affaire
     
           ActiveWorkbook.Worksheets("Base articles tempo").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Base articles tempo").AutoFilter.Sort.SortFields.Add Key _
            :=Range("G1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("Base articles tempo").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .Apply
     
        End With
     
        End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Je ne vois pas pourquoi les chiffres ne seraient pas copiés, mais je changerais cette ligne.
    Nul besoin de spécifier une plage lors du CopyFromRecordset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Base articles tempo").[A2].CopyFromRecordset Rst

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut
    Pourtant c'est bien ce qui se passe. Seul les texte sont copiés.
    J'ai remplacé la ligne comme proposé mais bon ça ne change rien.

    Je ne m'y connais pas top mais la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim NomFeuille As String, texte_SQL As String
    ne serait-elle pas à l’origine de mes soucis?

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Non, c'est normal de donner des types String à ces variables.
    Par contre, sous 2013, tu pourrais changer de provider pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Provider=Microsoft.ACE.OLEDB.12.0
    et voir si ça fonctionne mieux (?)

    Est-ce qu'il y a des lignes ou des colonnes vides entre les textes et les nombres ?

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    J'ai peut-être mal compris...
    Est-ce que les nombres sont copiés, mais en format texte ou ils sont systématiquement oubliés ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 156
    Par défaut
    Citation Envoyé par parmi Voir le message
    J'ai peut-être mal compris...
    Est-ce que les nombres sont copiés, mais en format texte ou ils sont systématiquement oubliés ?
    Tous les nombres sont systématiquement oubliés. Par exemple
    324120A => recopié
    8330216 => case vide (oublié)

    Je n'ai pas compris ou et comment remplacer le "Provider". Tu peux m'éclairer?

    Merci

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

Discussions similaires

  1. [XL-2013] Copie d'un classeur fermé
    Par Nono Sto dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/08/2014, 15h29
  2. [XL-2003] Copie de donnée classeur fermé
    Par celebrom dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2012, 12h51
  3. [XL-2002] lecture recherche copie enregistrement dans un classeur fermé
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/11/2011, 15h06
  4. [XL-2007] Copie d'un classeur fermé
    Par Jay29 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/10/2009, 13h53
  5. Copie de données depuis un classeur fermé
    Par kiki29 dans le forum Contribuez
    Réponses: 0
    Dernier message: 15/03/2008, 18h36

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