Copier des onglets selon un range défini
Fermé
nanoo79
Messages postés
34
Date d'inscription
mercredi 17 avril 2013
Statut
Membre
Dernière intervention
19 novembre 2014
-
Modifié par pijaku le 14/11/2014 à 15:47
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 19 nov. 2014 à 17:27
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 19 nov. 2014 à 17:27
A voir également:
- Copier des onglets selon un range défini
- Restaurer onglets chrome - Guide
- Copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
- Copier un disque dur - Guide
- Copier texte pdf - Guide
3 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
14 nov. 2014 à 18:25
14 nov. 2014 à 18:25
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
nanoo79
Messages postés
34
Date d'inscription
mercredi 17 avril 2013
Statut
Membre
Dernière intervention
19 novembre 2014
17 nov. 2014 à 16:43
17 nov. 2014 à 16:43
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.
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
Modifié par ThauTheme le 17/11/2014 à 17:21
Modifié par ThauTheme le 17/11/2014 à 17:21
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
nanoo79
Messages postés
34
Date d'inscription
mercredi 17 avril 2013
Statut
Membre
Dernière intervention
19 novembre 2014
19 nov. 2014 à 16:30
19 nov. 2014 à 16:30
Bonjour Thautheme,
Merci pour le code et tes détails ça fonctionne bien
Merci pour le code et tes détails ça fonctionne bien
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
19 nov. 2014 à 17:27
19 nov. 2014 à 17:27
mmm... mon violon !