Copier onglets dans autre classeur

Bonjour le Forum !!!

j'ai besoin d'aide pour créer un code qui recopierai des onglets d'un classeur vers un autre que je choisirai dans une liste. je joint un fichier exemple avec quelques explication sur ce que je voudrai, je vous remercie d'avance pour l'aide que vous m'apporterez.

27essai1.xlsx (12.56 Ko)

Bonjour,

Commençons par le commencement

Voir cette démo pour la liste des fichiers.

Ensuite te servir de l'éditeur de macros pour exécuter les copies.

Poste le code pour qu'ont t'aide à le transposer avec les variables.

A+

Bonsoir le forum et lermite !!!

je te remercie pour ton aide

1 - je charger la liste des fichiers voulu

2 - j'ouvre un fichier de la liste par un double clic

reste à copier les onglets "A-B-C" dans un fichier choisi parmi la liste créer et là j'ai encore besoin d'aide.

23essai2.xlsm (20.83 Ko)

Re,

Code à recopier dans un module général (Module1 par exemple)

Option Explicit
Public WkPath As String

Public Sub CopierABC()
    Sheets(Array("A", "B", "C")).Copy After:=Workbooks(WkPath).Sheets(1)

    'Après tu peu le sauver
    'Workbooks(WkPath)Save

    'Et éventuellement le fermer
    'Workbooks(WkPath).Close
End Sub

Modifier dans le double-clic

Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    On Error GoTo erreur
    If Target.Value <> "" Then
        WkPath = Range("B1") & Target.Value
        Workbooks.Open Filename:=WkPath
    End If
    Exit Sub
erreur:
    MsgBox "Ce fichier n'existe pas."
End Sub

A+

bonjour lermite !!

tout d'abord merci de ton aide,

Le code pour copier me renvoi une erreur d'exécution 13 - incompatibilité de type, sur la ligne de code

" Sheets(Array("A", "B", "C")).Copy After:=Workbooks(WkPath).Sheets(1) "

Re,

Effectivement j'ai modifié sans tester.

Normalement ce code devrait fonctionné...

         Sheets(Array("a", "b", "c")).Copy Before:=Workbooks(wkpath).Sheets(1)

A+

Rectification, j'ai tester la ligne de code avec After et elle fonctionne aussi.

Tu n'a pas oublier de déclarer la variable WkPath en Public et dans un module général

BONJOUR LE FORUM & LERMITE

Encore un grand merci pour ton aide.

Je viens de modifier le code mais j'ai toujours le même message d'erreur

je joint mon fichier un peu modifier, je voudrai pouvoir choisir dans la liste qui se trouve sur l'onglet "ListeFichier" en colonne "A" le fichier dans lequel je voudrai copier les onglet "A,B et C".

je te souhaite une bonne journée ainsi qu'à tout ceux qui passeront par là

21amoes.xlsm (62.84 Ko)

Re,

Evidemment que ça ne va pas, tu n'a pas modifier le double-clic...

Voir mon poste plus haut. Worksheet_BeforeDoubleClick(...

Et le chemin n'est pas en B1 mais en G2.

Rectifie et ça fonctionne.

A+

r-Bonjour LERMITE

j'ai un autre message d'erreur " l'indice n’apparient pas à la sélection"

sur :"Sheets(Array("A", "B", "C")).Copy Before:=Workbooks(WkPath).Sheets(1)"

WkPath prend bien la valeur du chemin mais .Sheets(1) me dit " l'indice n’apparient pas à la sélection"

je t'avoue que tout cela est du chinois pour moi encore un petit coup de pouce et cela devrai aller.

Peux-tu m'expliquer ce que fait la commande "Workbooks(WkPath).Sheets(1)"

Tu ne sais pas savoir si c'est Sheets(1) qui donne l'erreur.

C'est que tu à une (ou +) erreur dans le chemin, le nom ou encore les noms des feuilles.

C'est avec MON classeur que tu a cette erreur ?

Tes classeurs se nomme 1.xlsx, 2.xlsx etc... ?

Ta question.. ça dit simplement où copier tes 3 feuilles.

oui c'est avec ton classeur que j'ai l'erreur.

par contre si je remplace "WkPath" par un mon de fichier ouvert exemple "1.xlsx", cela fonctionne.

je procède de la manière suivante :

  • je charge les fichiers voulu en cliquant sur le bouton charger
  • j'ouvre le fichier ou je veux coller mes trois onglets en double cliquant dans la liste
  • et je clic sur le bouton copier

Je pense que j'ai compris.

Recommence, mais avant de cliquer sur le bouton copier clic d'abord sur une cellule (n'importe laquel) en dessous du bouton.et ensuite le bouton.

EDIT :

Mais non, tu ouvre un répertoire............. mais dans le code tu met un répertoire en dur (cellule G2)

TU NE DOIS PAS FAIRE CHOISIR UN REPERTOIRE OU IL FAUT MODIFIER LE CODE DE PLUS TU CHARGE LES SOUS REPERTOIRES ????

Tu dis, je modifierais le code en fonction de..

toujours pareil je joint un dossier zipper qui contient le fichier "Retour AMOES_V1 " mes trois dossiers "1-2-3" et les classeurs "1.xlsx-2.xlsx-3.xlsx-4.xlsx-5.xlsx-6.xlsx"

et comme je te l'ai déjà dis si je remplace "WkPath" par un mon de fichier ouvert exemple "1.xlsx", cela fonctionne.

14amo.zip (88.10 Ko)

Lire l'édit de mon poste précédant.

EDIT :

Il y a un problème dans ton classeur, effectivement il ne prend pas les variables ??

Je cherche mais ça va prendre un certain temps.

bonsoir LERMITE

JE TE REMERCIE POUR TON AIDE ET SURTOUT POUR TA PATIENCE!!!!!!!!!

Je pense que c'est a cause des regroupement que tu fais et des fonctions que tu met dans le module de la feuille.

Tout Fonctionne sauf le regroupement des lignes

J'ai refais toutes les fonctions pour qu'elles aient un air un peu plus... académique

Et elles se trouvent dans le Module1.

A+

merci pour ton aide cela fonctionne très bien.

Dans le fonctionnement final le fichier qui recevra les trois onglets a un nombre d'onglet aléatoire, mais 14 fixes toujours les mêmes.

l'idéal serai que les trois onglets se copie après le dernier onglet.

en tous les cas je te remercie beaucoup pour ton travail

je te souhaite une bonne soirée A+

Re,

Pour copier en dernier change la ligne,

    Sheets(Array("A", "B", "C")).Copy after:=Workbooks(NomClasseur).Sheets(Workbooks(NomClasseur).Sheets.Count)

A+

Edit.

Attention, sur le forum la ligne est coupée mais ça doit être en une seule ligne.

EDIT2:

Finalement j'ai réussi à te remettre les groupes et que tout fonctionne. Voir fichier.

Bonjour LERMITE!!!

Vraiment merci pour ton travail formidable cela fonctionne parfaitement, dés lundi j’intègre ce code dans le fichier finale je n'aurai juste qu'à changer le nom des onglet à copier.

Encore merci pour ton aide et je te souhaite un bon WEEK-END

Rechercher des sujets similaires à "copier onglets classeur"