Déplacer liste onglets

Bonjour à tous,

je fais appel à vous aujourd'hui car je ne sais pas du tout comment m'y prendre.

J'ai un fichier avec environ 2000 onglets, dont je voudrais en déplacer une partie vers un autre fichier. Je voudrais donc une macro qui me permettent de mettre une liste d'onglets et qu'ils me les déplacent tous dans un autre fichier.. Est-ce possible ?

Merci d'avance, et bonne journée !

Bonjour Jowil, bonjour le forum,

• Les déplacer dans un autre fichier ? Tu veux dire une fichier existant (dans ce cas il faut le chemin d'accès à ce dernier) ou un nouveau fichier vierge.

• Tu veux procéder comment :

  • Une UserForm avec une ListeBox multiselect dans laquelle tu sélectionneras les onglets puis un CommandButton pour exécuter l'ordre (mais avec 2000 onglets c'est pas évident)
  • Selectionner les onglet manuellement et une macro pour exécuter l'ordre.

Bref, ta question manque de précisions...

ThauThème a écrit :

Bonjour Jowil, bonjour le forum,

• Les déplacer dans un autre fichier ? Tu veux dire une fichier existant (dans ce cas il faut le chemin d'accès à ce dernier) ou un nouveau fichier vierge.

• Tu veux procéder comment :

  • Une UserForm avec une ListeBox multiselect dans laquelle tu sélectionneras les onglets puis un CommandButton pour exécuter l'ordre (mais avec 2000 onglets c'est pas évident)
  • Selectionner les onglet manuellement et une macro pour exécuter l'ordre.

Bref, ta question manque de précisions...

Bonjour, merci de ton temps,

Je voudrais les déplacer dans un autre fichier, que je crée avant ou pas, en réalité c'est plutôt ce qui est le plus simple.

Pour les onglets à sélectionner, il serait plus simple que je puisse copier la liste des noms des onglets en questions, plutôt que sélectionner, car je vais en avoir plus de 1000 à déplacer..

merci d'avance

Re,

Mais p... ou j'ai foutu mon application "tirage des vers du nez", moi ?...

Et... Tu veux les copier comment ? Quel critère va déterminer ceux qui font partie de la liste et ceux qui ne le font pas ?

J'ai une liste de tous les onglets de mon fichier dans mon fichier. J'ai également une liste plus partielle, basée sur un indicateur que j'ai créé. Je voudrais que lorsque cet indicateur me renvoie un N/A, l'onglet soit déplacé.

Il n'est pas possible de "juste" copier la liste d'onglets à déplacer ? il faut passer par une formule IF indicateur then move ?

Je n'y connais rien, je ne sais pas réellement de quelles infos tu as besoin, mais si c'est pour me parler comme ça, je peux aussi aller voir ailleurs...

Avec un fichier ce sera mieux.

Voilà, je voudrais dans ce fichier test, pouvoir déplacer les onglets 1,2,3,4,5,6,7 dans un nouveau fichier, mais pas les autres.

Merci d'avance de l'aide,

18classeur1.xlsx (14.03 Ko)

Bonjour,

Voici un exemple de code pour déplacer les feuilles listées en Accueil!C5:C11 vers le classeur "ClasseurCible.xlsx".

Option Explicit
Sub Test()
Dim WsS As Worksheet
Dim WbC As Workbook
Dim T
    Set WsS = ThisWorkbook.Worksheets("Accueil")
    Set WbC = Workbooks("ClasseurCible")
    T = Application.Transpose(WsS.Range(WsS.Range("C5"), WsS.Range("C5").End(xlDown)))
    ThisWorkbook.Worksheets(T).Move After:=WbC.Sheets(WbC.Sheets.Count)
End Sub

Remarques :

  • le classeur "ClasseurCible.xlsx" doit être ouvert.
  • les cellules de la liste des feuilles sont au format texte.

A+

13classeursource.xlsm (19.92 Ko)

Bonjour le fil, bonjour le forum,

Excellent code de Frangy avec juste deux petites erreurs.

• il a oublié l'extension ou à adapter avec ton propre fichier, mais avec l'extension...

remplacer :

 Set WbC = Workbooks("ClasseurCible")

par :

 Set WbC = Workbooks("ClasseurCible.xlsx")

• Et, pour qu'il soit adapté à ton fichier exemple dont le premier onglet de la liste est sur C6 et pas C5, remplace :

 T = Application.Transpose(WsS.Range(WsS.Range("C5"), WsS.Range("C5").End(xlDown)))

