Utilisation d'un Windows(" ").Activate avec un nom de feuille variable

oymar

XLDnaute Nouveau
Bonjours a tous,

J'essaye de faire une macro afin de créer un workbook ,ou l'utilisateur dois choisir le titre , ( Cf les deux InputBox ) puis de copier les données comprises dans le range dans le classeur ainsi créé (le range étant situé sur la feuille de travail ou est aussi positionné le CommandButton)

Tout se deroule sans accros au niveau de la création de mon classeur, de son titrage, du titrage de la feuille et de la copie. Mais quand arrive le moment de copier un erreur d'execution '9' apparait ( au niveau de la ligne en dessous de 'Coller').

Je voulais donc savoir s'il y avait un moyen d'activer mon classeur malgrés un nom variable et pareil pour la selection de la feuille (car je pense que j'aurais le même probleme pour la selection de la feuille ).

Code:
Private Sub CommandButton2_Click()

Dim XlApp As Excel.Application
Dim XlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set XlApp = CreateObject("Excel.Application")
    XlApp.SheetsInNewWorkbook = 1
    Set XlBook = XlApp.Workbooks.Add
    TitreClasseur = InputBox("Titre du classeur : ", "IDENTIFICATION")
    XlBook.SaveAs TitreClasseur
    XlApp.Visible = True
    TitreFeuille = InputBox("Titre de la feuille : ", "IDENTIFICATION")
Set xlSheet = XlBook.Worksheets(1)
    xlSheet.Name = TitreFeuille
Set xlSheet = Nothing
    XlApp.SheetsInNewWorkbook = 1
   
'Copier'
Windows("Fauillecalc.xls").Activate
Sheets("Calcul").Select
Sheets("Calcul").Range("G28:G39").Copy

'Coller'
Windows(TitreClasseur).Activate
Sheets(TitreFeuille).Select
ActiveSheet.Unprotect
ActiveSheet.Range("A1").Select
ActiveSheet.Paste
ActiveSheet.Protect
XlApp.SaveWorkspace TitreClasseur
XlApp.Quit
    
End Sub


Merci d'avance de votre réponse.

Oymar
 

oymar

XLDnaute Nouveau
Re : Utilisation d'un Windows(" ").Activate avec un nom de feuille variable

Shame on me!

Effectivement j'avais la reponse sous les yeux mais je n'ai pas été fichu de la voir.
Merci beaucoup pour cette reponse rapide (que ca faisait un jour que je bloquais dessus...).

Par contre j'essaye de faire de même avec mon xlSheet mais Excel me sort une erreur 91.
 
Dernière édition:

oymar

XLDnaute Nouveau
Re : Utilisation d'un Windows(" ").Activate avec un nom de feuille variable

Comme le dis si bien l'expression : " les problemes vont de paire". j'ai un autre probleme qui se pause sur ce code.

J'ai donc modifié ma macro comme Pierrot93 me l'as sugéré, ce qui fiat que ma macro se deroule jusqu'au bout. Le probleme est que au lieu de coller ma plage de cellule dans la feuille que j'ai créée précedement elle va la coller dans la feuille d'ou viennent les données copiées.

Je pense que le probleme vient d'une mauvaise activation de ma feuille créé mais je n'arrive pas a trouver comment faire.

Code:
Private Sub CommandButton1_Click()

Dim XlApp As Excel.Application
Dim XlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set XlApp = CreateObject("Excel.Application")
    XlApp.SheetsInNewWorkbook = 1
    Set XlBook = XlApp.Workbooks.Add
    TitreClasseur = InputBox("Titre du classeur : ", "IDENTIFICATION")
    XlBook.SaveAs TitreClasseur
    XlApp.Visible = True
    TitreFeuille = InputBox("Titre de la feuille : ", "IDENTIFICATION")
Set xlSheet = XlBook.Worksheets(1)
    xlSheet.Name = TitreFeuille
Set xlSheet = Nothing
    XlApp.SheetsInNewWorkbook = 1
   
'Copier'
Windows("Test.xls").Activate
Sheets("test").Select
Sheets("test").Range("F28:G39").Copy
'Coler'
XlBook.Activate
Worksheets(1).Select
ActiveSheet.Unprotect
ActiveSheet.Paste Destination:=Worksheets(1).Range("A1")
ActiveSheet.Protect
XlBook.Save
XlApp.Quit

End Sub

Oymar
 
Dernière édition:

oymar

XLDnaute Nouveau
Re : Utilisation d'un Windows(" ").Activate avec un nom de feuille variable

Merci pour ce liens, il y avait en effet des pas mal de subtilités que je ne connaissait pas :D .
( ce qui m'a permis de corriger deux trois truc au passage)

Mais l'erreur viens ici du XlBook qui ne s'active pas ce qui a pour conséquence de laisse "Test" en classeur actif et ma worksheets(1) s'appliquera a mon classeur "Test" au lieu de s'appliquer a XlBook.

Ps: j'ai d'ailleur enlevé mon InpuBox pour le titre de la feuille afin d'avoir un nom d'onglet constant ( c'est d'ailleur ce qu'y ma permis de remarquer la non activation).
xlSheet.Name = "TitreFeuille"
 
Dernière édition:

oymar

XLDnaute Nouveau
Re : Utilisation d'un Windows(" ").Activate avec un nom de feuille variable

Il n'y a pas de questions idiotes, juste les reponses le sont et la mienne ne fera pas exception!:rolleyes:

je me suis "legerement" compliqué la vie pour rien, ayant utilisé ca plus tot dans une autre macro je l'ai reutilisé alors que L'objet workbook et worksheet suffisaient.

( Comme dirais notre cher Shadoc pourquoi faire simple quand on peu faire compliqué)

Je viens de revoir mon ecriture et il faut croire que c'était l'App qui bloquait tout.

Voila le code remanié et qui en prime marche !

Code:
Private Sub CommandButton2_Click()
Dim XlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set XlBook = Workbooks.Add
    TitreClasseur = InputBox("Titre du classeur : ", "IDENTIFICATION")
    XlBook.SaveAs TitreClasseur

Set xlSheet = XlBook.Worksheets(1)
    xlSheet.Name = "TitreFeuille"
Set xlSheet = Nothing
    
'Copier'
Windows("Test.xls").Activate
Worksheets("test").Select
Worksheets("test").Range("F28:G39").Copy
'Coller'
XlBook.Activate
Worksheets("TitreFeuille").Activate
ActiveSheet.Unprotect
ActiveSheet.Paste Destination:=Worksheets(1).Range("A1")
XlBook.Save


End Sub

En espérant que mes erreurs digne du pire des têtes en l'air serve a quelqu'un.

Encore merci a vous et desolé du temps que je vous ai fait perdre avec mes etourderies.
 

Discussions similaires

Statistiques des forums

Discussions
314 647
Messages
2 111 533
Membres
111 197
dernier inscrit
john49