Importer des données d'un classeur a un autre

Ten_mestr

XLDnaute Nouveau
Bonjour le forum.

Voila mon probleme: Je cherche a importer des données de certaines cellules à partir de plusieurs classeurs fermés
Par exemple j'ai une fiche de paie, et dans cette fiche je vais prélever des données comme le nom, le salaire, ...
J'ai trouvé ce lien qui aurrait pu beaucoup m'aider mais en faitla seule solution que j'ai trouvé ne correspond qu'a moitié. Si ça fonctionne, moi j'aimerais le faire par macros et comme je suis novice en la matiere...
https://www.excel-downloads.com/threads/copier-des-donnees-dun-classeur-a-un-autre.55023/

Sur le lien il y a un autre lien
Lien supprimé
Mais quand je clique dessus on me dit que je ne me suis pas identifié O_O Aurais je fait quelque chose de mal ?

Voila en esperant recevoir des réponses rapidement =)

Bonne journée a toutes et a tous ! A++ :)
 

Ten_mestr

XLDnaute Nouveau
Re : Importer des données d'un classeur a un autre

Heu j'ai tenté de m'y retrouver mais... J'arrive pas a tout comprendre et comme je suis novice..

Pour ce qui est du fichier wippé, quand je lance la macro (par le bouton ou non) il me met une erreure (quand je valide le repertoire à scanner) comme quoi l'objet ne gere pas l'application.. Comme je n'y comprend rien je ne peux corriger l'erreure tout seul ^^"

Merci e ta réponse quand même et bonne journée
 

Ten_mestr

XLDnaute Nouveau
Re : Importer des données d'un classeur a un autre

Bonjour le forum.

J'ai cru trouvé une solution en me servant de la maniere manuelle ( = 'C:\chemin\[nom classeur.format]feuille'!cellule)
Mais voila mon probleme.

Enf ait le chemin est choisit par l'utilisateur au moment d'exécuter la macro. Si je tente d'intégrer une chaine de caractere 'Chemin' dans la valeur de la cellule en ajoutant dans la valeur de la cellule le " = ' " avant et le " !cellule" apres, il me met une erreur et je vois pas comment résoudre le probleme.

Si je ne suis pas assez clair je peux tenter de reformuler ça.

Sur ce, bonne journée a toutes et à tous
 

Ten_mestr

XLDnaute Nouveau
Re : Importer des données d'un classeur a un autre

bon comme personne n'a répondu je vais mettre un exemple pour que ce soit plus compréhensible...

Je prens une chaine de caractere, l'utilisateur va mettre le chemin dans la chaine ainsi que le nom du classeur de base soit le " C\chemin\[classeur.xls]"

Une de mes cellule devra contenir la formule " = 'chaine nomdelafeuille' !cellule"

Je met donc dans ma cellule "= '" & chaine & "nomdelafeuille'!cellule"

Mais ça marche pas... =S Qu'ai je donc fait de si mal ?
 

MichelXld

XLDnaute Barbatruc
Re : Importer des données d'un classeur a un autre

bonsoir


Enf ait le chemin est choisit par l'utilisateur au moment d'exécuter la macro. Si je tente d'intégrer une chaine de caractere 'Chemin' dans la valeur de la cellule en ajoutant dans la valeur de la cellule le " = ' " avant et le " !cellule" apres, il me met une erreur et je vois pas comment résoudre le probleme.

Il faudrait utiliser la fonction INDIRECT mais qui fonctionne uniquement si le classeur source est ouvert.

Pour pallier à ce problème, tu peux utiliser le complément SQLREQUEST
Download details: Excel 2002 Add-in: Open Database Connectivity


Une autre possibilité en utilisant une fonction personnelle
Code:
Function LireCellule_ClasseurFerme( _
        Chemin As Variant, _
        Fichier As Variant, _
        Feuille As Variant, _
        Cellule As Variant) As Variant
    
    Application.Volatile
    
    Dim Source As Object, Rst As Object, ADOCommand As Object
    Dim Cible As String
    
    Feuille = Feuille & "$"
    Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
        Cellule.Address(0, 0, xlA1, 0)
      
    Set Source = CreateObject("ADODB.Connection")
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Chemin & "\" & Fichier & _
        ";Extended Properties=""Excel 8.0;HDR=No;"";"
                
    Set ADOCommand = CreateObject("ADODB.Command")
    With ADOCommand
        .ActiveConnection = Source
        .CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
    End With
                  
    Set Rst = CreateObject("ADODB.Recordset")
    '1 = adOpenKeyset, 3 = adLockOptimistic
    Rst.Open ADOCommand, , 1, 3
    Set Rst = Source.Execute("[" & Feuille & Cible & "]")
     
    LireCellule_ClasseurFerme = Rst(0).Value
            
    Rst.Close
    Source.Close
    Set Source = Nothing
    Set Rst = Nothing
    Set ADOCommand = Nothing
End Function

Tu peux ensuite insérer ce type de formule dans une cellule :
=LireCellule_ClasseurFerme(A1;A2;A3;G7)

A1 correspond au chemin:
C:\Documents and Settings\mimi\dossier
A2 correspond au nom du classeur:
ClasseurY.xls

A3 correspond au nom de la feuille:
Feuil1

G7 correspond à la cellule qui doit être lue dans le classeur fermé.



bonne soirée
michel
 

Ten_mestr

XLDnaute Nouveau
Re : Importer des données d'un classeur a un autre

Bonjour MichelXLD, le forum,

Tout d'abbord, merci de l'interet que tu porte a mes problemes et merci de tes réponses...
J'ai testé la formule proposée mais j'ai toujours un soucis: il m'affiche #NOM? dans la cellule ou j'ai mis la fonction... Comme je ne comprends pas trop tout ton code je n'ai pas trouvé ce que j'ai mal fait mais bon je vais chercher un peu ^^

Merci a toi encore une fois et bonne journée
 

Ten_mestr

XLDnaute Nouveau
Re : Importer des données d'un classeur a un autre

Hum... J'ai tenté de comprendre mais je me suis cassé les dents...

Je ne vois pas ou est le probleme mais il m'affiche toujours #NOM ?

Pourtant j'ai regardé a l'emplacement de la feuille, du classeur, de la cellule et tout ça... ça ne devrait pas me mettre ça ? Une idée sur ce que j'ai mal fait ? :)
 

Discussions similaires

Statistiques des forums

Discussions
313 344
Messages
2 097 336
Membres
106 916
dernier inscrit
Soltani mohamed