Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Rajout d'onglet dans fichier

Phillip

XLDnaute Occasionnel
Bonjour,

Suite à des problèmes évoqués dans un post précédent (onglet qui a un nom en Anglais, du à un requête sur une base de données, bref, je passe les détails...Je réecris le début de ma macro.

J'ai un fichier ouvert, dont je copie la currentregion, j'ouvre un fichier de mon PC et je veux créer un nouvel onglet en dernière position et coller cette currentregion en A1 par exemple. J'ai écrit :
VB:
Sub test()

Dim fichier_tempo As Workbook
Dim fichier_final  As Workbook
Dim ledernier As String
Dim onglet_donnees As Worksheet
Dim ZoneACopier As Range
Dim chemin_fichier_final As String
Dim dernier_onglet As Worksheet
Dim monrep As String
Dim monfichier As String
Dim derdate As Date
Dim VFeuille As Worksheet, Vsemaine, VNomS$


vyear = Year(Date)
vmonth = MonthName(Month(Date))
vday = Day(Date)

vDate = vday & vmonth & vyear

'
'=================identifier fichiers et onglets============================================
Set fichier_tempo = ActiveWorkbook
'C'est le fichier que je reçois par mail dont je veux copier le contenu d'un onglet :
'Je dois copier une zone plutôt que l'onglet lui-même car mes histoires de requêtes mettent le bazar dans 'excel

Range("E10").CurrentRegion.Select 'une cellule au centre de la zone'
Selection.Copy
'je définis mon fichier ou je veux coller ma zone
Set fichier_final = Application.Workbooks.Open("C:\Users\JTMQ6376\Desktop\rajoutonglet.xlsm")
'Je définis le dernier onglet de mon fichier destination
Set dernier_onglet = fichier_final.Worksheets(Worksheets.Count)

'===========================================================================================


'ci-dessous la ligne en commentaire, ça marchait et CA NE MARCHE PLUS, d'ou mon appel à l'aide
'fichier_final.Add After:=dernier_onglet
'Je veux rajouter un onglet à la dernière position de mon fichier destination puis coller mon "currentregion", puis d'autres mises en forme non présentes ici
'============================================================================================


Range("B1").Select
ActiveSheet.Paste
fichier_tempo.Close False

End Sub

J'ai une erreur "propriété ou méthode non gérée par cet objet....Quid ?

Merci de votre aide

Cordialement

Phillip
 

Patrice33740

XLDnaute Impliqué
Bonjour,

Avec VBA, il faut banir les .Select inutiles :

VB:
Option Explicit
Sub test()
Dim fichier_tempo As Workbook
Dim fichier_final As Workbook
Dim onglet_donnees As Worksheet
Dim dernier_onglet As Worksheet

  ' le fichier que je reçois par mail dont je veux copier le contenu d'un onglet :
  Set fichier_tempo = ActiveWorkbook
  Set onglet_donnees = ActiveSheet
  'je définis mon fichier ou je veux coller ma zone
  Set fichier_final = Application.Workbooks.Open("C:\Users\JTMQ6376\Desktop\rajoutonglet.xlsm")
  'Je définis le dernier onglet de mon fichier destination
  Set dernier_onglet = fichier_final.Worksheets(Worksheets.Count)
  'Je dois copier une zone plutôt que l'onglet lui-même car mes histoires de requêtes mettent le bazar dans 'excel
  onglet_donnees.Range("E10").CurrentRegion.Copy Destination:=dernier_onglet.Range("B1")
  fichier_tempo.Close False

End Sub
 

Phillip

XLDnaute Occasionnel
Merci Patrice,

Je crois que je me suis perdu dans les select car je ne savais pas écrire en une ligne

VB:
onglet_donnees.Range("E10").CurrentRegion.Copy Destination:=dernier_onglet.Range("B1")

Merci beaucoup !
 

Patrice33740

XLDnaute Impliqué
En général, il faut définir les objets (source et destination) avant de les manipuler (copier)

Et pour ajouter un nouvel onglet à la fin :
VB:
  'Je définis l'onglet que j'ajoute après le dernier onglet de mon fichier destination
  With fichier_final.Worksheets
    Set dernier_onglet = .Add(After:=.Item(.Count))
  End With
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
745
Réponses
3
Affichages
403
Réponses
9
Affichages
340
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…