par :

 T = Application.Transpose(WsS.Range(WsS.Range("C6"), WsS.Range("C6").End(xlDown)))

Mais à part cela son code est redoutable d'efficacité !...

Bonjour,

et...bonjour la gestion de 1000 onglets

P.

Merci à tous les deux, c'est parfait !

Oui, la gestion de 1000 onglets est compliquée, malheureusement je ne vois pas trop comment migrer mon fichier "facilement", alors le séparer en deux est déjà pas mal...

jowil a écrit :

Merci à tous les deux, c'est parfait !

Oui, la gestion de 1000 onglets est compliquée, malheureusement je ne vois pas trop comment migrer mon fichier "facilement", alors le séparer en deux est déjà pas mal...

Et tu n'as pas cherché à en regrouper certains ?

Après cela, un (des) TCD pourrait peut être faire ton bonheur ?

Je ne peux pas vraiment, chaque onglet représente une "fiche" d'identité. Et j'ai un onglet "récap" avec tous mes indicateurs. L'idéal aurait pu être de le faire sous Access, mais pour tout migrer maintenant je ne suis pas à l'aise, d'autant plus que je ne maîtrise pas du tout Access contrairement à Excel..

re,

et tu ne peux pas montrer une "fiche" anonymisée ? il y a peut être moyen de tout regrouper dans une table puisque tu voudrais de toute manière le mettre sous access

P.

Merci de ton temps en tout cas

Voici le modèle de fiche que j'utilise. En colonne B, la date de chaque lundi depuis 2015.

En colonne A, le "ok" signifie que la semaine fait partie des 52 dernières, le "non ok" que ça l'est pas.

Ensuite, colonne C, je mets l'activité. En fonction de l'activité, le résultat est en colonne E ou (F+1). Et en colonne D, lorsque le résultat de la colonne E est sélectionné, je mets un "ok", pareil pour la colonne G par rapport à la colonne F.

Et après je calcule tout un tas d'indicateurs, qui sont sur les premières lignes de la feuille.

A savoir aussi, que toutes les fiches ne sont pas forcément identiques, car chaque personne n'a pas forcément d'activité toutes les semaines de l'année, donc lorsque ce n'est pas le cas, je supprime la ligne vide.

Je suppose que ce n'est pas clair ?

11classeur1.xlsx (46.65 Ko)

Waip.....

En voyant et lisant ça, je ne pense pas pouvoir te faciliter les choses, sorry

P.

Pas de soucis merci quand même d'avoir essayé

Bonjour,

Désolée de revenir, mais j'ai voulu l'adapter du coup à un autre fichier... et cela ne marche pas.

Mon code est le suivant :

Sub déplac()
Dim WsS As Worksheet
Dim WbC As Workbook
Dim T
    Set WsS = ThisWorkbook.Worksheets(" Accueil")
    Set WbC = Workbooks("STOP.xlsx")
    T = Application.Transpose(WsS.Range(WsS.Range("C6"), WsS.Range("C6").End(xlDown)))
    ThisWorkbook.Worksheets(T).Move After:=WbC.Sheets(WbC.Sheets.Count)
End Sub

Ma feuille s'appelle bien " Accueil" avec un espace

Cela me met "L'indice n'appartient pas à la sélection" et quand je fais Débogage, ça me souligne en jaune la ligne

ThisWorkbook.Worksheets(T).Move After:=WbC.Sheets(WbC.Sheets.Count)

Qu'est ce que cela veut dire ?

Merci d'avance et bonne journée !

Bonjour le fil, bonjour le forum,

Tu définis la variable WsS par :

 Set WsS = ThisWorkbook.Worksheets(" Accueil")

Es-tu bien sûr qu'il y ait un espace devant Accueil ? Ne faudrait-il pas écrire "Accueil" au lieu de " Accueil" ?

Oui je suis bien sûre. Au début ça ne marchait pas quand j'avais mis "Accueil", cette ligne ressortait en jaune. J'ai vérifié, mis l'espace, et désormais la ligne jaune est la dernière..

Re,

Est-ce que dans la plage C6:C... Il y a une cellule vide ? Une cellule contenant le nom d'un onglet qui ne soit pas strictement identique au nom de l'onglet lui-même ?

Si, par exemple, C7 contient le texte "Onglet Test" et que l'onglet se nomme "OngletTest" ça va planter...

Rechercher des sujets similaires à "deplacer liste onglets"