OVH Cloud OVH Cloud

re:copie onglets

36 réponses
Avatar
ga51
Merci Daniel pour ta réponse,

mais j'ai une erreur sur la ligne sheets(.List(i)).copy: n'appartient
pas à la sélection.

Merci encore pour ton aide,

Cordialement.

10 réponses

1 2 3 4
Avatar
Daniel
Je pense que le code suivant doit le faire :

Dans Private Sub UserForm_Initialize()
ajouter :
ListBox1.ListIndex = -1
et le test (à ajouter après le userform1.hide dans mon code)
Do While ListBox1.ListIndex = -1
MsgBox "Faut choisir quelque chose !"
Loop

Cordialement.
Daniel

"ga51" a écrit dans le message de news:

Super
Merci beaucoup pour ta disponibilité

Dernière question:

Comment verifier si la sélection a bien été faite dans la listbox.
J'ai testé:
If IsNull(ListBox1) Then
reponse = MsgBox("vous n'avez rien sélectionné, voulez-vous poursuivre ?",
vbYesNo)
If reponse = 6 Then
MsgBox "Ok, Alors Sélectionnez une Option en cliquant dessus ! On
Recommence"
Else
MsgBox "OK ! On arrête alors"
UserForm44.Hide
End If
Else ...

mais cela ne fonctionne qu'avec la propriété listbox sur select single et
plus sur select multi.

Petit plus, peut-on copier les onglets dans l'ordre de la listbox ?
car le dernier copié se met avant l'autre. Normal je pense à cause du
Before dans la copie ?


Après, c'est promis, j'arrête de te solliciter!!


Merci encore pour tout.

Cordialement

Ga51

Cordialement

Ga51



En remplaçant :
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
par :
With Workbooks("LeNomQueTuVeux.xls")
Application.DisplayAlerts = False
.Sheets("Feuil1").Delete
.Sheets("Feuil2").Delete
.Sheets("Feuil3").Delete
Application.DisplayAlerts = True
.Save
.Close
End With
si tes classeurs vierges ont trois feuilles.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:


Merci beaucoup pour ta réponse rapide,

Cela fonctionne au poil avec ces quelques modifs:

Private Sub CommandButton1_Click()

Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"

UserForm1.Show
End Sub


Sub CommandButton1_Click()
UserForm1.Hide

Workbooks(1).Activate


With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)


Workbooks(1).Activate 'active le classeur source

End If

Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub


Une dernière chose, comment peut-on supprimer les feuilles vides qui sont
par défaut dans le classeur créé ? pour finioler !! pour éviter d'envoyer
un fichier avec des onglets vides.

Merci encore pour tout

Cordialement

Ga51



En plein dans le mille :
Code du bouton de la feuille "Feuil4" :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(2).Activate 'active le classeur source
UserForm1.Show
End Sub

et le code du bouton de l'userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
Workbooks(2).Activate 'active le classeur source
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Le code ne fonctionnait que parce que les deux classeurs avaient les
mêmes noms de feuilles.
Cordialement.
Daniel


"ga51" a écrit dans le message de news:



J'avais déjà supprimé la ligne MsgBox .list(i).

De quel nom affiché parles-tu ? de celui de l'onglet sélectionné ? si
oui, c'est effectivement le nom de l'onglet qui fait parti de mon
classeur d'origine.

Ne serait-ce pas un problème de classeur actif ?
Lors de la copie, quel classeur doit être actif, le classeur d'origine
ou le classeur de sauvegarde ?
L'instruction Workbooks(1).Activate correspond à quel classeur ?

Merci encore de t'occuper de "mon cas"

Cordialement.

Ga51




Si tu n'as pas ôté la ligne "msgbox .list(i)", le nom affiché
appartient-il à ton classeur origine ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%



Merci beaucoup pour ta réponse
C'est exactement ce que je voulais

Cela fonctionne impec avec un classeur test.

Mais j'ai une erreur: "L'indice n'appartient pas à la sélection" lors
de la copie du 2ième onglet sélectionné sur mon classeur. Le 1er
onglet sélectionné se copie parfaitement.
Une exécution pas à pas m'arrête sur la ligne lors de la 2ième
tentative de copie:
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)

Mes onglets ne sont pas protégés, ils ont simplement des boutons de
contrôles et des mise en formes.
Pourquoi ce bug ?

Cordialement

Ga51




Bonjour.
Code du bouton de Feuil3 :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(1).Activate
UserForm1.Show
End Sub

Code du bouton du userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox .List(i)
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Cordialement.
Daniel
"ga51" a écrit dans le message de news:
O9$




Merci pour ton exemple, il fonctionne super bien en effet.

Pour aller plus loin, en fait je voulais sauvegarder les onglets
sélectionnés dans un nouveau classeur et le renommer avec:
ActiveWorkbook.SaveAs Filename:= ...etc.. (pour envoi futur par
mail) plutôt que d'envoyer ces onglets dans un classeur déjà
existant.
Car dans ma configuration de travail, cela sera impossible.
Pourrais-tu m'aider pour la syntaxe ?

Merci beaucoup de ton aide

Cordialement.

Ga51





J'ai créé un nouveau classeur minimal avec une userform et une
listbox. Ca fonctionne sans problème. Je te l'envoie.
http://cjoint.com/?fqwWPpRgFp
Cordialement.
Daniel
"ga51" a écrit dans le message de news:






Merci d'avoir insister !
En effet cela fonctionne (je n'avais pas le classeur cible
ouvert!)...
Mais si je le transpose dans ma macro, cela ne fonctionne pas.
Sans doute ce sont les propriétés de ma listbox, créée dans un
userform, qui ne correspondent pas ?
j'ai mis les propriétés à MultiSelect, je remplis la listbox avec
Additem pour l'alimenter du noms des onglets.

Qq'un pour m'aider svp

Merci beaucoup

Cordialement.

Ga51







Bonjour,

pas de pb pour moi non plus avec le fichier de Daniel alors que
j'ai la même config que toi. Il doit y avoir autre chose.
Fais une éxécution en mode pas à pas du fichier qui t'a été
transmis et regarde ce que ca donne.

A+







J'ai Excel 2000 sur win xp pro

Merci en tout cas pour tes réponses.

Cordialement

Ga51







Problème de version ?
La listbox est configurée de telle manière qu'il faut
maintenir la touche CTRL enfoncée pour faire une seconde
sélection.
Sinon il va falloir que les VRAIS gourous se penchent sur ton
problème.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:







Merci Daniel pour le classeur de test.
Mais j'ai toujours la même erreur sur ton classeur.(l'objet
n'appartient pas a la selection)
De plus dans la msgbox, il n'y a qu'1 seule feuille et non
toutes les feuilles sélectionnées.

Manquerait-il qqchose ?

Cordialement

Ga51







Je t'envoie le classeur qui m'a servi à faire le test.
http://cjoint.com/?fqqZYIv66K
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%







Bonjour,

Merci pour ta réponse,

Oui tous les onglets sont dans le classeur ouvert et donc
actif.

Cordialement

Ga








Bonjour.
J'ai pas trop étudié ton code; est-ce que la feuille
copiée fait partie du classeur actif ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%








Merci Daniel pour ta réponse,

mais j'ai une erreur sur la ligne sheets(.List(i)).copy:
n'appartient pas à la sélection.

Merci encore pour ton aide,

Cordialement.











































Avatar
ga51
Merci beaucoup Daniel, je fais essayé.

Pour l'ordre des onglets dans le classeur, peut-on faire quelque chose ?
(pour respecter l'ordre de la listbox)

Merci pour tout

Cordialement

Ga51

Je pense que le code suivant doit le faire :

Dans Private Sub UserForm_Initialize()
ajouter :
ListBox1.ListIndex = -1
et le test (à ajouter après le userform1.hide dans mon code)
Do While ListBox1.ListIndex = -1
MsgBox "Faut choisir quelque chose !"
Loop

Cordialement.
Daniel

"ga51" a écrit dans le message de news:


Super
Merci beaucoup pour ta disponibilité

Dernière question:

Comment verifier si la sélection a bien été faite dans la listbox.
J'ai testé:
If IsNull(ListBox1) Then
reponse = MsgBox("vous n'avez rien sélectionné, voulez-vous poursuivre ?",
vbYesNo)
If reponse = 6 Then
MsgBox "Ok, Alors Sélectionnez une Option en cliquant dessus ! On
Recommence"
Else
MsgBox "OK ! On arrête alors"
UserForm44.Hide
End If
Else ...

mais cela ne fonctionne qu'avec la propriété listbox sur select single et
plus sur select multi.

Petit plus, peut-on copier les onglets dans l'ordre de la listbox ?
car le dernier copié se met avant l'autre. Normal je pense à cause du
Before dans la copie ?


Après, c'est promis, j'arrête de te solliciter!!


Merci encore pour tout.

Cordialement

Ga51

Cordialement

Ga51




En remplaçant :
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
par :
With Workbooks("LeNomQueTuVeux.xls")
Application.DisplayAlerts = False
.Sheets("Feuil1").Delete
.Sheets("Feuil2").Delete
.Sheets("Feuil3").Delete
Application.DisplayAlerts = True
.Save
.Close
End With
si tes classeurs vierges ont trois feuilles.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:



Merci beaucoup pour ta réponse rapide,

Cela fonctionne au poil avec ces quelques modifs:

Private Sub CommandButton1_Click()


Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"

UserForm1.Show
End Sub


Sub CommandButton1_Click()
UserForm1.Hide

Workbooks(1).Activate



With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)


Workbooks(1).Activate 'active le classeur source

End If


Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub


Une dernière chose, comment peut-on supprimer les feuilles vides qui sont
par défaut dans le classeur créé ? pour finioler !! pour éviter d'envoyer
un fichier avec des onglets vides.

Merci encore pour tout

Cordialement

Ga51




En plein dans le mille :
Code du bouton de la feuille "Feuil4" :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(2).Activate 'active le classeur source
UserForm1.Show
End Sub

et le code du bouton de l'userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
Workbooks(2).Activate 'active le classeur source
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Le code ne fonctionnait que parce que les deux classeurs avaient les
mêmes noms de feuilles.
Cordialement.
Daniel


