Copier des onglets selon un range défini
nanoo79
Messages postés
34
Statut
Membre
-
ThauTheme Messages postés 1564 Statut Membre -
ThauTheme Messages postés 1564 Statut Membre -
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
- Historique des copier coller - Guide
- Lien copier - Forum Téléphones & tablettes Android
- Rouvrir les onglets fermés chrome - Guide
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