Récupérer valeurs entre deux fichiers Excel.

Résolu
Tyros25 - Modifié par tyros25 le 19/09/2013 à 15:18
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 24 sept. 2013 à 08:53
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

5 réponses

jordane45
Messages postés
36051
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 août 2022
358
Modifié par jordane45 le 19/09/2013 à 16:21
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
1
tyros25
Messages postés
127
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
5 novembre 2017

20 sept. 2013 à 08:25
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")
0
jordane45
Messages postés
36051
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 août 2022
358
20 sept. 2013 à 11:38
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


0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Modifié par ucfoutu le 21/09/2013 à 06:57
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tyros25
Messages postés
127
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
5 novembre 2017

Modifié par tyros25 le 23/09/2013 à 08:19
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".
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
23 sept. 2013 à 11:02
"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)
0
tyros25
Messages postés
127
Date d'inscription
vendredi 2 janvier 2009
Statut
Membre
Dernière intervention
5 novembre 2017

24 sept. 2013 à 08:10
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 !
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
24 sept. 2013 à 08:53
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.
0