"ga51" a écrit dans le message de news:




J'avais déjà supprimé la ligne MsgBox .list(i).

De quel nom affiché parles-tu ? de celui de l'onglet sélectionné ? si
oui, c'est effectivement le nom de l'onglet qui fait parti de mon
classeur d'origine.

Ne serait-ce pas un problème de classeur actif ?
Lors de la copie, quel classeur doit être actif, le classeur d'origine
ou le classeur de sauvegarde ?
L'instruction Workbooks(1).Activate correspond à quel classeur ?

Merci encore de t'occuper de "mon cas"

Cordialement.

Ga51





Si tu n'as pas ôté la ligne "msgbox .list(i)", le nom affiché
appartient-il à ton classeur origine ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%




Merci beaucoup pour ta réponse
C'est exactement ce que je voulais

Cela fonctionne impec avec un classeur test.

Mais j'ai une erreur: "L'indice n'appartient pas à la sélection" lors
de la copie du 2ième onglet sélectionné sur mon classeur. Le 1er
onglet sélectionné se copie parfaitement.
Une exécution pas à pas m'arrête sur la ligne lors de la 2ième
tentative de copie:
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)

Mes onglets ne sont pas protégés, ils ont simplement des boutons de
contrôles et des mise en formes.
Pourquoi ce bug ?

Cordialement

Ga51





Bonjour.
Code du bouton de Feuil3 :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(1).Activate
UserForm1.Show
End Sub

Code du bouton du userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox .List(i)
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Cordialement.
Daniel
"ga51" a écrit dans le message de news:
O9$





Merci pour ton exemple, il fonctionne super bien en effet.

Pour aller plus loin, en fait je voulais sauvegarder les onglets
sélectionnés dans un nouveau classeur et le renommer avec:
ActiveWorkbook.SaveAs Filename:= ...etc.. (pour envoi futur par
mail) plutôt que d'envoyer ces onglets dans un classeur déjà
existant.
Car dans ma configuration de travail, cela sera impossible.
Pourrais-tu m'aider pour la syntaxe ?

Merci beaucoup de ton aide

Cordialement.

Ga51






J'ai créé un nouveau classeur minimal avec une userform et une
listbox. Ca fonctionne sans problème. Je te l'envoie.
http://cjoint.com/?fqwWPpRgFp
Cordialement.
Daniel
"ga51" a écrit dans le message de news:







Merci d'avoir insister !
En effet cela fonctionne (je n'avais pas le classeur cible
ouvert!)...
Mais si je le transpose dans ma macro, cela ne fonctionne pas.
Sans doute ce sont les propriétés de ma listbox, créée dans un
userform, qui ne correspondent pas ?
j'ai mis les propriétés à MultiSelect, je remplis la listbox avec
Additem pour l'alimenter du noms des onglets.

Qq'un pour m'aider svp

Merci beaucoup

Cordialement.

Ga51








Bonjour,

pas de pb pour moi non plus avec le fichier de Daniel alors que
j'ai la même config que toi. Il doit y avoir autre chose.
Fais une éxécution en mode pas à pas du fichier qui t'a été
transmis et regarde ce que ca donne.

A+








J'ai Excel 2000 sur win xp pro

Merci en tout cas pour tes réponses.

Cordialement

Ga51








Problème de version ?
La listbox est configurée de telle manière qu'il faut
maintenir la touche CTRL enfoncée pour faire une seconde
sélection.
Sinon il va falloir que les VRAIS gourous se penchent sur ton
problème.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:








Merci Daniel pour le classeur de test.
Mais j'ai toujours la même erreur sur ton classeur.(l'objet
n'appartient pas a la selection)
De plus dans la msgbox, il n'y a qu'1 seule feuille et non
toutes les feuilles sélectionnées.

Manquerait-il qqchose ?

Cordialement

Ga51








Je t'envoie le classeur qui m'a servi à faire le test.
http://cjoint.com/?fqqZYIv66K
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%








Bonjour,

Merci pour ta réponse,

Oui tous les onglets sont dans le classeur ouvert et donc
actif.

Cordialement

Ga









Bonjour.
J'ai pas trop étudié ton code; est-ce que la feuille
copiée fait partie du classeur actif ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%









Merci Daniel pour ta réponse,

mais j'ai une erreur sur la ligne sheets(.List(i)).copy:
n'appartient pas à la sélection.

Merci encore pour ton aide,

Cordialement.













































Avatar
ga51
Bonsoir,

en fait, dans la macro, si on ne sélectionne rien, il y a un bug car le
programme supprime les onglets et s'arrête au dernier car un classeur
doit obligatoirement avoir un onglet minimum.(puisqu'il ne trouve rien à
copier).

La boucle do while avec ListIndex ne fonctionne pas...
peut-être à cause de la propriété multi de la listbox ??

Merci de l'aide

Cordialement

Ga51


Merci beaucoup Daniel, je fais essayé.

Pour l'ordre des onglets dans le classeur, peut-on faire quelque chose ?
(pour respecter l'ordre de la listbox)

Merci pour tout

Cordialement

Ga51


Je pense que le code suivant doit le faire :

Dans Private Sub UserForm_Initialize()
ajouter :
ListBox1.ListIndex = -1
et le test (à ajouter après le userform1.hide dans mon code)
Do While ListBox1.ListIndex = -1
MsgBox "Faut choisir quelque chose !"
Loop

Cordialement.
Daniel

"ga51" a écrit dans le message de news:


Super
Merci beaucoup pour ta disponibilité

Dernière question:

Comment verifier si la sélection a bien été faite dans la listbox.
J'ai testé:
If IsNull(ListBox1) Then
reponse = MsgBox("vous n'avez rien sélectionné, voulez-vous
poursuivre ?", vbYesNo)
If reponse = 6 Then
MsgBox "Ok, Alors Sélectionnez une Option en cliquant dessus ! On
Recommence"
Else
MsgBox "OK ! On arrête alors"
UserForm44.Hide
End If
Else ...

mais cela ne fonctionne qu'avec la propriété listbox sur select
single et plus sur select multi.

Petit plus, peut-on copier les onglets dans l'ordre de la listbox ?
car le dernier copié se met avant l'autre. Normal je pense à cause du
Before dans la copie ?


Après, c'est promis, j'arrête de te solliciter!!


Merci encore pour tout.

Cordialement

Ga51

Cordialement

Ga51




En remplaçant :
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
par :
With Workbooks("LeNomQueTuVeux.xls")
Application.DisplayAlerts = False
.Sheets("Feuil1").Delete
.Sheets("Feuil2").Delete
.Sheets("Feuil3").Delete
Application.DisplayAlerts = True
.Save
.Close
End With
si tes classeurs vierges ont trois feuilles.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:



Merci beaucoup pour ta réponse rapide,

Cela fonctionne au poil avec ces quelques modifs:

Private Sub CommandButton1_Click()


Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"



UserForm1.Show
End Sub



Sub CommandButton1_Click()
UserForm1.Hide

Workbooks(1).Activate



With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)



Workbooks(1).Activate 'active le classeur source

End If


Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub



Une dernière chose, comment peut-on supprimer les feuilles vides
qui sont par défaut dans le classeur créé ? pour finioler !! pour
éviter d'envoyer un fichier avec des onglets vides.

Merci encore pour tout

Cordialement

Ga51




En plein dans le mille :
Code du bouton de la feuille "Feuil4" :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(2).Activate 'active le classeur source
UserForm1.Show
End Sub

et le code du bouton de l'userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
Workbooks(2).Activate 'active le classeur source
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Le code ne fonctionnait que parce que les deux classeurs avaient
les mêmes noms de feuilles.
Cordialement.
Daniel


"ga51" a écrit dans le message de news:




J'avais déjà supprimé la ligne MsgBox .list(i).

De quel nom affiché parles-tu ? de celui de l'onglet sélectionné
? si oui, c'est effectivement le nom de l'onglet qui fait parti
de mon classeur d'origine.

Ne serait-ce pas un problème de classeur actif ?
Lors de la copie, quel classeur doit être actif, le classeur
d'origine ou le classeur de sauvegarde ?
L'instruction Workbooks(1).Activate correspond à quel classeur ?

Merci encore de t'occuper de "mon cas"

Cordialement.

Ga51





Si tu n'as pas ôté la ligne "msgbox .list(i)", le nom affiché
appartient-il à ton classeur origine ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%




Merci beaucoup pour ta réponse
C'est exactement ce que je voulais

Cela fonctionne impec avec un classeur test.

Mais j'ai une erreur: "L'indice n'appartient pas à la
sélection" lors de la copie du 2ième onglet sélectionné sur mon
classeur. Le 1er onglet sélectionné se copie parfaitement.
Une exécution pas à pas m'arrête sur la ligne lors de la 2ième
tentative de copie:
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)

Mes onglets ne sont pas protégés, ils ont simplement des
boutons de contrôles et des mise en formes.
Pourquoi ce bug ?

Cordialement

Ga51





Bonjour.
Code du bouton de Feuil3 :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(1).Activate
UserForm1.Show
End Sub

Code du bouton du userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox .List(i)
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Cordialement.
Daniel
"ga51" a écrit dans le message de news:
O9$





Merci pour ton exemple, il fonctionne super bien en effet.

Pour aller plus loin, en fait je voulais sauvegarder les
onglets sélectionnés dans un nouveau classeur et le renommer
avec:
ActiveWorkbook.SaveAs Filename:= ...etc.. (pour envoi futur
par mail) plutôt que d'envoyer ces onglets dans un classeur
déjà existant.
Car dans ma configuration de travail, cela sera impossible.
Pourrais-tu m'aider pour la syntaxe ?

Merci beaucoup de ton aide

Cordialement.

Ga51






J'ai créé un nouveau classeur minimal avec une userform et
une listbox. Ca fonctionne sans problème. Je te l'envoie.
http://cjoint.com/?fqwWPpRgFp
Cordialement.
Daniel
"ga51" a écrit dans le message de news:







