Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

extraire feuilles vers un nouveau classeur grace à un usf

19 réponses
Avatar
magic-dd
bonjour

je possede un classeur avec x onglets

j'ai reussi a force de recherche =E0 lister tous les onglets de mon classeu=
r dans un userform

mon but est de selectionner certains onglets list=E9s dans ce userform et q=
u'a la validation cela les copie dans un nouveau classeur

voici mon code

Private Sub UserForm_Activate()
For Each sh In Worksheets
Next sh
End Sub

merci

9 réponses

1 2
Avatar
Jacky
Bonjour Denis,

Joli, ceci
ThisWorkbook.Sheets(T).Copy


J'ignorais que l'on pouvait copier une série de feuille sous forme de tableau en une fois
Merci
--
Salutations
JJ


"MichD" a écrit dans le message de news: k31okm$drm$
Private Sub CommandButton1_Click()
Dim A As Integer, T(), B As Integer
Dim Chemin As String

Chemin = "D:Anglais" 'Le chemin du répertoire où
'tu veux enregistrer ton fichier.
'Avec le listbox
With Me.ListBox1
If .ListIndex = 0 And .Selected(0) = False Then Exit Sub
Application.ScreenUpdating = False
'Pour chaque item du listbox
For A = 0 To .ListCount - 1
'si l'item est sélectionné
If .Selected(A) = True Then
'Extrait le nom de la feuille
ReDim Preserve T(B)
T(B) = .List(A)
B = B + 1
End If
Next
ThisWorkbook.Sheets(T).Copy
Application.Dialogs(xlDialogSaveAs).Show Chemin & ActiveWorkbook.Name
If ActiveWorkbook.Saved Then
ActiveWorkbook.Close False
End If

End With
ThisWorkbook.Activate
Application.ScreenUpdating = True
End Sub



Avatar
MichD
Ceci c'est la même chose que cela :

ThisWorkbook.Sheets(T).Copy

OU

ThisWorkbook.Sheets(Array("Feuil1","Feuil3")).Copy
Tu connais probablement plus cette approche!
Avatar
MichD
http://cjoint.com/?BIpokLPVfGC
Avatar
Jacky
Re..
Tu connais probablement plus cette approche!


Oui tout à fait, mais est-ce adaptable à une sélection ? (comme dans l'exemple qui nous préoccupe)

--
Salutations
JJ


"MichD" a écrit dans le message de news: k31r4p$jkp$
Ceci c'est la même chose que cela :

ThisWorkbook.Sheets(T).Copy

OU

ThisWorkbook.Sheets(Array("Feuil1","Feuil3")).Copy
Tu connais probablement plus cette approche!


Avatar
MichD
| est-ce adaptable à une sélection ?

Je ne comprends pas vraiment la question...
mais ceci est acceptable...une autre approche!

Dans la boucle, si l'item de la listbox est sélectionné on peut
utiliser ceci : cela suppose que le classeur actif est celui qui
contient les feuilles à copier...

'---------------------------------------------------------
Private Sub CommandButton1_Click()
Dim A As Integer
Dim Chemin As String

Chemin = "D:Anglais" 'Le chemin du répertoire où
'tu veux enregistrer ton fichier.
'Avec le listbox
With Me.ListBox1
If .ListIndex = 0 And .Selected(0) = False Then Exit Sub
Application.ScreenUpdating = False
'Pour chaque item du listbox
For A = 0 To .ListCount - 1
'si l'item est sélectionné
If .Selected(A) = True Then
'Extrait le nom de la feuille
Sheets(.List(A)).Select False '<<<<============ End If
Next
ActiveWindow.SelectedSheets.Copy '<<<<============ Application.Dialogs(xlDialogSaveAs).Show Chemin & ActiveWorkbook.Name
If ActiveWorkbook.Saved Then
ActiveWorkbook.Close False
End If
End With
ThisWorkbook.Activate
Application.ScreenUpdating = True
End Sub
'---------------------------------------------------------

Est-ce que tu voulais dire?
Avatar
magic-dd
Re

excellent

je l'ai adapté pour en faire un xla

le seule truc que j'ai changé car sinon erreur 9 est le thisworkbook(B) e n activeworkbook

sinon nickel
merci !!!!!
Avatar
Jacky
Re..
Je ne comprends pas vraiment la question...


Laisse tomber.
C'est mon neurone tordu qui cherche des complications, il voulait se retrouver avec des
Array(t(1),t(3).....).Copy(impensable!)
La copie par un tableau est nouveau pour moi, mais il convient parfaitement
Merci
--
Salutations
JJ


"MichD" a écrit dans le message de news: k32266$4tl$

| est-ce adaptable à une sélection ?

Je ne comprends pas vraiment la question...
mais ceci est acceptable...une autre approche!

Dans la boucle, si l'item de la listbox est sélectionné on peut
utiliser ceci : cela suppose que le classeur actif est celui qui
contient les feuilles à copier...

'---------------------------------------------------------
Private Sub CommandButton1_Click()
Dim A As Integer
Dim Chemin As String

Chemin = "D:Anglais" 'Le chemin du répertoire où
'tu veux enregistrer ton fichier.
'Avec le listbox
With Me.ListBox1
If .ListIndex = 0 And .Selected(0) = False Then Exit Sub
Application.ScreenUpdating = False
'Pour chaque item du listbox
For A = 0 To .ListCount - 1
'si l'item est sélectionné
If .Selected(A) = True Then
'Extrait le nom de la feuille
Sheets(.List(A)).Select False '<<<<============ > End If
Next
ActiveWindow.SelectedSheets.Copy '<<<<============ > Application.Dialogs(xlDialogSaveAs).Show Chemin & ActiveWorkbook.Name
If ActiveWorkbook.Saved Then
ActiveWorkbook.Close False
End If
End With
ThisWorkbook.Activate
Application.ScreenUpdating = True
End Sub
'---------------------------------------------------------

Est-ce que tu voulais dire?

Avatar
MichD
Tu peux faire ceci si tu veux :

'----------------------------------
Sub Test()
Dim T(0 To 1)

T(0) = "Feuil1"
T(1) = "Feuil3"

Sheets(Array(T(0), T(1))).Copy

End Sub
'----------------------------------
Avatar
Jacky
Certes, mais dans le cas présent, il n'y a pas photos entre
Sheets(Array(T(0), T(1)),..........).Copy


et
..Sheets(T).Copy

--
Salutations
JJ


"MichD" a écrit dans le message de news: k325m5$d44$
Tu peux faire ceci si tu veux :

'----------------------------------
Sub Test()
Dim T(0 To 1)

T(0) = "Feuil1"
T(1) = "Feuil3"

Sheets(Array(T(0), T(1))).Copy

End Sub
'----------------------------------

1 2