Copier des onglets selon un range défini
nanoo79
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis entrain de faire une macro VBA qui doit copier différent onglet dans un nouveau classeur si le nom de l'onglet appartient à une range. Pour exemple j'ai une range qui s'appelle Client Prime et dedans il ya les noms des différents clients appartenant à ce Range. Le Range est dans un fichier différent dans un onglet nommé Parameters. Mon code VBA est dans un autre fichier appelé RapportMensuel.xlsm. Les onglets sont à copier du fichier RapportMensuel.xlsm vers un fichier nommé Banque.xlsm
Je souhaitais partir vers un code comme celui indiqué en dessous mais je n'arrive pas a formater avec le range d'un autre fichier
Est-ce que vous avez une idee?
Merci
Je suis entrain de faire une macro VBA qui doit copier différent onglet dans un nouveau classeur si le nom de l'onglet appartient à une range. Pour exemple j'ai une range qui s'appelle Client Prime et dedans il ya les noms des différents clients appartenant à ce Range. Le Range est dans un fichier différent dans un onglet nommé Parameters. Mon code VBA est dans un autre fichier appelé RapportMensuel.xlsm. Les onglets sont à copier du fichier RapportMensuel.xlsm vers un fichier nommé Banque.xlsm
Je souhaitais partir vers un code comme celui indiqué en dessous mais je n'arrive pas a formater avec le range d'un autre fichier
Est-ce que vous avez une idee?
Merci
For Each ws In Sheets If ws.Name Like "MSF**" Then ws.Copy After:=Workbooks("Banque.xlsm").Sheets(1) End If
A voir également:
- Copier des onglets selon un range défini
- Comment copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
- Retrouver un copier-coller android - Guide
- Restaurer les onglets chrome - Guide
- Arobase copier coller ✓ - Forum Bureautique
3 réponses
Bonsoir Nanoo, bonsoir le forum,
Peut-être comme ça (code non testé) :
Peut-être comme ça (code non testé) :
Sub Macro1() Dim CS As Workbook 'déclare la variable CS (Classeur Source) Dim CH As String 'déclare la variable CH (CHemin d'accès) Dim CD As Workbook 'déclare la variable CD (Classeur Destination) Dim OP As Object 'déclare la variable OP (Onglet Parameters) Dim OS As Object 'déclare la variable OS (OngletS) Dim PL As Range 'déclare la variable PL (PLage) Dim CEL As Range 'déclare la variable CEL (CELlule) Set CS = ThisWorkbook 'définit le classeur source CS CH = CS.Path & "\" 'définit le chemin CH On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante) Set CD = Workbooks("Banque.xlsm") 'définit le classeur destination CD (génère une erreur si ce classeur n'est pas ouvert) If Err <> 0 Then 'condition : si une erreur a été générée Err.Clear 'efface l'erreur Workbooks.Open (CH & "Banque.xlsm") 'ouvre le classeur "Banque.xlsm" Set CD = ActiveWorkbook 'définit le classeur destination CD End If 'fin de la condition On Error GoTo 0 'annule la gestion des erreurs Set OP = CD.Sheets("Parameters") 'définit l'onglet OP Set PL = OP.Range("Client Prime") 'définit la plage PL For Each OS In CS.Sheets 'boucle 1 : sur tous les onglet OS du classeur source CS For Each CEL In PL 'boucle 2 : sur toutes les cellules CEL de la plage PL 'condition : si le nom de l'onglet contient la valeur de la cellule CEL (à adapter) If OS.Name Like "*" & CEL.Value & "*" Then OS.Copy After:=CD.Sheets(1) 'copy l'onglet dans le classeur CD après le premier onglet de CD Exit For 'sort de la boucle 2 End If 'fin de la condition Next CEL 'prochaine cellule de la boucle 2 Next OS 'prochain onglet de la boucle 1 End Sub
Bonjour ThauTheme,
Merci pour ton aide. J'ai quelques questions pour être sûre de bien comprendre ton code et ainsi pouvoir l'adapté.
Dans otn code quand tu utilise la variable CS (Classeur source) tu parles du classeur initiale ou sont les onglets à copier?
Est-ce que dans ton code tu pars du principe que l'onglet paramètre est dans le classeur source?
Merci encore pour ton aide. Dès que tu m'auras confirmer j'appliquerai le code à ma macro pour tester.
Merci pour ton aide. J'ai quelques questions pour être sûre de bien comprendre ton code et ainsi pouvoir l'adapté.
Dans otn code quand tu utilise la variable CS (Classeur source) tu parles du classeur initiale ou sont les onglets à copier?
Est-ce que dans ton code tu pars du principe que l'onglet paramètre est dans le classeur source?
Merci encore pour ton aide. Dès que tu m'auras confirmer j'appliquerai le code à ma macro pour tester.
Bonjour nanoo, bonjour le forum,
J'ai essayé d'adapter le code a ton environnement... Le classeur source est bien le classeur contenant les onglets à copier. D'après ce que tu avais exposé, ce classeur ne contient pas l'onglet Parameters.
Le classeur destination est le classeur où vont être copiées les onglets. Et dans lequel se trouve l'onglet Parameters contenant la plage nommée Client Prime où se trouve la liste des onglets à copier. Si j'ai bien compris...
Donc le code boucle sur tous les onglets du classeur source et compare leur nom (avec une seconde boucle) au cellules de la plage nommée Client Prime. Si le nom de l'onglet est contenu dans la valeur d'une des cellules de la plage, l'onglet est copié dans le classeur destination.
Mais je me demande à quoi ça sert que je commente mes codes... J'ai une furieuse envie de pisser, tiens passe-moi le violon...
À plus,
ThauTheme
J'ai essayé d'adapter le code a ton environnement... Le classeur source est bien le classeur contenant les onglets à copier. D'après ce que tu avais exposé, ce classeur ne contient pas l'onglet Parameters.
Le classeur destination est le classeur où vont être copiées les onglets. Et dans lequel se trouve l'onglet Parameters contenant la plage nommée Client Prime où se trouve la liste des onglets à copier. Si j'ai bien compris...
Donc le code boucle sur tous les onglets du classeur source et compare leur nom (avec une seconde boucle) au cellules de la plage nommée Client Prime. Si le nom de l'onglet est contenu dans la valeur d'une des cellules de la plage, l'onglet est copié dans le classeur destination.
Mais je me demande à quoi ça sert que je commente mes codes... J'ai une furieuse envie de pisser, tiens passe-moi le violon...
À plus,
ThauTheme