Merci d'avoir insister !
En effet cela fonctionne (je n'avais pas le classeur cible
ouvert!)...
Mais si je le transpose dans ma macro, cela ne fonctionne pas.
Sans doute ce sont les propriétés de ma listbox, créée dans
un userform, qui ne correspondent pas ?
j'ai mis les propriétés à MultiSelect, je remplis la
listbox avec Additem pour l'alimenter du noms des onglets.

Qq'un pour m'aider svp

Merci beaucoup

Cordialement.

Ga51








Bonjour,

pas de pb pour moi non plus avec le fichier de Daniel
alors que j'ai la même config que toi. Il doit y avoir
autre chose.
Fais une éxécution en mode pas à pas du fichier qui t'a
été transmis et regarde ce que ca donne.

A+








J'ai Excel 2000 sur win xp pro

Merci en tout cas pour tes réponses.

Cordialement

Ga51








Problème de version ?
La listbox est configurée de telle manière qu'il faut
maintenir la touche CTRL enfoncée pour faire une seconde
sélection.
Sinon il va falloir que les VRAIS gourous se penchent
sur ton problème.
Cordialement.
Daniel
"ga51" a écrit dans le message de
news:







Merci Daniel pour le classeur de test.
Mais j'ai toujours la même erreur sur ton
classeur.(l'objet n'appartient pas a la selection)
De plus dans la msgbox, il n'y a qu'1 seule feuille et
non toutes les feuilles sélectionnées.

Manquerait-il qqchose ?

Cordialement

Ga51








Je t'envoie le classeur qui m'a servi à faire le test.
http://cjoint.com/?fqqZYIv66K
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %








Bonjour,

Merci pour ta réponse,

Oui tous les onglets sont dans le classeur ouvert et
donc actif.

Cordialement

Ga









Bonjour.
J'ai pas trop étudié ton code; est-ce que la feuille
copiée fait partie du classeur actif ?
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %









Merci Daniel pour ta réponse,

mais j'ai une erreur sur la ligne
sheets(.List(i)).copy: n'appartient pas à la
sélection.

Merci encore pour ton aide,

Cordialement.
















































Avatar
Daniel
Bonjour.
Il faut faire une boucle au niveau de la sélection et n'en sortir que si une
sélection est faite.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
eKF%
Bonsoir,

en fait, dans la macro, si on ne sélectionne rien, il y a un bug car le
programme supprime les onglets et s'arrête au dernier car un classeur doit
obligatoirement avoir un onglet minimum.(puisqu'il ne trouve rien à
copier).

La boucle do while avec ListIndex ne fonctionne pas...
peut-être à cause de la propriété multi de la listbox ??

Merci de l'aide

Cordialement

Ga51


Merci beaucoup Daniel, je fais essayé.

Pour l'ordre des onglets dans le classeur, peut-on faire quelque chose ?
(pour respecter l'ordre de la listbox)

Merci pour tout

Cordialement

Ga51


Je pense que le code suivant doit le faire :

Dans Private Sub UserForm_Initialize()
ajouter :
ListBox1.ListIndex = -1
et le test (à ajouter après le userform1.hide dans mon code)
Do While ListBox1.ListIndex = -1
MsgBox "Faut choisir quelque chose !"
Loop

Cordialement.
Daniel

"ga51" a écrit dans le message de news:


Super
Merci beaucoup pour ta disponibilité

Dernière question:

Comment verifier si la sélection a bien été faite dans la listbox.
J'ai testé:
If IsNull(ListBox1) Then
reponse = MsgBox("vous n'avez rien sélectionné, voulez-vous poursuivre
?", vbYesNo)
If reponse = 6 Then
MsgBox "Ok, Alors Sélectionnez une Option en cliquant dessus ! On
Recommence"
Else
MsgBox "OK ! On arrête alors"
UserForm44.Hide
End If
Else ...

mais cela ne fonctionne qu'avec la propriété listbox sur select single
et plus sur select multi.

Petit plus, peut-on copier les onglets dans l'ordre de la listbox ?
car le dernier copié se met avant l'autre. Normal je pense à cause du
Before dans la copie ?


Après, c'est promis, j'arrête de te solliciter!!


Merci encore pour tout.

Cordialement

Ga51

Cordialement

Ga51




En remplaçant :
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
par :
With Workbooks("LeNomQueTuVeux.xls")
Application.DisplayAlerts = False
.Sheets("Feuil1").Delete
.Sheets("Feuil2").Delete
.Sheets("Feuil3").Delete
Application.DisplayAlerts = True
.Save
.Close
End With
si tes classeurs vierges ont trois feuilles.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:



Merci beaucoup pour ta réponse rapide,

Cela fonctionne au poil avec ces quelques modifs:

Private Sub CommandButton1_Click()


Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"



UserForm1.Show
End Sub



Sub CommandButton1_Click()
UserForm1.Hide

Workbooks(1).Activate



With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)



Workbooks(1).Activate 'active le classeur source

End If


Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub



Une dernière chose, comment peut-on supprimer les feuilles vides qui
sont par défaut dans le classeur créé ? pour finioler !! pour éviter
d'envoyer un fichier avec des onglets vides.

Merci encore pour tout

Cordialement

Ga51




En plein dans le mille :
Code du bouton de la feuille "Feuil4" :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(2).Activate 'active le classeur source
UserForm1.Show
End Sub

et le code du bouton de l'userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
Workbooks(2).Activate 'active le classeur source
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Le code ne fonctionnait que parce que les deux classeurs avaient les
mêmes noms de feuilles.
Cordialement.
Daniel


"ga51" a écrit dans le message de news:




J'avais déjà supprimé la ligne MsgBox .list(i).

De quel nom affiché parles-tu ? de celui de l'onglet sélectionné ?
si oui, c'est effectivement le nom de l'onglet qui fait parti de
mon classeur d'origine.

Ne serait-ce pas un problème de classeur actif ?
Lors de la copie, quel classeur doit être actif, le classeur
d'origine ou le classeur de sauvegarde ?
L'instruction Workbooks(1).Activate correspond à quel classeur ?

Merci encore de t'occuper de "mon cas"

Cordialement.

Ga51





Si tu n'as pas ôté la ligne "msgbox .list(i)", le nom affiché
appartient-il à ton classeur origine ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%




Merci beaucoup pour ta réponse
C'est exactement ce que je voulais

Cela fonctionne impec avec un classeur test.

Mais j'ai une erreur: "L'indice n'appartient pas à la sélection"
lors de la copie du 2ième onglet sélectionné sur mon classeur. Le
1er onglet sélectionné se copie parfaitement.
Une exécution pas à pas m'arrête sur la ligne lors de la 2ième
tentative de copie:
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)

Mes onglets ne sont pas protégés, ils ont simplement des boutons
de contrôles et des mise en formes.
Pourquoi ce bug ?

Cordialement

Ga51





Bonjour.
Code du bouton de Feuil3 :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(1).Activate
UserForm1.Show
End Sub

Code du bouton du userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox .List(i)
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Cordialement.
Daniel
"ga51" a écrit dans le message de news:
O9$





Merci pour ton exemple, il fonctionne super bien en effet.

Pour aller plus loin, en fait je voulais sauvegarder les
onglets sélectionnés dans un nouveau classeur et le renommer
avec:
ActiveWorkbook.SaveAs Filename:= ...etc.. (pour envoi futur par
mail) plutôt que d'envoyer ces onglets dans un classeur déjà
existant.
Car dans ma configuration de travail, cela sera impossible.
Pourrais-tu m'aider pour la syntaxe ?

Merci beaucoup de ton aide

Cordialement.

Ga51






J'ai créé un nouveau classeur minimal avec une userform et une
listbox. Ca fonctionne sans problème. Je te l'envoie.
http://cjoint.com/?fqwWPpRgFp
Cordialement.
Daniel
"ga51" a écrit dans le message de news:







Merci d'avoir insister !
En effet cela fonctionne (je n'avais pas le classeur cible
ouvert!)...
Mais si je le transpose dans ma macro, cela ne fonctionne
pas.
Sans doute ce sont les propriétés de ma listbox, créée dans
un userform, qui ne correspondent pas ?
j'ai mis les propriétés à MultiSelect, je remplis la listbox
avec Additem pour l'alimenter du noms des onglets.

Qq'un pour m'aider svp

Merci beaucoup

Cordialement.

Ga51








Bonjour,

pas de pb pour moi non plus avec le fichier de Daniel alors
que j'ai la même config que toi. Il doit y avoir autre
chose.
Fais une éxécution en mode pas à pas du fichier qui t'a été
transmis et regarde ce que ca donne.

A+








J'ai Excel 2000 sur win xp pro

Merci en tout cas pour tes réponses.

Cordialement

Ga51








Problème de version ?
La listbox est configurée de telle manière qu'il faut
maintenir la touche CTRL enfoncée pour faire une seconde
sélection.
Sinon il va falloir que les VRAIS gourous se penchent sur
ton problème.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:








Merci Daniel pour le classeur de test.
Mais j'ai toujours la même erreur sur ton
classeur.(l'objet n'appartient pas a la selection)
De plus dans la msgbox, il n'y a qu'1 seule feuille et
non toutes les feuilles sélectionnées.

Manquerait-il qqchose ?

Cordialement

Ga51








Je t'envoie le classeur qui m'a servi à faire le test.
http://cjoint.com/?fqqZYIv66K
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %








Bonjour,

Merci pour ta réponse,

Oui tous les onglets sont dans le classeur ouvert et
donc actif.

Cordialement

Ga









Bonjour.
J'ai pas trop étudié ton code; est-ce que la feuille
copiée fait partie du classeur actif ?
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %









Merci Daniel pour ta réponse,

mais j'ai une erreur sur la ligne
sheets(.List(i)).copy: n'appartient pas à la
sélection.

Merci encore pour ton aide,

Cordialement.


















































Avatar
Daniel
Bonjour.
Remplace la ligne copy par :
Sheets(.List(i)).Copy after:=Workbooks("LeNomQueTuVeux.xls").Sheets.Count
Cordialement.
Daniel
"ga51" a écrit dans le message de news:

Merci beaucoup Daniel, je fais essayé.

