copier onglet

sancerre75

XLDnaute Nouveau
je souhaiterais copier un onglet dans un autre fichier excel mais je n'arrive pas à le faire. En fait mon fichier source est plein de formule et ce qui m'intéresse ce n'est que les données et le format. Quand je recopie mon onglet, les liaisons des formules sont plus bonnes et des ###### apparaissent sur toutes les lignes. Quelqu'un sait comment faire pour copier un onglet dans ma situation. Merci par avance.
 

Brigitte

XLDnaute Barbatruc
Re : copier onglet

J'ai qq soucis... pour finir... SI personne ne s'y met, je regarde plus tard. J'ai très mal à la tête et je suis dans le brouillard...

Edit : merci Minick... Je devrais pourtant y arriver, mais je me mélange les pinceaux.

J'ai pourtant cette macro dans un classeur (qui prévoit même l'envoi par mail de ladite feuille copiée...)

Sub MacroMail()
'Autant prendre de bonnes habitudes : en VBA, on déclare toujours les variables utilisées !
Dim AccuseReception As Boolean
Dim Sujet As String
'
Sheets("FICHE COMMUNICATION").Select
Sheets("FICHE COMMUNICATION").Copy Before:=Sheets(8)
Range("A1:AA44").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C11").Select
Sheets("FICHE COMMUNICATION (2)").Select
ActiveWorkbook.Windows(1).SelectedSheets.Copy
AccuseReception = True
Sujet = "Demande de communication de boîte archives auprès ADLA"
ActiveWorkbook.SendMail "", Sujet, AccuseReception
ActiveWorkbook.Close False
End Sub

La voici en attendant mieux... La partie rouge devrait pourtant faire l'affaire, non ? Que fais je qui merdouille dans l'exemple sancerre...
Il faudrait ensuite que cela supprime dans le classeur source la copie faite en attendant d'être collée dans un nouveau classeur, c'est là que je bloque et du coup, j'ai tout cassé...
 
Dernière édition:

Minick

XLDnaute Impliqué
Re : copier onglet

Le code est un peu barbare
mais dans le code tu copies d'abord la feuille source dans le meme classeur sur un nouvel onglet:
Code:
Sheets("FICHE COMMUNICATION").Select
Sheets("FICHE COMMUNICATION").Copy Before:=Sheets(8)

Puis tu fais un copier/Collage valeurs sur ce nouvel onglet:
Code:
Range("A1:AA44").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Et enfin tu copies ce nouvel onglet dans un nouveau classeur:
Code:
Sheets("FICHE COMMUNICATION (2)").Select
ActiveWorkbook.Windows(1).SelectedSheets.Copy

++
Minick
 

Brigitte

XLDnaute Barbatruc
Re : copier onglet

Me revoici, provisoirement avec une solution qui marche, qui donc copie bien :

- la feuille 1 (renommer dans macro et revoir plages)
- dans un nouveau classeur (sans formules mais en laissant celles ci dans classeur source : voir cellule B13 dans classeur "sancerre" qui reste une formule)

Mais il faudrait :

- supprimer la feuille créée dans classeur source
- faire en sorte qu'on puisse le faire pour plusieurs feuilles ??? selon souhait de sancerre

Sancerre : si tu as plusieurs feuilles à copier, j'ai des questions (pas sûr que je puisse moi, y répondre)

- veux tu faire tout le classeur ?
- veux tu prendre chaque fois deux, trois, quatre... feuilles (noms ?)
- veux tu pouvoir choisir les feuilles ? si oui, possible, mais compliqué et surement pas moi

Je vais regarder mais plus tard la soluce (qui semble plus simple) de Minick mais comme je voulais au moins arriver à copier la feuille sans shinter les formules de la SOURCE... j'ai persévéré... ma solution est certainement pas très "propre" vu mon niveau, hihi.
 

Pièces jointes

  • sancerre.xls
    26.5 KB · Affichages: 88
  • sancerre.xls
    26.5 KB · Affichages: 89
  • sancerre.xls
    26.5 KB · Affichages: 90

Brigitte

XLDnaute Barbatruc
Re : copier onglet

Le code est un peu barbare
mais dans le code tu copies d'abord la feuille source dans le meme classeur sur un nouvel onglet:
Code:
Sheets("FICHE COMMUNICATION").Select
Sheets("FICHE COMMUNICATION").Copy Before:=Sheets(8)

Puis tu fais un copier/Collage valeurs sur ce nouvel onglet:
Code:
Range("A1:AA44").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Et enfin tu copies ce nouvel onglet dans un nouveau classeur:
Code:
Sheets("FICHE COMMUNICATION (2)").Select
ActiveWorkbook.Windows(1).SelectedSheets.Copy

++
Minick

Super pédagogique, merci Minick de nous éclairer, j'avoue ne même plus me souvenir du comment, pourquoi de mon code, c'est te dire le brouillard.

Barbare : car créé par moi avec l'enregistreur auto... Ton tien est sûrement plus "propre"... ca fait aucun doute, vu mon niveau...

Comment ensuite supprimer la feuille provisoirement créée dans le classeur source et aussi, tant que j'y suis, revenir à la feuille 1 du classeur SOURCE ?

Si je peux abuser, Minick, je crois que je mettrais ca dans mon fichier à moi... merci et bises pour la peine



SInon, petite observation :

attention dans mon exemple sheets (8) n'existe pas dans classeur sancerre... donc ca va bugger.

Faut vraiment que je regarde à tête reposée.
 
Dernière édition:

sancerre75

XLDnaute Nouveau
Re : copier onglet

