Macro excel: ouvrir un fichier
azerty1896
-
Le Pingou Messages postés 12714 Date d'inscription Statut Contributeur Dernière intervention -
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!
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:
- Macro excel: ouvrir un fichier
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
1 réponse
Bonjour,
Ci après une procédure (avec ligne explicative) qui renferme une bonne partie de votre demande.
A vous de l'adapter :
Salutations.
Le Pingou
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