Pour l'ordre des onglets dans le classeur, peut-on faire quelque chose ?
(pour respecter l'ordre de la listbox)

Merci pour tout

Cordialement

Ga51

Je pense que le code suivant doit le faire :

Dans Private Sub UserForm_Initialize()
ajouter :
ListBox1.ListIndex = -1
et le test (à ajouter après le userform1.hide dans mon code)
Do While ListBox1.ListIndex = -1
MsgBox "Faut choisir quelque chose !"
Loop

Cordialement.
Daniel

"ga51" a écrit dans le message de news:


Super
Merci beaucoup pour ta disponibilité

Dernière question:

Comment verifier si la sélection a bien été faite dans la listbox.
J'ai testé:
If IsNull(ListBox1) Then
reponse = MsgBox("vous n'avez rien sélectionné, voulez-vous poursuivre
?", vbYesNo)
If reponse = 6 Then
MsgBox "Ok, Alors Sélectionnez une Option en cliquant dessus ! On
Recommence"
Else
MsgBox "OK ! On arrête alors"
UserForm44.Hide
End If
Else ...

mais cela ne fonctionne qu'avec la propriété listbox sur select single et
plus sur select multi.

Petit plus, peut-on copier les onglets dans l'ordre de la listbox ?
car le dernier copié se met avant l'autre. Normal je pense à cause du
Before dans la copie ?


Après, c'est promis, j'arrête de te solliciter!!


Merci encore pour tout.

Cordialement

Ga51

Cordialement

Ga51




En remplaçant :
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
par :
With Workbooks("LeNomQueTuVeux.xls")
Application.DisplayAlerts = False
.Sheets("Feuil1").Delete
.Sheets("Feuil2").Delete
.Sheets("Feuil3").Delete
Application.DisplayAlerts = True
.Save
.Close
End With
si tes classeurs vierges ont trois feuilles.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:



Merci beaucoup pour ta réponse rapide,

Cela fonctionne au poil avec ces quelques modifs:

Private Sub CommandButton1_Click()


Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"

UserForm1.Show
End Sub


Sub CommandButton1_Click()
UserForm1.Hide

Workbooks(1).Activate



With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)


Workbooks(1).Activate 'active le classeur source

End If


Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub


Une dernière chose, comment peut-on supprimer les feuilles vides qui
sont par défaut dans le classeur créé ? pour finioler !! pour éviter
d'envoyer un fichier avec des onglets vides.

Merci encore pour tout

Cordialement

Ga51




En plein dans le mille :
Code du bouton de la feuille "Feuil4" :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(2).Activate 'active le classeur source
UserForm1.Show
End Sub

et le code du bouton de l'userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
Workbooks(2).Activate 'active le classeur source
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Le code ne fonctionnait que parce que les deux classeurs avaient les
mêmes noms de feuilles.
Cordialement.
Daniel


"ga51" a écrit dans le message de news:




J'avais déjà supprimé la ligne MsgBox .list(i).

De quel nom affiché parles-tu ? de celui de l'onglet sélectionné ? si
oui, c'est effectivement le nom de l'onglet qui fait parti de mon
classeur d'origine.

Ne serait-ce pas un problème de classeur actif ?
Lors de la copie, quel classeur doit être actif, le classeur
d'origine ou le classeur de sauvegarde ?
L'instruction Workbooks(1).Activate correspond à quel classeur ?

Merci encore de t'occuper de "mon cas"

Cordialement.

Ga51





Si tu n'as pas ôté la ligne "msgbox .list(i)", le nom affiché
appartient-il à ton classeur origine ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%




Merci beaucoup pour ta réponse
C'est exactement ce que je voulais

Cela fonctionne impec avec un classeur test.

Mais j'ai une erreur: "L'indice n'appartient pas à la sélection"
lors de la copie du 2ième onglet sélectionné sur mon classeur. Le
1er onglet sélectionné se copie parfaitement.
Une exécution pas à pas m'arrête sur la ligne lors de la 2ième
tentative de copie:
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)

Mes onglets ne sont pas protégés, ils ont simplement des boutons de
contrôles et des mise en formes.
Pourquoi ce bug ?

Cordialement

Ga51





Bonjour.
Code du bouton de Feuil3 :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(1).Activate
UserForm1.Show
End Sub

Code du bouton du userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox .List(i)
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Cordialement.
Daniel
"ga51" a écrit dans le message de news:
O9$





Merci pour ton exemple, il fonctionne super bien en effet.

Pour aller plus loin, en fait je voulais sauvegarder les onglets
sélectionnés dans un nouveau classeur et le renommer avec:
ActiveWorkbook.SaveAs Filename:= ...etc.. (pour envoi futur par
mail) plutôt que d'envoyer ces onglets dans un classeur déjà
existant.
Car dans ma configuration de travail, cela sera impossible.
Pourrais-tu m'aider pour la syntaxe ?

Merci beaucoup de ton aide

Cordialement.

Ga51






J'ai créé un nouveau classeur minimal avec une userform et une
listbox. Ca fonctionne sans problème. Je te l'envoie.
http://cjoint.com/?fqwWPpRgFp
Cordialement.
Daniel
"ga51" a écrit dans le message de news:







Merci d'avoir insister !
En effet cela fonctionne (je n'avais pas le classeur cible
ouvert!)...
Mais si je le transpose dans ma macro, cela ne fonctionne pas.
Sans doute ce sont les propriétés de ma listbox, créée dans un
userform, qui ne correspondent pas ?
j'ai mis les propriétés à MultiSelect, je remplis la listbox
avec Additem pour l'alimenter du noms des onglets.

Qq'un pour m'aider svp

Merci beaucoup

Cordialement.

Ga51








Bonjour,

pas de pb pour moi non plus avec le fichier de Daniel alors
que j'ai la même config que toi. Il doit y avoir autre chose.
Fais une éxécution en mode pas à pas du fichier qui t'a été
transmis et regarde ce que ca donne.

A+








J'ai Excel 2000 sur win xp pro

Merci en tout cas pour tes réponses.

Cordialement

Ga51








Problème de version ?
La listbox est configurée de telle manière qu'il faut
maintenir la touche CTRL enfoncée pour faire une seconde
sélection.
Sinon il va falloir que les VRAIS gourous se penchent sur
ton problème.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:








Merci Daniel pour le classeur de test.
Mais j'ai toujours la même erreur sur ton classeur.(l'objet
n'appartient pas a la selection)
De plus dans la msgbox, il n'y a qu'1 seule feuille et non
toutes les feuilles sélectionnées.

Manquerait-il qqchose ?

Cordialement

Ga51








Je t'envoie le classeur qui m'a servi à faire le test.
http://cjoint.com/?fqqZYIv66K
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%








Bonjour,

Merci pour ta réponse,

Oui tous les onglets sont dans le classeur ouvert et donc
actif.

Cordialement

Ga









Bonjour.
J'ai pas trop étudié ton code; est-ce que la feuille
copiée fait partie du classeur actif ?
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %









Merci Daniel pour ta réponse,

mais j'ai une erreur sur la ligne
sheets(.List(i)).copy: n'appartient pas à la sélection.

Merci encore pour ton aide,

Cordialement.















































Avatar
Daniel
Pour la ligne do while, qu'est-ce qui ne fonctionne pas ?, chez moi, ça
marche.
Daniel
"ga51" a écrit dans le message de news:
eKF%
Bonsoir,

en fait, dans la macro, si on ne sélectionne rien, il y a un bug car le
programme supprime les onglets et s'arrête au dernier car un classeur doit
obligatoirement avoir un onglet minimum.(puisqu'il ne trouve rien à
copier).

La boucle do while avec ListIndex ne fonctionne pas...
peut-être à cause de la propriété multi de la listbox ??

Merci de l'aide

Cordialement

Ga51


Merci beaucoup Daniel, je fais essayé.

Pour l'ordre des onglets dans le classeur, peut-on faire quelque chose ?
(pour respecter l'ordre de la listbox)

Merci pour tout

Cordialement

Ga51


Je pense que le code suivant doit le faire :

Dans Private Sub UserForm_Initialize()
ajouter :
ListBox1.ListIndex = -1
et le test (à ajouter après le userform1.hide dans mon code)
Do While ListBox1.ListIndex = -1
MsgBox "Faut choisir quelque chose !"
Loop

Cordialement.
Daniel

"ga51" a écrit dans le message de news:


Super
Merci beaucoup pour ta disponibilité

Dernière question:

Comment verifier si la sélection a bien été faite dans la listbox.
J'ai testé:
If IsNull(ListBox1) Then
reponse = MsgBox("vous n'avez rien sélectionné, voulez-vous poursuivre
?", vbYesNo)
If reponse = 6 Then
MsgBox "Ok, Alors Sélectionnez une Option en cliquant dessus ! On
Recommence"
Else
MsgBox "OK ! On arrête alors"
UserForm44.Hide
End If
Else ...

mais cela ne fonctionne qu'avec la propriété listbox sur select single
et plus sur select multi.

Petit plus, peut-on copier les onglets dans l'ordre de la listbox ?
car le dernier copié se met avant l'autre. Normal je pense à cause du
Before dans la copie ?


Après, c'est promis, j'arrête de te solliciter!!


Merci encore pour tout.

Cordialement

Ga51

Cordialement

Ga51




En remplaçant :
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
par :
With Workbooks("LeNomQueTuVeux.xls")
Application.DisplayAlerts = False
.Sheets("Feuil1").Delete
.Sheets("Feuil2").Delete
.Sheets("Feuil3").Delete
Application.DisplayAlerts = True
.Save
.Close
End With
si tes classeurs vierges ont trois feuilles.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:



Merci beaucoup pour ta réponse rapide,

Cela fonctionne au poil avec ces quelques modifs:

Private Sub CommandButton1_Click()


Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"



UserForm1.Show
End Sub



Sub CommandButton1_Click()
UserForm1.Hide

Workbooks(1).Activate



With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)



Workbooks(1).Activate 'active le classeur source

End If


Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub



Une dernière chose, comment peut-on supprimer les feuilles vides qui
sont par défaut dans le classeur créé ? pour finioler !! pour éviter
d'envoyer un fichier avec des onglets vides.

Merci encore pour tout

Cordialement

Ga51




En plein dans le mille :
Code du bouton de la feuille "Feuil4" :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(2).Activate 'active le classeur source
UserForm1.Show
End Sub

et le code du bouton de l'userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
Workbooks(2).Activate 'active le classeur source
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Le code ne fonctionnait que parce que les deux classeurs avaient les
mêmes noms de feuilles.
Cordialement.
Daniel


"ga51" a écrit dans le message de news:




J'avais déjà supprimé la ligne MsgBox .list(i).

De quel nom affiché parles-tu ? de celui de l'onglet sélectionné ?
si oui, c'est effectivement le nom de l'onglet qui fait parti de
mon classeur d'origine.

Ne serait-ce pas un problème de classeur actif ?
Lors de la copie, quel classeur doit être actif, le classeur
d'origine ou le classeur de sauvegarde ?
L'instruction Workbooks(1).Activate correspond à quel classeur ?

Merci encore de t'occuper de "mon cas"

Cordialement.

Ga51





Si tu n'as pas ôté la ligne "msgbox .list(i)", le nom affiché
appartient-il à ton classeur origine ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%




Merci beaucoup pour ta réponse
C'est exactement ce que je voulais

Cela fonctionne impec avec un classeur test.

Mais j'ai une erreur: "L'indice n'appartient pas à la sélection"
lors de la copie du 2ième onglet sélectionné sur mon classeur. Le
1er onglet sélectionné se copie parfaitement.
Une exécution pas à pas m'arrête sur la ligne lors de la 2ième
tentative de copie:
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)

