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 :

Récupérer des valeurs dans un autre fichier excel fermé


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Par défaut Récupérer des valeurs dans un autre fichier excel fermé
    Bonjour,
    Je désire récupérer les valeurs d'un plage de cellules dans une feuille "ACTIVITE" d'un fichier source fermé et les copier dans une feuille "BILAN" d'un autre fichier !!
    Tous mes essais ont rien donné sauf erreur 1004, l'indice n'appartient pas à la sélection, etc...

    Au secours si vous pouvez m'aider...
    Merci par avance.
    DominiqueD

  2. #2
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    bonjour,

    Voulez vous le faire par macro ou par formule car il suffit de mettre un ' et le chemin d'accès.

    exemple:
    ='\\Ctrlbact\dossier\dossier\[classeur.xls]nomfeuille'!$C11

  3. #3
    Membre éclairé
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut
    Bonsoir,

    il y a un super tuto sur lire, et ecrire dans les classeurs fermés.
    J espere que vous trouverez votre bonheur dedans.
    http://silkyroad.developpez.com/VBA/ClasseursFermes/

    vous avez effectué des essais, en mettant le code de ceux ci sur le forum, vous aurez des explications sur vos erreurs.
    cdlt
    Seb

  4. #4
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Par défaut
    Bonjour,
    Merci de votre réponse
    Mais je voudrais créer une macro dans le fichier bilan qui va chercher les valeurs dans 2 autres fichiers du même dossier que celui de bilan.
    Bien sûr les fichiers fermés ne sont pas des fichiers type Base de données
    La macro doit-être compatible avec excel 2003 et plus.

    Je connais ce tuto http://silkyroad.developpez.com/VBA/ClasseursFermes/ et malgré cela je sèche lamentablement.

    @+
    DominiqueD

  5. #5
    Membre chevronné
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Par défaut
    voici un code à adapter.

    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
    Private Sub Workbook_Open()
     
    If Not (ThisWorkbook.ReadOnly) Then
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
    Worksheets("feuillerécupérantlesvaleurs").Range("A2:I4000").ClearContents
    Dim Source As ADODB.Connection
    Dim Rst As ADODB.Recordset
    Dim ADOCommand As ADODB.Command
    Dim Fichier As String, Plage As String, Feuille As String
     
    'Adresse de la Plage contenant les données à récupérer
    Plage = "A2:I4000"
    Feuille = "Base$" 'n'oubliez pas d'ajouter $ au nom de la feuille.
    'Chemin complet du classeur fermé
    Fichier = "cheminduclasseurareprendrelesdonnées"
     
    Set Source = New ADODB.Connection
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;IMEX=1;HDR=No;"";"
    Set ADOCommand = New ADODB.Command
     
    With ADOCommand
    .ActiveConnection = Source
    .CommandText = "SELECT * FROM [" & Feuille & Plage & "]"
    End With
    Set Rst = New ADODB.Recordset
    Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
    Set Rst = Source.Execute("[" & Feuille & Plage & "]")
     
        ThisWorkbook.Worksheets("feuillerécupérantlesdonnées").Range("A2").CopyFromRecordset Rst
        Rst.Close
        Source.Close
              Columns("A:A").Select
            Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
                :=Array(1, 1)
     
        Set Source = Nothing
        Set Rst = Nothing
        Set ADOCommand = Nothing
    Ne pas oublier d'activer les références activeX data object

  6. #6
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 3
    Par défaut
    Bonjour à tous

    J'ai essayé ce que vous m'avez proposé et voici le résultat : message d'erreur : "Aucune donnée à convertir n'a été sélectionnée"
    C'est la 1ère fois que j'essai de travailler avec plusieurs fichiers différents et je ne comprend pas ce message étant donné que j'ai des valeurs dans la zone source A2:AZ501
    Que dois-je faire ? merci d'avance
    Voici 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Private Sub Workbook_Open()
     
    If Not (ThisWorkbook.ReadOnly) Then
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
    Worksheets("ACTIVITES").Range("A2:AZ501").ClearContents
    Dim Source As ADODB.Connection
    Dim Rst As ADODB.Recordset
    Dim ADOCommand As ADODB.Command
    Dim Fichier As String, Plage As String, Feuille As String
     
    'Adresse de la Plage contenant les données à récupérer
    Plage = "A2:AZ501"
    Feuille = "ACTIVITES$" 'n'oubliez pas d'ajouter $ au nom de la feuille.
    'Chemin complet du classeur fermé
    Fichier = Range("DD8").Value
     
    Set Source = New ADODB.Connection
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;IMEX=1;HDR=No;"";"
    Set ADOCommand = New ADODB.Command
     
    With ADOCommand
    .ActiveConnection = Source
    .CommandText = "SELECT * FROM [" & Feuille & Plage & "]"
    End With
    Set Rst = New ADODB.Recordset
    Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
    Set Rst = Source.Execute("[" & Feuille & Plage & "]")
     
        ThisWorkbook.Worksheets("ACTIVITES").Range("A2").CopyFromRecordset Rst
        Rst.Close
        Source.Close
              Columns("A:A").Select
            Selection.TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
                :=Array(1, 1)
     
        Set Source = Nothing
        Set Rst = Nothing
        Set ADOCommand = Nothing
    End If
    End Sub
    DominiqueD

Discussions similaires

  1. Réponses: 13
    Dernier message: 09/11/2011, 12h06
  2. Réponses: 5
    Dernier message: 24/02/2009, 09h05
  3. Réponses: 6
    Dernier message: 28/12/2007, 22h34
  4. Copier des données excel dans un autre fichier excel
    Par titemireille dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/10/2007, 20h57
  5. Récupérer des valeurs dans des fichiers html
    Par nico93100 dans le forum Langage
    Réponses: 1
    Dernier message: 05/01/2006, 21h46

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