vba ou formule indirect

superbog

XLDnaute Occasionnel
Bnjour

je ne sais pas bien comment faire. Voici: j'ai un classeur volumineux avec de nombreuses feuilles pour 2012. Je viens d'en créer un autre pour 2013, les feuilles sont exactement les mêmes (avec le même nom) mais le contenu est un peu différent. En effet, la solde de la feuilleA(2012) doit se retrouver dans une case spécifique de la feuilleA(2013) et ce pour chaque feuille

feuilleA(2012)!L18=feuilleA(2013)!C3
feuilleA(2012)!k16=feuilleA(2013)!D3

je voudrais que cela se fasse automatiquement sachant que je peux soit prévoir une formule à intégrer dans la feuille modele au moment de la création des feuilles 2013, soit lancer une vba une fois les feuilles créées.

Voici mes fichiers exemples

merci d'avance de votre aide
 

Pièces jointes

  • Classeur2012.xlsx
    292.2 KB · Affichages: 40
  • Classeur2013.xls
    117.5 KB · Affichages: 26

MichD

XLDnaute Impliqué
Re : vba ou formule indirect

Bonjour,

A ) Ta question n'est pas claire...

B ) Ceci est un exemple comment faire pour copier
la valeur des 2 cellules du fichier classeur2012.xls
vers chacune des feuilles du classeur20013.xls à
l'endroit désigné.

C ) J'ai supposé que les 2 fichiers étaient ouverts où il
faudrait renseigner la variable : CheminÀDéfinir & "\"

D ) La macro est à copier dans un module du classeur classeur2013.xls

E ) Évidemment, ceci n'est pas un code testé...

VB:
Sub test()
Dim Wk As Workbook, Sh As Worksheet
Dim Rg As Range
Dim Rg1 As Range

Application.EnableEvents = False
Application.ScreenUpdating = False

On Error Resume Next
Set Wk = Worksheets("Classeur2012.xls")
If Err <> 0 Then
    Err = 0
    Set Wk = Workbooks.Open(CheminÀDéfinir & "Classeur2012.xls")
End If
Set Rg = Wk.Worksheets(1726).Range("L18")
Set Rg1 = Wk.Worksheets(1726).Range("K16")

With ThisWorkbook
    For Each Sh In .Worksheets
        With Sh
            .Range("C3") = Rg.Value
            .Range("D3") = Rg1.Value
        End With
    Next
End With

'Fermeture du classeur2012.xls si  nécessaire
Wk.Close False

Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub


MichD
 

superbog

XLDnaute Occasionnel
Re : vba ou formule indirect

Effectivment je précise donc:

il y a plus de 100 feuilles dans mes classeurs mais chaque fois qu'une feuille existe dans 2013, elle existe aussi dans 2012 avec le meme nom

le problème est de faire en sorte que pour chaque feuille du classeur 2013, la feuille portant le meme nom du classeur 2012 soit utilisée comme source

il faut donc une variable permettant de passer d'une feuille à l'autre



Bonjour,

A ) Ta question n'est pas claire...

B ) Ceci est un exemple comment faire pour copier
la valeur des 2 cellules du fichier classeur2012.xls
vers chacune des feuilles du classeur20013.xls à
l'endroit désigné.

C ) J'ai supposé que les 2 fichiers étaient ouverts où il
faudrait renseigner la variable : CheminÀDéfinir & "\"

D ) La macro est à copier dans un module du classeur classeur2013.xls

E ) Évidemment, ceci n'est pas un code testé...

VB:
Sub test()
Dim Wk As Workbook, Sh As Worksheet
Dim Rg As Range
Dim Rg1 As Range

Application.EnableEvents = False
Application.ScreenUpdating = False

On Error Resume Next
Set Wk = Worksheets("Classeur2012.xls")
If Err <> 0 Then
    Err = 0
    Set Wk = Workbooks.Open(CheminÀDéfinir & "Classeur2012.xls")
End If
Set Rg = Wk.Worksheets(1726).Range("L18")
Set Rg1 = Wk.Worksheets(1726).Range("K16")

With ThisWorkbook
    For Each Sh In .Worksheets
        With Sh
            .Range("C3") = Rg.Value
            .Range("D3") = Rg1.Value
        End With
    Next
End With

'Fermeture du classeur2012.xls si  nécessaire
Wk.Close False

Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub


MichD
 

MichD

XLDnaute Impliqué
Re : vba ou formule indirect

Essaie comme ceci :

Prends le temps de vérifier ces adresses :

C3 et D3 et dans l'autre fichier : L18 et K16

.Range("C3") = Wk.Worksheets(Sh.Name).Range("L18").Value
.Range("D3") = Wk.Worksheets(Sh.Name).Range("K16").Value

La macro doit être mise dans un module du classeur2013.xls

VB:
Sub test()
Dim Wk As Workbook, Sh As Worksheet

Application.EnableEvents = False
Application.ScreenUpdating = False

On Error Resume Next
Set Wk = Worksheets("Classeur2012.xls")
If Err <> 0 Then
    Err = 0
    Set Wk = Workbooks.Open(CheminÀDéfinir & "Classeur2012.xls")
End If

With ThisWorkbook
    For Each Sh In .Worksheets
        With Sh
            .Range("C3") = Wk.Worksheets(Sh.Name).Range("L18").Value
            .Range("D3") = Wk.Worksheets(Sh.Name).Range("K16").Value
        End With
    Next
    End With

'Fermeture du classeur2012.xls si  nécessaire
Wk.Close False

Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Réponses
10
Affichages
450

Statistiques des forums

Discussions
312 809
Messages
2 092 295
Membres
105 343
dernier inscrit
Poipi81