Mes onglets ne sont pas protégés, ils ont simplement des boutons
de contrôles et des mise en formes.
Pourquoi ce bug ?

Cordialement

Ga51





Bonjour.
Code du bouton de Feuil3 :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(1).Activate
UserForm1.Show
End Sub

Code du bouton du userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox .List(i)
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Cordialement.
Daniel
"ga51" a écrit dans le message de news:
O9$





Merci pour ton exemple, il fonctionne super bien en effet.

Pour aller plus loin, en fait je voulais sauvegarder les
onglets sélectionnés dans un nouveau classeur et le renommer
avec:
ActiveWorkbook.SaveAs Filename:= ...etc.. (pour envoi futur par
mail) plutôt que d'envoyer ces onglets dans un classeur déjà
existant.
Car dans ma configuration de travail, cela sera impossible.
Pourrais-tu m'aider pour la syntaxe ?

Merci beaucoup de ton aide

Cordialement.

Ga51






J'ai créé un nouveau classeur minimal avec une userform et une
listbox. Ca fonctionne sans problème. Je te l'envoie.
http://cjoint.com/?fqwWPpRgFp
Cordialement.
Daniel
"ga51" a écrit dans le message de news:







Merci d'avoir insister !
En effet cela fonctionne (je n'avais pas le classeur cible
ouvert!)...
Mais si je le transpose dans ma macro, cela ne fonctionne
pas.
Sans doute ce sont les propriétés de ma listbox, créée dans
un userform, qui ne correspondent pas ?
j'ai mis les propriétés à MultiSelect, je remplis la listbox
avec Additem pour l'alimenter du noms des onglets.

Qq'un pour m'aider svp

Merci beaucoup

Cordialement.

Ga51








Bonjour,

pas de pb pour moi non plus avec le fichier de Daniel alors
que j'ai la même config que toi. Il doit y avoir autre
chose.
Fais une éxécution en mode pas à pas du fichier qui t'a été
transmis et regarde ce que ca donne.

A+








J'ai Excel 2000 sur win xp pro

Merci en tout cas pour tes réponses.

Cordialement

Ga51








Problème de version ?
La listbox est configurée de telle manière qu'il faut
maintenir la touche CTRL enfoncée pour faire une seconde
sélection.
Sinon il va falloir que les VRAIS gourous se penchent sur
ton problème.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:








Merci Daniel pour le classeur de test.
Mais j'ai toujours la même erreur sur ton
classeur.(l'objet n'appartient pas a la selection)
De plus dans la msgbox, il n'y a qu'1 seule feuille et
non toutes les feuilles sélectionnées.

Manquerait-il qqchose ?

Cordialement

Ga51








Je t'envoie le classeur qui m'a servi à faire le test.
http://cjoint.com/?fqqZYIv66K
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %








Bonjour,

Merci pour ta réponse,

Oui tous les onglets sont dans le classeur ouvert et
donc actif.

Cordialement

Ga









Bonjour.
J'ai pas trop étudié ton code; est-ce que la feuille
copiée fait partie du classeur actif ?
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %









Merci Daniel pour ta réponse,

mais j'ai une erreur sur la ligne
sheets(.List(i)).copy: n'appartient pas à la
sélection.

Merci encore pour ton aide,

Cordialement.


















































Avatar
ga51
Bonjour,

Je n'arrivais pas à sortir de la boucle... ??
J'ai modifié en utilisant l'instruction: if listbox1.selected(i)= false
then etc... et çà marche bien.

par contre le .count à la fin de la ligne copy crée une erreur: "la
méthode copy de la classe worksheet a échouée".


Merci encore pour ta disponibilité

Cordialement

Ga51

Pour la ligne do while, qu'est-ce qui ne fonctionne pas ?, chez moi, ça
marche.
Daniel
"ga51" a écrit dans le message de news:
eKF%

Bonsoir,

en fait, dans la macro, si on ne sélectionne rien, il y a un bug car le
programme supprime les onglets et s'arrête au dernier car un classeur doit
obligatoirement avoir un onglet minimum.(puisqu'il ne trouve rien à
copier).

La boucle do while avec ListIndex ne fonctionne pas...
peut-être à cause de la propriété multi de la listbox ??

Merci de l'aide

Cordialement

Ga51



Merci beaucoup Daniel, je fais essayé.

Pour l'ordre des onglets dans le classeur, peut-on faire quelque chose ?
(pour respecter l'ordre de la listbox)

Merci pour tout

Cordialement

Ga51



Je pense que le code suivant doit le faire :

Dans Private Sub UserForm_Initialize()
ajouter :
ListBox1.ListIndex = -1
et le test (à ajouter après le userform1.hide dans mon code)
Do While ListBox1.ListIndex = -1
MsgBox "Faut choisir quelque chose !"
Loop

Cordialement.
Daniel

"ga51" a écrit dans le message de news:



Super
Merci beaucoup pour ta disponibilité

Dernière question:

Comment verifier si la sélection a bien été faite dans la listbox.
J'ai testé:
If IsNull(ListBox1) Then
reponse = MsgBox("vous n'avez rien sélectionné, voulez-vous poursuivre
?", vbYesNo)
If reponse = 6 Then
MsgBox "Ok, Alors Sélectionnez une Option en cliquant dessus ! On
Recommence"
Else
MsgBox "OK ! On arrête alors"
UserForm44.Hide
End If
Else ...

mais cela ne fonctionne qu'avec la propriété listbox sur select single
et plus sur select multi.

Petit plus, peut-on copier les onglets dans l'ordre de la listbox ?
car le dernier copié se met avant l'autre. Normal je pense à cause du
Before dans la copie ?


Après, c'est promis, j'arrête de te solliciter!!


Merci encore pour tout.

Cordialement

Ga51

Cordialement

Ga51





En remplaçant :
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
par :
With Workbooks("LeNomQueTuVeux.xls")
Application.DisplayAlerts = False
.Sheets("Feuil1").Delete
.Sheets("Feuil2").Delete
.Sheets("Feuil3").Delete
Application.DisplayAlerts = True
.Save
.Close
End With
si tes classeurs vierges ont trois feuilles.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:




Merci beaucoup pour ta réponse rapide,

Cela fonctionne au poil avec ces quelques modifs:

Private Sub CommandButton1_Click()



Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"



UserForm1.Show
End Sub



Sub CommandButton1_Click()
UserForm1.Hide

Workbooks(1).Activate




With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)



Workbooks(1).Activate 'active le classeur source

End If



Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub



Une dernière chose, comment peut-on supprimer les feuilles vides qui
sont par défaut dans le classeur créé ? pour finioler !! pour éviter
d'envoyer un fichier avec des onglets vides.

Merci encore pour tout

Cordialement

Ga51





En plein dans le mille :
Code du bouton de la feuille "Feuil4" :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(2).Activate 'active le classeur source
UserForm1.Show
End Sub

et le code du bouton de l'userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
Workbooks(2).Activate 'active le classeur source
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Le code ne fonctionnait que parce que les deux classeurs avaient les
mêmes noms de feuilles.
Cordialement.
Daniel


"ga51" a écrit dans le message de news:





J'avais déjà supprimé la ligne MsgBox .list(i).

De quel nom affiché parles-tu ? de celui de l'onglet sélectionné ?
si oui, c'est effectivement le nom de l'onglet qui fait parti de
mon classeur d'origine.

Ne serait-ce pas un problème de classeur actif ?
Lors de la copie, quel classeur doit être actif, le classeur
d'origine ou le classeur de sauvegarde ?
L'instruction Workbooks(1).Activate correspond à quel classeur ?

Merci encore de t'occuper de "mon cas"

Cordialement.

Ga51






Si tu n'as pas ôté la ligne "msgbox .list(i)", le nom affiché
appartient-il à ton classeur origine ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%





Merci beaucoup pour ta réponse
C'est exactement ce que je voulais

Cela fonctionne impec avec un classeur test.

Mais j'ai une erreur: "L'indice n'appartient pas à la sélection"
lors de la copie du 2ième onglet sélectionné sur mon classeur. Le
1er onglet sélectionné se copie parfaitement.
Une exécution pas à pas m'arrête sur la ligne lors de la 2ième
tentative de copie:
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)

Mes onglets ne sont pas protégés, ils ont simplement des boutons
de contrôles et des mise en formes.
Pourquoi ce bug ?

Cordialement

Ga51






Bonjour.
Code du bouton de Feuil3 :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(1).Activate
UserForm1.Show
End Sub

