Fichier destination et nom de feuille variables pour une macro

Bonjour,

Novice avec excel je maitrise l'import/export avec un nom de fichier ou/et nom de feuille fixe.

Mais lorsqu'il s'agit de m'aventurer vers les variables je suis complètement perdu.

Je vous expose mon soucis.

Je veux que dans ma macro le nom du fichier de destination puisse changer. (dans mon fichier exemple il s'agit de la cellule I3)

Admettons que là le fichier choisi soit "Resultats.xlsx", mais je voudrais que ma macro se réfère au contenu de cette cellule pour récupérer le nom du fichier de destination. Comme ça si le nom change la macro récupère le nouveau nom.

Il en serait de même pour le nom de la feuille (par exemple le nom change automatiquement avec la date insérée dans la case jaune.

Je ne suis pas si je suis très clair. Excusez-moi si ce n'est pas le cas.

Concrètement :

Je cherche à faire une macro qui ouvre le fichier dont le nom est contenu dans I3, importe B7:B12 dans la feuille de I3 dont le nom est contenu dans I5. Pour finalement fermer le fichier de destination.

Avez vous une idée de la manière de procéder?

Merci d'avance pour votre aide !

8export.xlsx (9.20 Ko)

Je suis parti du principe que les fichiers étaient dans un même dossier et que le classeur de destination existait avec l'onglet qui va bien.
Au passage, sans les variables, VBA n'existerait pas. Passez un peu de temps sur le cours VBA, vous ne le regretterez pas.
Essayez ceci :

Sub Macro1()
    Dim wB1 As Workbook, wB2 As Workbook, wS2 As Worksheet
    Dim wB2Name As String, wS2Name As String ' Les variables

    Application.ScreenUpdating = False
    wB2Name = ThisWorkbook.Path & "\" & Range("I3")
    wS2Name = Range("I5")

    Set wB1 = ThisWorkbook
    Set wB2 = Workbooks.Open(Filename:=wB2Name)
    Set wS2 = wB2.Sheets(wS2Name)
    ' On donne le focus à la page souhaitée
    wS2.Select

    ThisWorkbook.Worksheets("Feuil1").Range("B7:B12").Copy _
    wS2.Cells(7, 2)
    ActiveWorkbook.Close SaveChanges:=True
    Application.ScreenUpdating = True
End Sub
3resultats.xlsx (9.38 Ko)
0export.xlsm (19.87 Ko)

Bonjour à tous,

Une autre solution :

Il faudrait préciser le répertoire du fichier Resultats dans la zone nommée dans Feuil1. Préciser également la cellule de destination dans le code.

Option Explicit

Sub CopierDansFichierResultats()

Dim OnlgetTrouve As Boolean
Dim I As Integer
Dim CheminCible As String, Onglet As String
Dim CellulesACopier As Range
Dim WbResultats As Workbook

    Application.ScreenUpdating = False

    With ThisWorkbook
         CheminCible = .Path & "\" & Range("FichierDestination")       ' A défaut
         'CheminCible = .Range("RepertoireDestination") & "\"          ' A noter dans l'onglet Feuil1
         Onglet = .Sheets("Feuil1").Range("OngletDestination")
         Set CellulesACopier = .Sheets("Feuil1").Range("AireACopier")  ' B7:B12
    End With

    If FichierOuvert(CheminCible) Then
       Set WbResultats = Workbooks(CheminCible)
    Else
       Set WbResultats = Workbooks.Open(Filename:=CheminCible)
    End If

    With WbResultats
         OnlgetTrouve = False
         For I = 1 To .Sheets.Count
             If .Sheets(I).Name = Onglet Then
               CellulesACopier.Copy Destination:=.Sheets(I).Range("A1")  ' Première cellule à préciser
               OnlgetTrouve = True
             End If
         Next I
         .Close savechanges:=True
    End With

    Application.ScreenUpdating = True

    If OnlgetTrouve = True Then
       MsgBox "Copie terminée !", vbInformation
    Else
       MsgBox "Onglet : " & Onglet & " non trouvé !", vbCritical
    End If

End Sub

Function FichierOuvert(ByVal NomDuFichier As String) As Boolean

Dim WbEnCours As Workbook

    FichierOuvert = False
    For Each WbEnCours In Workbooks
        If WbEnCours.Name = NomDuFichier Then FichierOuvert = True
    Next WbEnCours

End Function

Merci à tous les deux, c'est exactement ce que je recherchais !

Clairement si j'avais dû trouver une solution pour le chemin de destination je me serais arraché les cheveux !

@Eric ta solution pour vérifier l'existence de l'onglet est parfaite :)

Rechercher des sujets similaires à "fichier destination nom feuille variables macro"