copier une valeur d'un fichier à un autre sans ouvrir le premier

micom59

XLDnaute Nouveau
Bonjour, je ne sais aps si mon titre est clair,
j'aimerais pouvoir copier la valeur d'une celulle d'un fichier à un autre sans avoir a ouvrir le premier fichier sachant que le nom du workbooks varie. En fait j'aimerais que :

Workbooks("test").Worksheets("test").Range("B31").Value = Workbooks(annee & Mois & Jour & "RENDEMENT").Worksheets("Fiche technique").Range("V23").Value

marche avec annee mois et jour comme variable.
Le soucis, c'est que ca marche pas!
 

PMO2

XLDnaute Accro
Re : copier une valeur d'un fichier à un autre sans ouvrir le premier

Bonjour,

Une solution avec le code ci-dessous.

DEMARCHE à suivre pour faire un exemple test

1) Créez un classeur et enregistrez le dans "C:" sous le nom 20090131RENDEMENT.xls
2) Renommez une de ses feuilles Fiche technique et tapez une valeur quelconque en cellule V23
3) Enregistrez et fermez ce classeur (il doit être dans le dossier C: )

4) Ouvrez un nouveau classeur et copiez le code suivant dans un module Standard
Code:
'######################################################
'### Constante de la feuille réceptrice (à adapter) ###
  '°°° Feuille du classeur actif °°°
Const FEUILLE As String = "test"
'######################################################

'######################################################
'### Les constantes suivantes sont pour l'exemple   ###
'### mais elles peuvent avantageusement être        ###
'### remplacées par des variables dont on affectera ###
'### la valeur directement dans le code             ###
'######################################################
  '°°° Classeur fermé °°°
Const CHEMIN As String = "C:\"
Const ANNEE As String = "2009"
Const MOIS As String = "01"
Const JOUR As String = "31"
Const CLASSEUR_FERME As String = "RENDEMENT.xls"
Const FEUIL_FERME As String = "Fiche technique"
Const CELL_FERME As String = "V23"
'######################################################
  
Sub ValeurClasseurFerme()
Dim S As Worksheet
On Error GoTo Erreur
Set S = ActiveWorkbook.Sheets(FEUILLE)
S.Activate
'--- La cellule de destination contiendra une formule qui fait référence à la cellule source ---
S.[b31] = "='" & CHEMIN & "[" & ANNEE & MOIS & JOUR & CLASSEUR_FERME & "]" & FEUIL_FERME & "'!" & CELL_FERME

'--- Si on ne veut pas la formule mais uniquement la valeur alors retirer les quotes de ce qui suit ---

'S.[b31].Copy
'S.[b31].PasteSpecial Paste:=xlPasteValues
'Application.CutCopyMode = False

Exit Sub
Erreur:
If Err = 9 Then
  MsgBox "La feuille " & FEUILLE & " est introuvable."
Else
  MsgBox "Erreur " & Err.Number & vbCrLf & Err.Description
End If
End Sub
5) Renommez une de ces feuilles test et lancez la macro ValeurClasseurFerme

En principe devrait s'afficher en cellule B31 la valeur de la cellule V23 de la feuille
Fiche technique du classeur fermé 20090131RENDEMENT.xls

Si tout fonctionne, ce qui s'affiche en B31 est une formule qui fait référence au classeur fermé mais si vous ne
voulez que la valeur il suffit de retirer les quotes du code (voir dans le code où cela est précisé).

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 854
Membres
103 975
dernier inscrit
denry