Code du bouton du userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox .List(i)
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Cordialement.
Daniel
"ga51" a écrit dans le message de news:
O9$






Merci pour ton exemple, il fonctionne super bien en effet.

Pour aller plus loin, en fait je voulais sauvegarder les
onglets sélectionnés dans un nouveau classeur et le renommer
avec:
ActiveWorkbook.SaveAs Filename:= ...etc.. (pour envoi futur par
mail) plutôt que d'envoyer ces onglets dans un classeur déjà
existant.
Car dans ma configuration de travail, cela sera impossible.
Pourrais-tu m'aider pour la syntaxe ?

Merci beaucoup de ton aide

Cordialement.

Ga51







J'ai créé un nouveau classeur minimal avec une userform et une
listbox. Ca fonctionne sans problème. Je te l'envoie.
http://cjoint.com/?fqwWPpRgFp
Cordialement.
Daniel
"ga51" a écrit dans le message de news:








Merci d'avoir insister !
En effet cela fonctionne (je n'avais pas le classeur cible
ouvert!)...
Mais si je le transpose dans ma macro, cela ne fonctionne
pas.
Sans doute ce sont les propriétés de ma listbox, créée dans
un userform, qui ne correspondent pas ?
j'ai mis les propriétés à MultiSelect, je remplis la listbox
avec Additem pour l'alimenter du noms des onglets.

Qq'un pour m'aider svp

Merci beaucoup

Cordialement.

Ga51









Bonjour,

pas de pb pour moi non plus avec le fichier de Daniel alors
que j'ai la même config que toi. Il doit y avoir autre
chose.
Fais une éxécution en mode pas à pas du fichier qui t'a été
transmis et regarde ce que ca donne.

A+









J'ai Excel 2000 sur win xp pro

Merci en tout cas pour tes réponses.

Cordialement

Ga51









Problème de version ?
La listbox est configurée de telle manière qu'il faut
maintenir la touche CTRL enfoncée pour faire une seconde
sélection.
Sinon il va falloir que les VRAIS gourous se penchent sur
ton problème.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:









Merci Daniel pour le classeur de test.
Mais j'ai toujours la même erreur sur ton
classeur.(l'objet n'appartient pas a la selection)
De plus dans la msgbox, il n'y a qu'1 seule feuille et
non toutes les feuilles sélectionnées.

Manquerait-il qqchose ?

Cordialement

Ga51









Je t'envoie le classeur qui m'a servi à faire le test.
http://cjoint.com/?fqqZYIv66K
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %









Bonjour,

Merci pour ta réponse,

Oui tous les onglets sont dans le classeur ouvert et
donc actif.

Cordialement

Ga










Bonjour.
J'ai pas trop étudié ton code; est-ce que la feuille
copiée fait partie du classeur actif ?
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %










Merci Daniel pour ta réponse,

mais j'ai une erreur sur la ligne
sheets(.List(i)).copy: n'appartient pas à la
sélection.

Merci encore pour ton aide,

Cordialement.





















































Avatar
Daniel
Bonsoir.
Là, je n'arrive plus à suivre. Si tu pouvais mettre ton classeur sur cjoint
?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
e%
Bonjour,

Je n'arrivais pas à sortir de la boucle... ??
J'ai modifié en utilisant l'instruction: if listbox1.selected(i)= false
then etc... et çà marche bien.

par contre le .count à la fin de la ligne copy crée une erreur: "la
méthode copy de la classe worksheet a échouée".


Merci encore pour ta disponibilité

Cordialement

Ga51

Pour la ligne do while, qu'est-ce qui ne fonctionne pas ?, chez moi, ça
marche.
Daniel
"ga51" a écrit dans le message de news:
eKF%

Bonsoir,

en fait, dans la macro, si on ne sélectionne rien, il y a un bug car le
programme supprime les onglets et s'arrête au dernier car un classeur
doit obligatoirement avoir un onglet minimum.(puisqu'il ne trouve rien à
copier).

La boucle do while avec ListIndex ne fonctionne pas...
peut-être à cause de la propriété multi de la listbox ??

Merci de l'aide

Cordialement

Ga51



Merci beaucoup Daniel, je fais essayé.

Pour l'ordre des onglets dans le classeur, peut-on faire quelque chose ?
(pour respecter l'ordre de la listbox)

Merci pour tout

Cordialement

Ga51



Je pense que le code suivant doit le faire :

Dans Private Sub UserForm_Initialize()
ajouter :
ListBox1.ListIndex = -1
et le test (à ajouter après le userform1.hide dans mon code)
Do While ListBox1.ListIndex = -1
MsgBox "Faut choisir quelque chose !"
Loop

Cordialement.
Daniel

"ga51" a écrit dans le message de news:



Super
Merci beaucoup pour ta disponibilité

Dernière question:

Comment verifier si la sélection a bien été faite dans la listbox.
J'ai testé:
If IsNull(ListBox1) Then
reponse = MsgBox("vous n'avez rien sélectionné, voulez-vous poursuivre
?", vbYesNo)
If reponse = 6 Then
MsgBox "Ok, Alors Sélectionnez une Option en cliquant dessus ! On
Recommence"
Else
MsgBox "OK ! On arrête alors"
UserForm44.Hide
End If
Else ...

mais cela ne fonctionne qu'avec la propriété listbox sur select single
et plus sur select multi.

Petit plus, peut-on copier les onglets dans l'ordre de la listbox ?
car le dernier copié se met avant l'autre. Normal je pense à cause du
Before dans la copie ?


Après, c'est promis, j'arrête de te solliciter!!


Merci encore pour tout.

Cordialement

Ga51

Cordialement

Ga51





En remplaçant :
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
par :
With Workbooks("LeNomQueTuVeux.xls")
Application.DisplayAlerts = False
.Sheets("Feuil1").Delete
.Sheets("Feuil2").Delete
.Sheets("Feuil3").Delete
Application.DisplayAlerts = True
.Save
.Close
End With
si tes classeurs vierges ont trois feuilles.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:




Merci beaucoup pour ta réponse rapide,

Cela fonctionne au poil avec ces quelques modifs:

Private Sub CommandButton1_Click()



Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"



UserForm1.Show
End Sub



Sub CommandButton1_Click()
UserForm1.Hide

Workbooks(1).Activate




With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)



Workbooks(1).Activate 'active le classeur source

End If



Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub



Une dernière chose, comment peut-on supprimer les feuilles vides qui
sont par défaut dans le classeur créé ? pour finioler !! pour éviter
d'envoyer un fichier avec des onglets vides.

Merci encore pour tout

Cordialement

Ga51





En plein dans le mille :
Code du bouton de la feuille "Feuil4" :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(2).Activate 'active le classeur source
UserForm1.Show
End Sub

et le code du bouton de l'userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
Workbooks(2).Activate 'active le classeur source
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Le code ne fonctionnait que parce que les deux classeurs avaient
les mêmes noms de feuilles.
Cordialement.
Daniel


"ga51" a écrit dans le message de news:





J'avais déjà supprimé la ligne MsgBox .list(i).

De quel nom affiché parles-tu ? de celui de l'onglet sélectionné ?
si oui, c'est effectivement le nom de l'onglet qui fait parti de
mon classeur d'origine.

Ne serait-ce pas un problème de classeur actif ?
Lors de la copie, quel classeur doit être actif, le classeur
d'origine ou le classeur de sauvegarde ?
L'instruction Workbooks(1).Activate correspond à quel classeur ?

Merci encore de t'occuper de "mon cas"

Cordialement.

Ga51






Si tu n'as pas ôté la ligne "msgbox .list(i)", le nom affiché
appartient-il à ton classeur origine ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%





Merci beaucoup pour ta réponse
C'est exactement ce que je voulais

Cela fonctionne impec avec un classeur test.

Mais j'ai une erreur: "L'indice n'appartient pas à la sélection"
lors de la copie du 2ième onglet sélectionné sur mon classeur.
Le 1er onglet sélectionné se copie parfaitement.
Une exécution pas à pas m'arrête sur la ligne lors de la 2ième
tentative de copie:
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)

Mes onglets ne sont pas protégés, ils ont simplement des boutons
de contrôles et des mise en formes.
Pourquoi ce bug ?

Cordialement

Ga51






Bonjour.
Code du bouton de Feuil3 :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(1).Activate
UserForm1.Show
End Sub

Code du bouton du userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox .List(i)
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Cordialement.
Daniel
"ga51" a écrit dans le message de news:
O9$






Merci pour ton exemple, il fonctionne super bien en effet.

Pour aller plus loin, en fait je voulais sauvegarder les
onglets sélectionnés dans un nouveau classeur et le renommer
avec:
ActiveWorkbook.SaveAs Filename:= ...etc.. (pour envoi futur
par mail) plutôt que d'envoyer ces onglets dans un classeur
déjà existant.
Car dans ma configuration de travail, cela sera impossible.
Pourrais-tu m'aider pour la syntaxe ?

Merci beaucoup de ton aide

Cordialement.

Ga51







J'ai créé un nouveau classeur minimal avec une userform et
une listbox. Ca fonctionne sans problème. Je te l'envoie.
http://cjoint.com/?fqwWPpRgFp
Cordialement.
Daniel
"ga51" a écrit dans le message de news:








Merci d'avoir insister !
En effet cela fonctionne (je n'avais pas le classeur cible
ouvert!)...
Mais si je le transpose dans ma macro, cela ne fonctionne
pas.
Sans doute ce sont les propriétés de ma listbox, créée dans
un userform, qui ne correspondent pas ?
j'ai mis les propriétés à MultiSelect, je remplis la listbox
avec Additem pour l'alimenter du noms des onglets.

Qq'un pour m'aider svp

Merci beaucoup

Cordialement.

Ga51









Bonjour,

pas de pb pour moi non plus avec le fichier de Daniel alors
que j'ai la même config que toi. Il doit y avoir autre
chose.
Fais une éxécution en mode pas à pas du fichier qui t'a été
transmis et regarde ce que ca donne.

A+









J'ai Excel 2000 sur win xp pro

Merci en tout cas pour tes réponses.

Cordialement

Ga51









