Copier onglet vers autre classeur

Bonjour à tous les membres

Merci d'avance de m'apporter votre aide dans la fonction que je souhaite ajouter à mon fichier ci-joint

Dans l'exemple ci-joint, je veux copier, ou exporter si l'on peut dire, l'onglet FMM dans un nouveau classeur avec la même image de l’en-tête et la même mise en forme du tableau, mais sans formules, sans boutons, sans macro et sans codes VBA (Juste la Mise en forme, l’En-tête et les Valeurs qui doivent être exportés)

Le classeur de destination sera nommé « FMM_2016 » s’il n’existe pas dans le répertoire, il doit être créé automatiquement en fonction de l’année de gestion de la cellule K7 ajouté des lettres « FMM »

Le Nom de l’onglet à l’exportation sera les 3 lettres de gauche du Mois qui se trouvent dans la cellule K7 du tableau, c'est à dire le nom de l’onglet dans cet exemple sera « JAN »

Cette opération se faite 1 fois par mois, et donc à chaque exportation les onglets doivent se suivent dans le même classeur comme suit « JAN, FEV, MAR, AVR, MAI, JUI, JUIL, AOU, SEP, OCT, NOV » etc

A signaler que si on va prendre les 3 lettres à gauche de chaque Mois, on va rencontrer un conflit de noms pour les mois de JUIN et JUILLET puisqu’ils ont les mêmes 3 lettres de gauche. ( JUI et JUI )

il faut bien prévoir le max d’erreur qui peuvent se produire lors de l'opération de copie surtout au niveau des cellule "Nom et Prénom" et Mois en K7 du tableau

La réussite de l’opération d’exportation doit être confirmée par un message de confirmation suivie, après clic d'OK, par l’ouverture automatique de l’onglet d’exportation.

J'espère que ce descriptif est bien claire.

Merci d'avance.

Bonjour,

DEMERS a écrit :

Bonjour à tous les membres

Dans l'exemple ci-joint, je veux copier, ou exporter si l'on peut dire, l'onglet FMM dans un nouveau classeur avec la même image de l’en-tête et la même mise en forme du tableau, mais sans formules, sans boutons, sans macro et sans codes VBA (Juste la Mise en forme, l’En-tête et les Valeurs qui doivent être exportés)

Alors, il suffit de cliquer sur l'onglet et faire "Déplacer ou copier"

Raja a écrit :

Bonjour,

Alors, il suffit de cliquer sur l'onglet et faire "Déplacer ou copier"

Bonjour

Merci de ta réponse

