Guitou7933
Messages postés3Date d'inscriptionvendredi 17 décembre 2010StatutMembreDernière intervention 2 juillet 2012
-
2 juil. 2012 à 06:43
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
2 juil. 2012 à 21:30
Bonjour,
Je me remet petit a petit a VBA et depuis 2 jours je bloque sur un point. J ai en effet un soucis au niveau de la fonction paste special que je n arrive pas a exploiter.
J ai un ensemble de donnees reparties sur differentes feuilles, j arrive deja a faire que l on puisse creer un nouveau fichier excel en choississant les feuilles que l on veut copier dans ce dernier. Je souhaitais qu en les copiant il n y ait pas de codes dans les cellules du nouveau fichier et que le code source VBA ne soit pas accessible ce aue j arrive a faire grace a un pastespecialValues. Cependaant le soucis est certaines cases (le haut de certaines colonnes) permettent de trier la colonne selon ce qu elle contient et je voudrais garder cette fonction mais elle disparait. Voila quel est mon soucis.
Je vous colle ici seulement la partie du code qui correspond au pastespecial car je ne sais pas si on peut joindre le fichier entier...
Sub copy()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
'On créer l'objet Excel
Set xlApp = CreateObject("Excel.Application")
'On défini le nombre d'onglets (ici 5)
'je demande a l utilisateur de choisir le nombre d onglet du nouveau fichier
Sheet = InputBox("How many sheets do you want to create in this new document ?")
xlApp.SheetsInNewWorkbook = Sheet
'On ajoute un classeur
Set xlBook = xlApp.Workbooks.Add
'On donne un nom au classeur
Name = InputBox("What is the name of the new document ?")
xlBook.SaveAs ("" & Name)
For i = 1 To Sheet
'On créer l'objet onglet dans le nouveau classeur créé
'je demande a l utilisateur de choisir le nom de la premiere feuille qu il souhaite copier
' les feuilles dans mon fichier de base s appellent Presentation, bsEnglish, etc...
Sheet = InputBox("Name of the sheet to copy in this new sheet #" & i)
Set xlSheet = xlBook.Worksheets(i)
'On affecte un nom aux l'onglets
xlSheet.Name = Sheet
'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
If xlSheet.Name = "Presentation" Then
ThisWorkbook.Sheets(2).Activate
ActiveSheet.Cells.copy
xlSheet.Cells.PasteSpecial Paste:=xlPasteValues
End If
If xlSheet.Name = "bsEnglish" Then
ThisWorkbook.Sheets(3).Activate
ActiveSheet.Cells.copy
xlSheet.Cells.PasteSpecial Paste:=xlPasteValues
End If
If xlSheet.Name = "plEnglish" Then
ThisWorkbook.Sheets(4).Activate
ActiveSheet.Cells.copy
xlSheet.Cells.PasteSpecial Paste:=xlPasteValues
End If
If xlSheet.Name = "TB" Then
ThisWorkbook.Sheets(5).Activate
ActiveSheet.Cells.copy
xlSheet.Cells.PasteSpecial Paste:=xlPasteValues
End If
If xlSheet.Name = "GL" Then
ThisWorkbook.Sheets(6).Activate
ActiveSheet.Cells.copy
xlSheet.Cells.PasteSpecial Paste:=xlPasteValues
End If
If xlSheet.Name = "Details" Then
ThisWorkbook.Sheets(7).Activate
ActiveSheet.Cells.copy
xlSheet.Cells.PasteSpecial Paste:=xlPasteValues
End If
Set xlSheet = Nothing
Next
'On rend le classeur visible
xlApp.Visible = True
'
'On remet la propriété de l'application à 3 (par défaut)
xlApp.SheetsInNewWorkbook = 3
End Sub
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 2 juil. 2012 à 07:15
Bonjour,
La seule chose qui ait retenu mon attention est la suivante :
Cependaant le soucis est certaines cases (le haut de certaines colonnes) permettent de trier la colonne selon ce qu elle contient et je voudrais garder cette fonction mais elle disparait.
Car elle a une réponse immédiate : rien ne t'empêche, une fois faite la copie de l'ensemble sans les formules, de faire la copie normale (donc avec leur formule) de ces cellules-là !
Ouvre ton aide VBA sur la méthode copy (Range.Copy) et utilise son argument destination !
Exemple :
sheets("toto").range("B2:C3").copy destination:= sheets("titi").range("X1")
copiera intégralement dans la feuille titi, à partir de sa cellule X1, tout le contenu de la plage B2:C3 de la feuille toto.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Guitou7933
Messages postés3Date d'inscriptionvendredi 17 décembre 2010StatutMembreDernière intervention 2 juillet 2012 2 juil. 2012 à 07:59
Bonjour,
Merci pour ta reponse rapide. Neanmoins cela ne fonctionne pas, je me suis rendu compte qu il sagissait de filtres (je recupere le code de quelqu un que je tente d ameliorer).
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 2 juil. 2012 à 08:08
Des filtres et non des formules, maintenant ...
Bon ===>> intéresse-toi alors à la collection PivotFilters, à ses items, puis à sa méthode Add
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 2 juil. 2012 à 21:30
Salut
Après copie, tu sélectionnes la ligne où se trouvent tes entêtes de colonnes et tu vas dans le menu "Données, Filtrer, Filtre automatique" (2003) ou "Données, Trier et filtrer, Filtrer" (2007+)
Tu récupèreras ainsi la fonctionnalité sans réutiliser ton ancien classeur - tjrs délicat, ce genre de fonctions
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)