enfait j'ai mon fichier source avec plusieurs onglets. Dans ce fichier j'ai différents onglets qui me servent de bilan. Je veux sortir ces bilans pour pouvoir créer un fichier seul bilan pour pouvoir l'envoyer sans le reste du fichier source.
 

Brigitte

XLDnaute Barbatruc
Re : copier onglet

L'envoyer, par mail ?

As tu outlook ?

Si oui à ces deux questions, utilise ma macro MACRO MAIL dans mon précédent post... Elle marche d'enfer : bon sur un seul onglet, il faut trouver comment faire pour plusieurs, mais tu peux sans doute trouver.

Je résume :

Dans mon fichier ARCHIVES HISTORIQUE, j'ai plusieurs onglets, dont l'onglet FICHE COMMUNICATION.

Cet onglet (et seulement celui-là, donc dans ton cas, plusieurs autres), je l'envoie par mail à qqun... Ca fait donc une copie de cet onglet dans le même classeur, ca ouvre un nouveau classeur, ca y copie l'onglet en question, ca copie/colle valeur spécial... et j'ai un bouton dans le classeur source qui fait tout ca : copie/collage spécial, ouverture nouveau classeur et envoi du mail (j'ai plus qu'à mettre le destinataire).

Voilà... Je pars faire les courses, mais j'ai la tête qui tourne, je crois que la grippe, ou un vilain rhume s'installe.

A plussssssssssss
 

Minick

XLDnaute Impliqué
Re : copier onglet

Re,

J'aurai fais quelque chose dans ce gout la (j'ai supposer que l'on envoie par mail la feuille active):
Code:
Option Explicit

Sub MacroMail()
    Dim AccuseReception As Boolean
    Dim Sujet As String
    Dim ShtSrc As Worksheet, ShtTmp As Worksheet
    
    ' On memorise la feuille active pour plus tard
    Set ShtSrc = ActiveSheet
    
    ' on copie la feuille source (donc la feuille active) dans une nouvelle feuille en fin de fichier
    ShtSrc.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    
    ' on memorise la feuille temporaire (plus facile pour la manipuler ensuite)
    Set ShtTmp = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    ' on copie/colle valeurs la plage qui nous interesse dans la feuille temporaire
    With ShtTmp.Range("A1:AA44")
        .Copy
        .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    End With
    
    AccuseReception = True
    Sujet = "Demande de communication de boîte archives auprès ADLA"
    
    'Copie de la feuille temporaire dans un nouveau classeur
    ShtTmp.Copy
    'Eventuellement on renomme la feuille pour eviter le  (2) en fin de nom d'onglet
    ActiveSheet.Name = ShtSrc.Name
    
    ' envoi du mail et fermeture du classeur nouvellement cree (sans l'enregistrer)
    ActiveWorkbook.SendMail "", Sujet, AccuseReception
    ActiveWorkbook.Close False
    
    'suppression de la feuille temporaire (on desactive, au passage, les messages d'alerte pour ne pas a avoir a confirmer la suppression)
    Application.DisplayAlerts = False
        ShtTmp.Delete
    Application.DisplayAlerts = True
    'on reactive la feuille source
    ShtSrc.Activate
    
    'on fait un peu de menage dans la memoire
    Set ShtTmp = Nothing
    Set ShtSrc = Nothing
End Sub

Pour envoyer plusieurs onglets, pas de probleme mais comment savoir quels onglets envoyer, une liste de choix ou une liste dans une feuille?

++
Minick
 

Brigitte

XLDnaute Barbatruc
Re : copier onglet

Re,

Merci Minick, dès que mon neurone est rétabli en mode "compréhension", dès que j'enlève le "masque", je teste ta solution...

Au passage, j'aime beaucoup ton code "largement commenté" : c'est bien mieux pour des ignares comme moi. La preuve, je sais plus qq années après pourquoi j'ai fait telle chose ;-)
 

Brigitte

XLDnaute Barbatruc
Re : copier onglet

Non Sancerre,

Ne te décourage pas. Copie/colle le code de Minick dans un nouveau module du fichier Sancerre par exemple.

Puis regarde chaque champ à adapter (plage, nom de feuille)... adapte donc..

Puis fais outis/macros/exécuter cette macro "macro mail"...

Et dis nous.
 

Brigitte

XLDnaute Barbatruc
Re : copier onglet

Re,

Je viens de mettre le code de Minick (pas le mien donc) dans le fichier Sancerre dans le module 2.
J'ai affecté le bouton "minick" à cette macro et j'ai testé. Ca marche d'enfer.

Essaie Sancerre. Tu seras conquis. Du beau boulot, j'adopte. Pour moi, c'est donc totalement un succès.

Juste un truc : comment faire pour que les boutons de macro n'apparaissent pas dans la feuille copiée ? Juste effacer la zone dans la macro ?

Reste à finir de satisfaire Sancerre :

- pour envoyer plusieurs onglets...

Il faut, Sancerre que tu répondes à notre question (je l'avais mise plus haut/bas) : veux tu une liste des onglets pour choisir ou bien veux tu envoyer toujours les mêmes (et donc peut on les nommer dans la macro ?)..

Ce n'est pas moi bien sûr qui saurais faire, vu mon état, vu mon niveau, mais bon je m'investis pour aider Minick qui trime. Merci encore.
 

Pièces jointes

  • sancerre.xls
    28.5 KB · Affichages: 58
  • sancerre.xls
    28.5 KB · Affichages: 63
  • sancerre.xls
    28.5 KB · Affichages: 64
Dernière édition:

Discussions similaires

Réponses
4
Affichages
291

Statistiques des forums

Discussions
312 092
Messages
2 085 223
Membres
102 826
dernier inscrit
ag amestan