Problème de version ?
La listbox est configurée de telle manière qu'il faut
maintenir la touche CTRL enfoncée pour faire une seconde
sélection.
Sinon il va falloir que les VRAIS gourous se penchent sur
ton problème.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:









Merci Daniel pour le classeur de test.
Mais j'ai toujours la même erreur sur ton
classeur.(l'objet n'appartient pas a la selection)
De plus dans la msgbox, il n'y a qu'1 seule feuille et
non toutes les feuilles sélectionnées.

Manquerait-il qqchose ?

Cordialement

Ga51









Je t'envoie le classeur qui m'a servi à faire le test.
http://cjoint.com/?fqqZYIv66K
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %









Bonjour,

Merci pour ta réponse,

Oui tous les onglets sont dans le classeur ouvert et
donc actif.

Cordialement

Ga










Bonjour.
J'ai pas trop étudié ton code; est-ce que la feuille
copiée fait partie du classeur actif ?
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %










Merci Daniel pour ta réponse,

mais j'ai une erreur sur la ligne
sheets(.List(i)).copy: n'appartient pas à la
sélection.

Merci encore pour ton aide,

Cordialement.






















































Avatar
ga51
Bonsoir,

Mon classeur fait plus de 700 ko, il est très lourd avec 9 onglets et
des boutons de contrôles.

En fait, la dernière instruction que tu m'as donnée à savoir:
Sheets(.List(i)).Copy _After:=Workbooks("LeNomQueTuVeux.xls").Sheets.count
à la place de:
Sheets(.List(i)).Copy After:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
ne fonctionne pas, j'ai une erreur "la méthode copy de la classe
worksheet a échouée".

Rappel:
je désirais copier dans l'ordre de la listbox c-à-d la dernière feuille
copiée derrière celle déjà copiée dans le nouveau classeur.

Tout Le reste est nickel maintenant.

Merci de ton aide.
Cordialement

Ga51


Bonsoir.
Là, je n'arrive plus à suivre. Si tu pouvais mettre ton classeur sur cjoint
?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
e%

Bonjour,

Je n'arrivais pas à sortir de la boucle... ??
J'ai modifié en utilisant l'instruction: if listbox1.selected(i)= false
then etc... et çà marche bien.

par contre le .count à la fin de la ligne copy crée une erreur: "la
méthode copy de la classe worksheet a échouée".


Merci encore pour ta disponibilité

Cordialement

Ga51


Pour la ligne do while, qu'est-ce qui ne fonctionne pas ?, chez moi, ça
marche.
Daniel
"ga51" a écrit dans le message de news:
eKF%


Bonsoir,

en fait, dans la macro, si on ne sélectionne rien, il y a un bug car le
programme supprime les onglets et s'arrête au dernier car un classeur
doit obligatoirement avoir un onglet minimum.(puisqu'il ne trouve rien à
copier).

La boucle do while avec ListIndex ne fonctionne pas...
peut-être à cause de la propriété multi de la listbox ??

Merci de l'aide

Cordialement

Ga51




Merci beaucoup Daniel, je fais essayé.

Pour l'ordre des onglets dans le classeur, peut-on faire quelque chose ?
(pour respecter l'ordre de la listbox)

Merci pour tout

Cordialement

Ga51




Je pense que le code suivant doit le faire :

Dans Private Sub UserForm_Initialize()
ajouter :
ListBox1.ListIndex = -1
et le test (à ajouter après le userform1.hide dans mon code)
Do While ListBox1.ListIndex = -1
MsgBox "Faut choisir quelque chose !"
Loop

Cordialement.
Daniel

"ga51" a écrit dans le message de news:




Super
Merci beaucoup pour ta disponibilité

Dernière question:

Comment verifier si la sélection a bien été faite dans la listbox.
J'ai testé:
If IsNull(ListBox1) Then
reponse = MsgBox("vous n'avez rien sélectionné, voulez-vous poursuivre
?", vbYesNo)
If reponse = 6 Then
MsgBox "Ok, Alors Sélectionnez une Option en cliquant dessus ! On
Recommence"
Else
MsgBox "OK ! On arrête alors"
UserForm44.Hide
End If
Else ...

mais cela ne fonctionne qu'avec la propriété listbox sur select single
et plus sur select multi.

Petit plus, peut-on copier les onglets dans l'ordre de la listbox ?
car le dernier copié se met avant l'autre. Normal je pense à cause du
Before dans la copie ?


Après, c'est promis, j'arrête de te solliciter!!


Merci encore pour tout.

Cordialement

Ga51

Cordialement

Ga51






En remplaçant :
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
par :
With Workbooks("LeNomQueTuVeux.xls")
Application.DisplayAlerts = False
.Sheets("Feuil1").Delete
.Sheets("Feuil2").Delete
.Sheets("Feuil3").Delete
Application.DisplayAlerts = True
.Save
.Close
End With
si tes classeurs vierges ont trois feuilles.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:





Merci beaucoup pour ta réponse rapide,

Cela fonctionne au poil avec ces quelques modifs:

Private Sub CommandButton1_Click()




Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"



UserForm1.Show
End Sub



Sub CommandButton1_Click()
UserForm1.Hide

Workbooks(1).Activate





With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)



Workbooks(1).Activate 'active le classeur source

End If




Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub



Une dernière chose, comment peut-on supprimer les feuilles vides qui
sont par défaut dans le classeur créé ? pour finioler !! pour éviter
d'envoyer un fichier avec des onglets vides.

Merci encore pour tout

Cordialement

Ga51






En plein dans le mille :
Code du bouton de la feuille "Feuil4" :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(2).Activate 'active le classeur source
UserForm1.Show
End Sub

et le code du bouton de l'userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
Workbooks(2).Activate 'active le classeur source
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Le code ne fonctionnait que parce que les deux classeurs avaient
les mêmes noms de feuilles.
Cordialement.
Daniel


"ga51" a écrit dans le message de news:






J'avais déjà supprimé la ligne MsgBox .list(i).

De quel nom affiché parles-tu ? de celui de l'onglet sélectionné ?
si oui, c'est effectivement le nom de l'onglet qui fait parti de
mon classeur d'origine.

Ne serait-ce pas un problème de classeur actif ?
Lors de la copie, quel classeur doit être actif, le classeur
d'origine ou le classeur de sauvegarde ?
L'instruction Workbooks(1).Activate correspond à quel classeur ?

Merci encore de t'occuper de "mon cas"

Cordialement.

Ga51







Si tu n'as pas ôté la ligne "msgbox .list(i)", le nom affiché
appartient-il à ton classeur origine ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%






Merci beaucoup pour ta réponse
C'est exactement ce que je voulais

Cela fonctionne impec avec un classeur test.

Mais j'ai une erreur: "L'indice n'appartient pas à la sélection"
lors de la copie du 2ième onglet sélectionné sur mon classeur.
Le 1er onglet sélectionné se copie parfaitement.
Une exécution pas à pas m'arrête sur la ligne lors de la 2ième
tentative de copie:
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)

Mes onglets ne sont pas protégés, ils ont simplement des boutons
de contrôles et des mise en formes.
Pourquoi ce bug ?

Cordialement

Ga51







Bonjour.
Code du bouton de Feuil3 :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(1).Activate
UserForm1.Show
End Sub

Code du bouton du userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox .List(i)
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Cordialement.
Daniel
"ga51" a écrit dans le message de news:
O9$







Merci pour ton exemple, il fonctionne super bien en effet.

Pour aller plus loin, en fait je voulais sauvegarder les
onglets sélectionnés dans un nouveau classeur et le renommer
avec:
ActiveWorkbook.SaveAs Filename:= ...etc.. (pour envoi futur
par mail) plutôt que d'envoyer ces onglets dans un classeur
déjà existant.
Car dans ma configuration de travail, cela sera impossible.
Pourrais-tu m'aider pour la syntaxe ?

Merci beaucoup de ton aide

Cordialement.

Ga51








J'ai créé un nouveau classeur minimal avec une userform et
une listbox. Ca fonctionne sans problème. Je te l'envoie.
http://cjoint.com/?fqwWPpRgFp
Cordialement.
Daniel
"ga51" a écrit dans le message de news:









Merci d'avoir insister !
En effet cela fonctionne (je n'avais pas le classeur cible
ouvert!)...
Mais si je le transpose dans ma macro, cela ne fonctionne
pas.
Sans doute ce sont les propriétés de ma listbox, créée dans
un userform, qui ne correspondent pas ?
j'ai mis les propriétés à MultiSelect, je remplis la listbox
avec Additem pour l'alimenter du noms des onglets.

Qq'un pour m'aider svp

Merci beaucoup

Cordialement.

Ga51










Bonjour,

pas de pb pour moi non plus avec le fichier de Daniel alors
que j'ai la même config que toi. Il doit y avoir autre
chose.
Fais une éxécution en mode pas à pas du fichier qui t'a été
transmis et regarde ce que ca donne.

A+










J'ai Excel 2000 sur win xp pro

Merci en tout cas pour tes réponses.

Cordialement

Ga51










Problème de version ?
La listbox est configurée de telle manière qu'il faut
maintenir la touche CTRL enfoncée pour faire une seconde
sélection.
Sinon il va falloir que les VRAIS gourous se penchent sur
ton problème.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:










Merci Daniel pour le classeur de test.
Mais j'ai toujours la même erreur sur ton
classeur.(l'objet n'appartient pas a la selection)
De plus dans la msgbox, il n'y a qu'1 seule feuille et
non toutes les feuilles sélectionnées.

Manquerait-il qqchose ?

Cordialement

Ga51










Je t'envoie le classeur qui m'a servi à faire le test.
http://cjoint.com/?fqqZYIv66K
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %










Bonjour,

Merci pour ta réponse,

Oui tous les onglets sont dans le classeur ouvert et
donc actif.

Cordialement

Ga











Bonjour.
J'ai pas trop étudié ton code; est-ce que la feuille
copiée fait partie du classeur actif ?
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %











Merci Daniel pour ta réponse,

mais j'ai une erreur sur la ligne
sheets(.List(i)).copy: n'appartient pas à la
sélection.

Merci encore pour ton aide,

