probleme de boucle et variable avec nom classeur

F

Francois

Guest
Bonjour a tous,

Dans un classeur qui s'appele result.xls avec une feuille result j'ai un code
qui ouvre plusieurs fichiers dbf.

Je souhaite recuperer cette feuille dbf la copier dans mon classeur result.xls

Mon probleme est le suivant :

j'arrive a ouvrir tous les fichiers dbf un part un, mais je n'arrive pas a copier
la feuille dans le classeur result.xls parce que la feuille active est toujours celle du classeur result.xls.

J'ai esssaie de definir une variable pour activer le classeur DBF et selectionner la feuille mais j'ai toujours des erreurs.....

Voici mon code qui fonctionne sauf pour la partie copier coller feuille :

Sub TestGetFolderName()

Dim FolderName As String
Dim filenam As String
Dim path As String

FolderName = GetFolderName("Select a folder")

filenam = Dir(FolderName & "\*.dbf")


Do While Len(filenam) > 0

path = FolderName & "\" & filenam

Workbooks.Open Filename:=path
newnam = Left(path, Len(path) - 4) & ".xls"

ActiveWorkbook.SaveAs Filename:=newnam, FileFormat:=xlNormal


'Partie qui ne fonctionne pas parce qu'il ne prend pas la feuille du classeur dbf mais celle du classeur result'

ActiveWorkbook.ActiveSheet.select
ActiveSheet.Copy After:=Workbooks("result.xls").Sheets(Sheets.Count)

filenam = Dir()

Loop

End Sub


Pour finir le nom du fichier dbf et de la feuille sont les meme, moins .xls bien sur :)
Merci d'avance de votre aide.

François
 
R

Rai

Guest
Salut,

Une piste, sans filets (j'ai pas testé).

à la place de
ActiveWorkbook.ActiveSheet.select


Workbooks(Left(filenam, Len(filenam) - 4) & ".xls").sheets(1).select


Ca devrait sélectionner le bon classeur, si j'ai tout bien compris ton code.

Fais-nous part des résultats.

Rai
 
F

Francois

Guest
merci pour ta reponse....

Quand je fais un debug.print de ta ligne, c'est bien le bon nom de feuille
mais ActiveSheet est toujour result du classeur result.xls, on dirait que .select n'active pas la feuille....

ActiveSheet.Copy After:=Workbooks("result.xls").Sheets(Sheets.Count)

J'avais penser a deux choses ( essayé mais sans resultat )

1/definir une variable pour activesheet en lui disant que activesheet est

Workbooks(Left(filenam, Len(filenam) - 4) & ".xls").sheets(1)

2/changer .select par .active ou .activate dans ta ligne mais la j'ai une erreur.....

je ne sais pas si tu ou vous avez une idée

Cordiallement,
François
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 579
Membres
109 081
dernier inscrit
Vio21