Récupérer valeurs entre deux fichiers Excel. [Résolu]

-
Bonjour,

Voila j'aimerais simplement récupérer des valeurs d'un fichier excel à un autre mais malheuresement pour moi, toutes mes tentatives ont été vaincus :'(

Le but est simple en soi : Un fichier source dont le nom varie (Recap S27-S36 par exemple) et un second fichier où l'on va retirer les infos dotn le nom va varier aussi (Saisie27, 28,....)
Mais le simple fait de vouloir copier les données de l'un à l'autre est devenu depuis hier matin un enfer pour moi.

Je vous laisse voir mon code.

Option Explicit

Public Function IsWorksheet(strName As String) As Boolean 'CETTE FONCTION PERMET DE VERIFIER SI UNE FEUILLE EXISTE DEJA (Pour plus tard)
   Dim objWorksheet As Worksheet
   IsWorksheet = False
   For Each objWorksheet In ActiveWorkbook.Worksheets
      If objWorksheet.Name = strName Then
         IsWorksheet = True
      End If
   Next
End Function


Sub REMPLIR()

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Dim list1 As Variant
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim Smin As Integer
Dim Smax As Integer
Dim chemin As String
Dim nom As String
Dim Tableau As Worksheet
Dim ValeursTableau As Worksheet
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim nomfichier As String
'_____________DEFINITION DES CLASSEURS________________
Set wb1 = ThisWorkbook
Smax = Cells(6, 3)
chemin = "C:Documents and SettingscelikbDesktopTRS Echange\"
nom = "Saisie" & Smax & ".xls"
Set wb2 = Workbooks.Open(chemin & nom)
'_____________CREATION FEUILLE VIDE________________
If IsWorksheet("ValeursTableau") Then
Else
wb1.Sheets.Add
wb1.ActiveSheet.Name = "ValeursTableau"
End If
'_____________DEFINITION DES FEUILLES________________
Set ws1 = wb1.Sheets("ValeursTableau")
Set ws3 = wb1.Sheets("Récap")
Workbooks("Saisie" & Smax & ".xls").Activate
Set ws2 = Workbooks("Saisie" & Smax & ".xls").Sheets(Tableau)
'_____________COPIE DU TABLEAU Smax !________________
wb1.ws1.Range("A1:A36") = wb2.ws2.Range("A1:A36").Value
wb2.Close
End Sub



MERCI D'AVANCE !!


PS: Je suis sous Excel 2003
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
312
1
Merci
bonjour,

Que vaut Tableau ? Rien je pense.. d'où l'erreur
Set ws2 = Workbooks("Saisie" & Smax & ".xls").Sheets(Tableau)


de plus,
vous déclarez Tableau comme une feuille
Dim Tableau As Worksheet

donc si vous l'utilisiez, il faudrait faire :
Set Tableau=sheets("NomDeMaFeuille")
Set ws2 = Workbooks("Saisie" & Smax & ".xls").Tableau


Cordialement,
Jordane

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
Messages postés
127
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
5 novembre 2017
0
Merci
Bonjour,

D'abord merci pour ta réponse ;)

Tableau est la première feuille appartenant à "Saisie36.xls". J'ai essayé de changer par Sheets(1) et ... ca marche -_-'
Je ne comprend plus ^^'

Sinon la ligne :
wb1.ws1.Range("A1:A36") = wb2.ws2.Range("A1:A36").Value

n'est pas accepté.

Une solution ?
J'ai essayé en passant par une Variable
Dim Valeurs As Range
mais ça ne marche pas nom plus des la première ligne avec :
wb1.ws1.Range("A1:A36")
Commenter la réponse de tyros25
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
312
0
Merci
bonjour,
J'ai essayé de changer par Sheets(1) et ... ca marche -_-'


vous pouvez utiliser la syntaxe :
Set Tableau=sheets("Tableau ")
Set ws2 = Workbooks("Saisie" & Smax & ".xls").Tableau

' ou 

Set ws2 = Workbooks("Saisie" & Smax & ".xls").sheets("Tableau")

' ou  encore

Set ws2 = Workbooks("Saisie" & Smax & ".xls").Sheets(1)



Pour votre autre souci, je pense qu'il faut décomposer comme ceci :
Dim Plage1 As Range
Dim Plage2 As Range
wb1.Activate
ws1.Select
Set Plage1 = ActiveSheet.Range("A1:A36")
wb2.Activate
ws2.Select
Set Plage2 = ActiveSheet.Range("A1:A36")
Plage1 = Plage2.Value


Commenter la réponse de jordane45
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
wb2.worksheets("....nom de la feuille à copier.....").range("A1:A36").copy destination:= wb1.worksheets("ValeursTableau").range("A1")


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Messages postés
127
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
5 novembre 2017
0
Merci
Super Jordane45, je te remercie énormément !
Donc j'ai compris, faut que j'utilise plus de variables : Je comprend mieux et c'est plus clair !! =)

Pour ucfoutu, j'avais déjà essayé ce moyen mais sans résultat. On me met une erreur dessus.

Voila, merci encore à vous deux ;=)

PS : J'avais créé le sujet en invité, je peut pas le mettre en "Résolu".
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209 -
"Pour ucfoutu, j'avais déjà essayé ce moyen mais sans résultat. On me met une erreur dessus.
"
Ah ? Tiens donc ! Avec quel code (montre donc)
tyros25
Messages postés
127
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
5 novembre 2017
-
Finalement ça marche ^^'

C'était bien une erreur de ma part :
worksheets("....nom de la feuille à copier.....")
ne marche pas, mais
Worksheets(numero de la feuille)
fonctionne.

Le code est plus aéré comme cela :)

Merci beaucoup !
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209 -
cela veut forcément dire que ce que tu as mis entre parenthèses et entre guillemets ne correspond pas au nom donné à la feuille concernée.
Commenter la réponse de tyros25