Je pense que (cliquer sur l'onglet et faire "Déplacer ou copier") copie la feuille vers l'autre classeur avec toutes ses propriétés (Formules, Modules, Boutons et surtout les Liaisons)

A savoir que mon fichier ci-joint est juste un exemple pour une seule feuille qui fait partie d'un fichier multifeuilles qui s'échangent entre elles par des liaisons et des formules simples et matricielles.

Cordialement

NB: peut être l'expression soulignée est mal saisie, mais par laquelle je voulais dire que la copie ou l'exportation ne doit pas inclure les formules, les boutons, les macro et les liaisons de la feuille originale.

Voici le bon sens de l’expression.

Bonjour,

Sub ExportFMM()
    Dim chemin$, ClaC$, nfmm$, fmm As Worksheet, sh As Shape, nm As Name
    ActiveSheet.Copy before:=Worksheets(1)
    Set fmm = Worksheets(1)
    With fmm
        With .Range("K7")
            ClaC = "FMM_" & Right(.Value, 4) & ".xlsx"
            If .Value Like "JUI*" Then
                nfmm = Replace(Left(.Value, 4), "I", "")
            Else
                nfmm = Left(.Value, 3)
            End If
        End With
        .UsedRange.Copy
        .Range("A1").PasteSpecial xlPasteValues
        .Range("A1").Select
        For Each sh In .Shapes
            If Not sh.Name Like "Pict*" Then sh.Delete
        Next sh
    End With
    chemin = ThisWorkbook.Path & "\"
    On Error GoTo créerClaC
    Workbooks.Open chemin & ClaC
    On Error GoTo 0
    With Workbooks(ClaC)
        If .Worksheets.Count > 1 Or Not .Worksheets(1).Name Like "FMM*" Then _
         fmm.Move after:=.Worksheets(.Worksheets.Count)
        .Worksheets(.Worksheets.Count).Name = nfmm
        For Each nm In .Names
            nm.Delete
        Next nm
        .Close True
    End With
    Exit Sub
créerClaC:
    fmm.Move
    ActiveWorkbook.SaveAs ClaC
    Resume Next
End Sub

NB- Je ne vois pas d'autre possibilité que mettre la cellule K7 en format Texte pour éviter que le texte saisi ne soit transformé en date par Excel... (comme on ne sait comment la cellule est alimentée).

Pas de macro liée à cette feuille, donc aucune à supprimer.

Cordialement.

Bonjour MFerrand, le forum

c'est exactement ce que je cherchais.

Merci beaucoup de votre aide. Une empreinte d'un connaisseur.

Juste une petite remarque de fonctionnalité. Après avoir testé la macro sur 3 mois j'ai constaté que l'application tente à chaque fois de créer un nouveau classeur FMM_2016, ce qui déclenche à chaque fois un message notifiant que le classeur est existant et si on veut le remplacer.

Concernant la cellule du mois et pour information, cette cellule est alimenté par une liste déroulante comprenant les 12 mois de l'année. Je pense que ça ne pose pas de problème.

Amicalement

La création du classeur n'intervient que sur erreur à l'ouverture, si donc il ne peut être ouvert, n'existant pas...

Si une erreur intervient alors qu'il existe, cela ne peut provenir que du nom extrait de la cellule K7, soit justement que cette dernière cellule ne contient pas une valeur texte... (Une date est un nombre.)

Je repréconise donc de mettre la cellule au format Texte (contrairement à mon habitude de déconseiller absolument ce format) mais en pareil cas les valeurs fournies sous forme MOIS année sont interprétées comme dates par Excel et converties en dates... sauf février, août et décembre tapés en majuscules non accentuées (qui sortent ainsi de la correspondance avec les paramètres régionaux).

Cordialement.

D'accord je vais modifier format de K7 en texte et essayer

Même si je devrai séparer le mois et l'année en 2 cellules indépendantes.

Merci beaucoup de votre aide

MFerrand a écrit :

La création du classeur n'intervient que sur erreur à l'ouverture, si donc il ne peut être ouvert, n'existant pas...

Si une erreur intervient alors qu'il existe, cela ne peut provenir que du nom extrait de la cellule K7, soit justement que cette dernière cellule ne contient pas une valeur texte... (Une date est un nombre.)

Je repréconise donc de mettre la cellule au format Texte (contrairement à mon habitude de déconseiller absolument ce format) mais en pareil cas les valeurs fournies sous forme MOIS année sont interprétées comme dates par Excel et converties en dates... sauf février, août et décembre tapés en majuscules non accentuées (qui sortent ainsi de la correspondance avec les paramètres régionaux).

Cordialement.

J'ai tout essayé,/ Format TEXTE / cellules Mois et Année séparées/, mais le problème persiste toujours.

Esaaie avec ton fichier modèle !

Il faut l'enregistrer avant d'opérer, sinon le chemin pourrait poser problème...

MFerrand a écrit :

Esaaie avec ton fichier modèle !

Il faut l'enregistrer avant d'opérer, sinon le chemin pourrait poser problème...

reBonsoir MFerrand

Toujours le même conflit

Un problème avec le nom du fichier !!

Pour sortir de ce blocage, est-il possible de créer un classeur indépendant pour chaque mois au lieu d'un seul classeur pour les 12 mois

Dance ce cas je préfère que les classeurs portent les noms qui ont été réservés aux onglets. c-à-d JAN_16 / FEV_16 / MAR_16 etc.

Je pense qu'avec ce système, on pourrait sortir avec un résultat satisfaisant mieux que jamais.

Cordialement.

Tu m'étonnes, je l'ai testé de janvier à août sans difficulté !

Voilà le résultat :

40fmm-2016.xlsx (84.03 Ko)
MFerrand a écrit :

Tu m'étonnes, je l'ai testé de janvier à août sans difficulté !

Voilà le résultat :

reBonsoir MFerrand

T'as raison, Je l'ai retesté et il fonctionne très très bien

Très désolé et je m'excuse pour ce manque d'attention de ma part.

Je te remercie beaucoup de ton aimable aide.

Bonne continuation

Rechercher des sujets similaires à "copier onglet classeur"