Cordialement.
























































Avatar
Daniel
Au temps pour moi :
Sheets(.List(i)).Copy
after:=Workbooks("LeNomQueTuVeux.xls").Sheets(Sheets.Count)
Cordialement.
Daniel
"ga51" a écrit dans le message de news:

Bonsoir,

Mon classeur fait plus de 700 ko, il est très lourd avec 9 onglets et des
boutons de contrôles.

En fait, la dernière instruction que tu m'as donnée à savoir:
Sheets(.List(i)).Copy _After:=Workbooks("LeNomQueTuVeux.xls").Sheets.count
à la place de:
Sheets(.List(i)).Copy After:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
ne fonctionne pas, j'ai une erreur "la méthode copy de la classe worksheet
a échouée".

Rappel:
je désirais copier dans l'ordre de la listbox c-à-d la dernière feuille
copiée derrière celle déjà copiée dans le nouveau classeur.

Tout Le reste est nickel maintenant.

Merci de ton aide.
Cordialement

Ga51


Bonsoir.
Là, je n'arrive plus à suivre. Si tu pouvais mettre ton classeur sur
cjoint ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
e%

Bonjour,

Je n'arrivais pas à sortir de la boucle... ??
J'ai modifié en utilisant l'instruction: if listbox1.selected(i)= false
then etc... et çà marche bien.

par contre le .count à la fin de la ligne copy crée une erreur: "la
méthode copy de la classe worksheet a échouée".


Merci encore pour ta disponibilité

Cordialement

Ga51


Pour la ligne do while, qu'est-ce qui ne fonctionne pas ?, chez moi, ça
marche.
Daniel
"ga51" a écrit dans le message de news:
eKF%


Bonsoir,

en fait, dans la macro, si on ne sélectionne rien, il y a un bug car le
programme supprime les onglets et s'arrête au dernier car un classeur
doit obligatoirement avoir un onglet minimum.(puisqu'il ne trouve rien
à copier).

La boucle do while avec ListIndex ne fonctionne pas...
peut-être à cause de la propriété multi de la listbox ??

Merci de l'aide

Cordialement

Ga51




Merci beaucoup Daniel, je fais essayé.

Pour l'ordre des onglets dans le classeur, peut-on faire quelque chose
?
(pour respecter l'ordre de la listbox)

Merci pour tout

Cordialement

Ga51




Je pense que le code suivant doit le faire :

Dans Private Sub UserForm_Initialize()
ajouter :
ListBox1.ListIndex = -1
et le test (à ajouter après le userform1.hide dans mon code)
Do While ListBox1.ListIndex = -1
MsgBox "Faut choisir quelque chose !"
Loop

Cordialement.
Daniel

"ga51" a écrit dans le message de news:




Super
Merci beaucoup pour ta disponibilité

Dernière question:

Comment verifier si la sélection a bien été faite dans la listbox.
J'ai testé:
If IsNull(ListBox1) Then
reponse = MsgBox("vous n'avez rien sélectionné, voulez-vous
poursuivre ?", vbYesNo)
If reponse = 6 Then
MsgBox "Ok, Alors Sélectionnez une Option en cliquant dessus ! On
Recommence"
Else
MsgBox "OK ! On arrête alors"
UserForm44.Hide
End If
Else ...

mais cela ne fonctionne qu'avec la propriété listbox sur select
single et plus sur select multi.

Petit plus, peut-on copier les onglets dans l'ordre de la listbox ?
car le dernier copié se met avant l'autre. Normal je pense à cause
du Before dans la copie ?


Après, c'est promis, j'arrête de te solliciter!!


Merci encore pour tout.

Cordialement

Ga51

Cordialement

Ga51






En remplaçant :
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
par :
With Workbooks("LeNomQueTuVeux.xls")
Application.DisplayAlerts = False
.Sheets("Feuil1").Delete
.Sheets("Feuil2").Delete
.Sheets("Feuil3").Delete
Application.DisplayAlerts = True
.Save
.Close
End With
si tes classeurs vierges ont trois feuilles.
Cordialement.
Daniel
"ga51" a écrit dans le message de news:





Merci beaucoup pour ta réponse rapide,

Cela fonctionne au poil avec ces quelques modifs:

Private Sub CommandButton1_Click()




Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"



UserForm1.Show
End Sub



Sub CommandButton1_Click()
UserForm1.Hide

Workbooks(1).Activate





With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)



Workbooks(1).Activate 'active le classeur source

End If




Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub



Une dernière chose, comment peut-on supprimer les feuilles vides
qui sont par défaut dans le classeur créé ? pour finioler !! pour
éviter d'envoyer un fichier avec des onglets vides.

Merci encore pour tout

Cordialement

Ga51






En plein dans le mille :
Code du bouton de la feuille "Feuil4" :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(2).Activate 'active le classeur source
UserForm1.Show
End Sub

et le code du bouton de l'userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
Workbooks(2).Activate 'active le classeur source
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Le code ne fonctionnait que parce que les deux classeurs avaient
les mêmes noms de feuilles.
Cordialement.
Daniel


"ga51" a écrit dans le message de news:






J'avais déjà supprimé la ligne MsgBox .list(i).

De quel nom affiché parles-tu ? de celui de l'onglet sélectionné
? si oui, c'est effectivement le nom de l'onglet qui fait parti
de mon classeur d'origine.

Ne serait-ce pas un problème de classeur actif ?
Lors de la copie, quel classeur doit être actif, le classeur
d'origine ou le classeur de sauvegarde ?
L'instruction Workbooks(1).Activate correspond à quel classeur ?

Merci encore de t'occuper de "mon cas"

Cordialement.

Ga51







Si tu n'as pas ôté la ligne "msgbox .list(i)", le nom affiché
appartient-il à ton classeur origine ?
Cordialement.
Daniel
"ga51" a écrit dans le message de news:
%






Merci beaucoup pour ta réponse
C'est exactement ce que je voulais

Cela fonctionne impec avec un classeur test.

Mais j'ai une erreur: "L'indice n'appartient pas à la
sélection" lors de la copie du 2ième onglet sélectionné sur
mon classeur. Le 1er onglet sélectionné se copie parfaitement.
Une exécution pas à pas m'arrête sur la ligne lors de la 2ième
tentative de copie:
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)

Mes onglets ne sont pas protégés, ils ont simplement des
boutons de contrôles et des mise en formes.
Pourquoi ce bug ?

Cordialement

Ga51







Bonjour.
Code du bouton de Feuil3 :

Private Sub CommandButton1_Click()
Workbooks.Add
ActiveWorkbook.SaveAs Filename:="LeNomQueTuVeux.xls"
Workbooks(1).Activate
UserForm1.Show
End Sub

Code du bouton du userform :

Private Sub CommandButton1_Click()
UserForm1.Hide
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
MsgBox .List(i)
Sheets(.List(i)).Copy
Before:=Workbooks("LeNomQueTuVeux.xls").Sheets(1)
End If
Next i
End With
Workbooks("LeNomQueTuVeux.xls").Save
Workbooks("LeNomQueTuVeux.xls").Close
End Sub

Cordialement.
Daniel
"ga51" a écrit dans le message de news:
O9$







Merci pour ton exemple, il fonctionne super bien en effet.

Pour aller plus loin, en fait je voulais sauvegarder les
onglets sélectionnés dans un nouveau classeur et le renommer
avec:
ActiveWorkbook.SaveAs Filename:= ...etc.. (pour envoi futur
par mail) plutôt que d'envoyer ces onglets dans un classeur
déjà existant.
Car dans ma configuration de travail, cela sera impossible.
Pourrais-tu m'aider pour la syntaxe ?

Merci beaucoup de ton aide

Cordialement.

Ga51








J'ai créé un nouveau classeur minimal avec une userform et
une listbox. Ca fonctionne sans problème. Je te l'envoie.
http://cjoint.com/?fqwWPpRgFp
Cordialement.
Daniel
"ga51" a écrit dans le message de news:









Merci d'avoir insister !
En effet cela fonctionne (je n'avais pas le classeur cible
ouvert!)...
Mais si je le transpose dans ma macro, cela ne fonctionne
pas.
Sans doute ce sont les propriétés de ma listbox, créée
dans un userform, qui ne correspondent pas ?
j'ai mis les propriétés à MultiSelect, je remplis la
listbox avec Additem pour l'alimenter du noms des onglets.

Qq'un pour m'aider svp

Merci beaucoup

Cordialement.

Ga51










Bonjour,

pas de pb pour moi non plus avec le fichier de Daniel
alors que j'ai la même config que toi. Il doit y avoir
autre chose.
Fais une éxécution en mode pas à pas du fichier qui t'a
été transmis et regarde ce que ca donne.

A+










J'ai Excel 2000 sur win xp pro

Merci en tout cas pour tes réponses.

Cordialement

Ga51










Problème de version ?
La listbox est configurée de telle manière qu'il faut
maintenir la touche CTRL enfoncée pour faire une
seconde sélection.
Sinon il va falloir que les VRAIS gourous se penchent
sur ton problème.
Cordialement.
Daniel
"ga51" a écrit dans le message de
news:









Merci Daniel pour le classeur de test.
Mais j'ai toujours la même erreur sur ton
classeur.(l'objet n'appartient pas a la selection)
De plus dans la msgbox, il n'y a qu'1 seule feuille et
non toutes les feuilles sélectionnées.

Manquerait-il qqchose ?

Cordialement

Ga51










Je t'envoie le classeur qui m'a servi à faire le
test.
http://cjoint.com/?fqqZYIv66K
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %










Bonjour,

Merci pour ta réponse,

Oui tous les onglets sont dans le classeur ouvert et
donc actif.

Cordialement

Ga











Bonjour.
J'ai pas trop étudié ton code; est-ce que la
feuille copiée fait partie du classeur actif ?
Cordialement.
Daniel
"ga51" a écrit dans le message de
news: %











Merci Daniel pour ta réponse,

mais j'ai une erreur sur la ligne
sheets(.List(i)).copy: n'appartient pas à la
sélection.

Merci encore pour ton aide,

Cordialement.


























































1 2 3 4