|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Date d'inscription: juin 2009
Localisation: France
Messages: 2
|
Bonjour,
Voici mon problème : Je voudrais rajouter une feuille dans plusieurs classeur à la suite. J'ai bien réussi à ouvrir les classeurs, mais les feuilles sont crées dans le fichier du lancement de la macro. Voici le code : Code :
Sub Workbook_Open() Dim LstFich, xfile Application.ScreenUpdating = False 'Ouverture des fichiers LstFich = Application.GetOpenFilename("Fichiers Excel(*.xls),*.xls", , _ "Sélection des fichiers à convertir", , True) 'true pour une selection multiple If Not IsArray(LstFich) Then Exit Sub For Each xfile In LstFich Workbooks.Open FileName:=xfile On Error Resume Next Workbooks(xfile).Activate Sheets.Add On Error GoTo 0 ActiveWorkbook.Save ActiveWorkbook.Close Next xfile ActiveWorkbook.Close End Sub Merci. Dernière modification par Philippe JOCHMANS ; 30/06/2009 à 21h19. Motif: Ajout des balises codes (sélection du code dans la fenêtre de rédaction des messages, puis un clique sur (#), ce n'est pas facultatif |
|
|
|
|
|
#2 |
![]() Nom : Antoine Dinimant
Date d'inscription: octobre 2006
Localisation: Paris
Âge: 39
Messages: 5 217
|
en utilisant ActiveWorkbook.Sheets.Add plutôt que Sheets.Add tout court ?
__________________
Antoun Expert SQL, BO, Essbase |
|
|
|
|
|
#3 |
|
Membre émérite
![]() |
Bonjour
A la place de : Code :
Workbooks(xfile).Activate Sheets.Add ActiveWorkbook.Save ActiveWorkbook.Close Code :
Workbooks(xfile).Sheets.Add Workbooks(xfile).Close , True Dernière modification par AlainTech ; 05/07/2009 à 07h41. Motif: Balises [code] |
|
|
|
|
|
#4 |
|
Membre Expert
![]() Date d'inscription: septembre 2007
Messages: 1 455
|
Une solution pour maitriser ce que l'on fait est d'instancier :
Code :
Dim wb As Workbook Dim F1 As Worksheet Set wb = Workbooks.Open(Filename:=xfile) Set F1 = wb.Worksheets.Add With F1 .Name = "LanouvelleFeuille" End With Code :
Dim wb As Workbook Dim F1 As Worksheet Dim LstFich, xfile Application.ScreenUpdating = False '-------------------------------------' 'Ouverture des fichiers '-------------------------------------' LstFich = Application.GetOpenFilename("Fichiers Excel(*.xls),*.xls", , _ "Sélection des fichiers à convertir", , True) 'true pour une selection multiple If Not IsArray(LstFich) Then Exit Sub For Each xfile In LstFich Set wb = Workbooks.Open(Filename:=xfile) '-----------------------' ' Ajout d'une feuille '-----------------------' Set F1 = wb.Worksheets.Add With F1 .Name = "LanouvelleFeuille" End With '-------------------------------------' ' Sauvegarde et fermeture du classeur '-------------------------------------' With wb .Save .Close End With Next xfile '-----------------------------------------------' ' Fermeture du classeur ou se trouve cette macro '-----------------------------------------------' ThisWorkbook.Close Application.ScreenUpdating = True ' il parait que c pas ncr mais je le met tjrs End Sub
__________________
Dernière modification par AlainTech ; 05/07/2009 à 07h42. Motif: Fusion de 2 messages |
|
|
|
|
|
#5 |
|
Invité de passage
![]() Date d'inscription: juin 2009
Localisation: France
Messages: 2
|
Merci
Ca fonctionne à merveille Merci pour les conseils et la solution ! |
|
|
|
|
|
#6 | |
|
Membre Expert
![]() Date d'inscription: septembre 2007
Messages: 1 455
|
Une dernière chose que j'ai oublié dans le code, liberer les objets.
Fin du code : Code :
'-----------------------------------------------' ' On libère les objets '-----------------------------------------------' Set F1 = Nothing Set wb = Nothing '-----------------------------------------------' ' Fermeture du classeur ou se trouve cette macro '-----------------------------------------------' ThisWorkbook.Close Citation:
__________________
|
|
|
|
|
|
|
![]() |
||
[XL-2003] Création d'une nouvelle feuille pour une liste de fichier
|
||
| Outils de la discussion | |
|
|