Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 choix des onglets à copier

pho3nix

XLDnaute Nouveau
bonjour,
j'ai une macro qui me permet d'ouvrir un fichier et de copier/coller des feuilles entières mais sans pouvoir choisir les feuilles.

je souhaiterais y intégrer une m-box (ou input-box) entre l'ouverture de fichier2 et la copie des feuilles.
il faudrait la possibilités de taper "S--,S--,S--,S--" (si je veux un mois complet) ou "S--,S--" (si je veux que 2 semaines) ou tout autre choix.
les feuilles ainsi célectionnées seront collées dans mon classeur (fichier1).

ci-joint la macro :

Sub ChoixFichier()

'Affiche la boîte de dialogue "Ouvrir"
ChDir ThisWorkbook.Path

FichierSelect = Application.GetOpenFilename("Tous les fichiers (*.xlsx),*.xlsx", Title:=" ", MultiSelect:=False)

'On sort si aucun fichier n'a été sélectionné ou si l'utilisateur
'a cliqué sur le bouton "Annuler", ou sur la croix de fermeture.
If FichierSelect = False Then Exit Sub

'Affiche ICI la MsgBox .
'MsgBox FichierSelect ' choix des semaines


selectonglet

End Sub

Sub selectonglet()
Dim Fichier1 As String
Dim Fichier2 As String

Fichier1 = ActiveWorkbook.Name 'pilote
Workbooks.Open FichierSelect, 0, ReadOnly:=False
Fichier2 = ActiveWorkbook.Name ' fichier de données saisies

Workbooks(Fichier2).Sheets(1).Copy after:=Workbooks(Fichier1).Sheets(2) ' copie du 1er onglet du fichier selectionné dans le fichier RECAP en 3eme position
Workbooks(Fichier2).Sheets(2).Copy after:=Workbooks(Fichier1).Sheets(3) ' copie du 1er onglet du fichier selectionné dans le fichier RECAP en 4eme position
Workbooks(Fichier2).Sheets(3).Copy after:=Workbooks(Fichier1).Sheets(4) ' copie du 1er onglet du fichier selectionné dans le fichier RECAP en 5eme position
Workbooks(Fichier2).Sheets(4).Copy after:=Workbooks(Fichier1).Sheets(5) ' copie du 1er onglet du fichier selectionné dans le fichier RECAP en 6eme position
Workbooks(Fichier2).Sheets(5).Copy after:=Workbooks(Fichier1).Sheets(6) ' copie du 1er onglet du fichier selectionné dans le fichier RECAP en 7eme position
Workbooks(Fichier2).Close

Fichier1 = ActiveWorkbook.Name 'pilote
Sheets(2).Select
Range("A6").Select

End Sub
 

xUpsilon

XLDnaute Accro
Re,

Quelque chose comme ça alors ?
VB:
Dim Ongs as String
Dim TOngs (1 to 4)
Dim i, j as Integer

i = 1

Ongs = Inputbox("Entrer les semaines")
While Ongs <> ""
    TOngs(i) = Left(Ongs,3)
    If Len(Ongs) > 3
        Ongs = Right(Ongs,Len(Ongs - 4))
    Else
        Ongs = ""
    End if
    i = i + 1
Wend
If i < 4 Then
    For j = i to 4
        TOngs(j) = ""
    Next j
End if


Dans le tableau TOngs tu as toutes tes semaines comme ça, et si il n'y a que 2 semaines d'entrées les deux dernières lignes du tableau seront vides. Dis moi si ça te convient.

Bonne continuation
 

pho3nix

XLDnaute Nouveau
pas de prob, c'est déjà bien sympa de m'aider.

si je peux encore te demander un truc ?
pour faire le copier/coller j'ai ça (en jaune), problème c'est que ça ne va plus avec les nouvelles données, il continue à me copier les 5 feuilles.
tu peux m'aider ?

 

xUpsilon

XLDnaute Accro
Re,

A la place de Sheets(1), 2 etc ... il faut mettre Sheets(TOngs(1)) , Sheets(TOngs(2)) etc ...
En revanche il va falloir déclarer le tableau en public comme tu as plusieurs procédures.

Bonne continuation
 

xUpsilon

XLDnaute Accro
Au début du fichier il faut déclarer :
Public TOngs(1 To 4) (après Public FichierSelect)
Cela veut dire que le tableau TOngs sera accessible/valable pour toutes les fonctions définies dans ce module.

Bonne continuation
 

xUpsilon

XLDnaute Accro
Re,

Non mais là le souci c'est que tu cherches à appeler Sheets(TOngs(5)), sauf que je l'ai dimensionné avec 4 lignes (TOngs (1 To 4)). Si tu veux appeler/as besoin de TOngs(5) il te suffit de changer TOngs(1 To 5) et dans la macro que je t'ai donné plus haut remplacer j = i to 4 par j = i to 5

Bonne continuation
 

pho3nix

XLDnaute Nouveau
ça marche pour 5, mais si j'en cherche moin ça bug.
je suppose que je dois modifier : TOngs(1)
Workbooks(Fichier2).Sheets(TOngs(1)).Copy after:=Workbooks(Fichier1).Sheets("recap")

par une autre valeur : TOngs(x)
Workbooks(Fichier2).Sheets(TOngs(1)).Copy after:=Workbooks(Fichier1).Sheets("recap")

pour que le programme sache le nombre de feuille à chercher.

je ne sais pas si je m'exprime bien, désolé
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…