Macro excel: ouvrir un fichier

azerty1896 -  
Le Pingou Messages postés 12714 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai une macro à faire dans excel et je ne sais pas trop comment faire...pourriez vous m'aider ?
Je dois aller ouvrir un fichier (document A) , copier le contenu d'un onglet dans un onglet d'un autre fichier excel (document B). Puis copier ce même contenu vers un 2eme onglet du document B.

Quelle est le code VBA pour ça ?

Merci beaucoup!

A voir également:

1 réponse

Le Pingou Messages postés 12714 Date d'inscription   Statut Contributeur Dernière intervention   1 467
 
Bonjour,
Ci après une procédure (avec ligne explicative) qui renferme une bonne partie de votre demande.
A vous de l'adapter :
Sub Importer_tab() 
' Déclaration des variables 
Dim objcible As Workbook, objsource As Workbook 
Dim Msg As String, style As String, Titre As String, rep As String 
Dim w As Variant 
Dim delig, delici, numsem, agof, cpttab, Faux 
' récupérer le nom du classeur cible dans la variable 
Set objcible = ActiveWorkbook 
' valider le classeur source 
' est-il déjà ouvert,si le nb est 1, il n'est pas ouvert on va a la ligne NonOuvert 
If Workbooks.Count = 1 Then GoTo NonOuvert 
' boucle sur les classeurs ouvert du PC 
    For Each w In Workbooks 
' w.Name est le non du classeur trouver et si différent de celui-ci 
        If w.Name <> ThisWorkbook.Name Then 
        ' préparation des éléments du message et affichage pour décision 
            Msg = "Classeur ouvert :  " & w.Name & Chr(13) & "S'il sagit du classeur source, clic sur Valider . Autrement clic Non." 
            style = vbYesNo 
            Titre = "Valider classeur source" 
            rep = MsgBox(Msg, style, Titre) 
            ' contrôle la réponse 
            If rep = vbYes Then    ' L'utilisateur a choisi Oui. 
            ' récupérer le nom du classeur source dans la variable' 
                Set objsource = Workbooks(w.Name) 
                objsource.Activate 
                GoTo Suite ' aller directement à la ligne Suite 
            End If 
        End If 
        Next w 
' ligne pour classeur non ouvert 
NonOuvert: 
MsgBox ("Le classeur source n'est pas ouvert.") 
' ouverture de la boite de dialogue qui permet de choisir le classeur sans devoir interrompre la procédure 
agof = Application.GetOpenFilename 
' si le classeur n'est pas slectionné retour sur ligne NonOuvert 
If agof = Faux Then GoTo NonOuvert 
' récupérer le nom du classeur source dans la variable' 
Set objsource = Workbooks.Open(agof) 
' ligne pour classeur ouvert 
Suite: 
Application.ScreenUpdating = False 
' activer le classeur source 
objsource.Activate 
' Boucle sur les onglets pour copier/coller tableau hebdomadaire sans titre colonne 
For Each w In Worksheets 
' Ne pas prendre la feuille [Base] 
    If w.Name <> "Base" Then 
        ' récupérer la dernière ligne du tableau à importer 
        delig = Sheets(w.Name).Cells(65536, 1).End(xlUp).Row 
        'si delig =1 il n'y a pas de tableau 
        If delig <> 1 Then 
            ' récupérer la première ligne vide + 1 vide onglet correspondant classeur cible 
            delici = objcible.Sheets(w.Name).Cells(65536, 1).End(xlUp).Row + 2 
            numsem = Sheets(w.Name).Range("B2").Value 
            ' écrire les données dans le classeur cible 
            objsource.Activate 
            Sheets(w.Name).Range("A2:I" & delig).Copy 
            objcible.Sheets(w.Name).Activate 
             
            Range("A" & delici).Select  '& ":I" & delici + delig - 2).Value = Sheets(w.Name).Range("A2:I" & delig).Value 
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
            Selection.PasteSpecial Paste:=xlPasteFormats ', Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
    Application.CutCopyMode = False 
            cpttab = cpttab + 1 
        End If 
    End If 
    objsource.Activate 
' prochain onglet 
Next w 
'activer et sauver le classeur cible 
objcible.Activate 
objcible.Save 
Sheets("Base").Select 
' renseigner le journal hebdomadaire à la suite 
delig = Cells(65536, 2).End(xlUp).Row + 1 
Cells(delig, 1) = numsem 
Cells(delig, 2) = cpttab 
Cells(delig, 3) = Format(Date, "dd mmmm yyyy") & " à " & Time 
Cells(delig, 4) = objsource.Name 
Range("A1").Select 
Application.ScreenUpdating = True 
MsgBox ("Les " & cpttab & " taleaux hebdomadaires sont importées.") 
End Sub

Salutations.
Le Pingou
0