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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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" <ga51@hotmail.fr> a écrit dans le message de news:
e0RmbquWFHA.3280@TK2MSFTNGP09.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O4oeIJuWFHA.1240@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%233GhwPtWFHA.2700@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O9$Z4WmWFHA.3928@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e966FIlWFHA.1468@tk2msftngp13.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
upaVZ4iWFHA.612@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%23l0OY0hWFHA.2664@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%2304hDVhWFHA.2420@TK2MSFTNGP12.phx.gbl...
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.
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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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" <ga51@hotmail.fr> a écrit dans le message de news:
uKAsbmvWFHA.1040@TK2MSFTNGP10.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e0RmbquWFHA.3280@TK2MSFTNGP09.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O4oeIJuWFHA.1240@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%233GhwPtWFHA.2700@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O9$Z4WmWFHA.3928@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e966FIlWFHA.1468@tk2msftngp13.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
upaVZ4iWFHA.612@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%23l0OY0hWFHA.2664@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%2304hDVhWFHA.2420@TK2MSFTNGP12.phx.gbl...
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.
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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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" <ga51@hotmail.fr> a écrit dans le message de news:
uKAsbmvWFHA.1040@TK2MSFTNGP10.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e0RmbquWFHA.3280@TK2MSFTNGP09.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O4oeIJuWFHA.1240@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%233GhwPtWFHA.2700@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O9$Z4WmWFHA.3928@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e966FIlWFHA.1468@tk2msftngp13.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: upaVZ4iWFHA.612@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %23l0OY0hWFHA.2664@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %2304hDVhWFHA.2420@TK2MSFTNGP12.phx.gbl...
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.
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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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" <ga51@hotmail.fr> a écrit dans le message de news:
uKAsbmvWFHA.1040@TK2MSFTNGP10.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e0RmbquWFHA.3280@TK2MSFTNGP09.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O4oeIJuWFHA.1240@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%233GhwPtWFHA.2700@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O9$Z4WmWFHA.3928@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e966FIlWFHA.1468@tk2msftngp13.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
upaVZ4iWFHA.612@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %23l0OY0hWFHA.2664@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %2304hDVhWFHA.2420@TK2MSFTNGP12.phx.gbl...
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.
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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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" <ga51@hotmail.fr> a écrit dans le message de news:
uKAsbmvWFHA.1040@TK2MSFTNGP10.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e0RmbquWFHA.3280@TK2MSFTNGP09.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O4oeIJuWFHA.1240@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%233GhwPtWFHA.2700@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O9$Z4WmWFHA.3928@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e966FIlWFHA.1468@tk2msftngp13.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
upaVZ4iWFHA.612@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%23l0OY0hWFHA.2664@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %2304hDVhWFHA.2420@TK2MSFTNGP12.phx.gbl...
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.
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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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" <ga51@hotmail.fr> a écrit dans le message de news:
uKAsbmvWFHA.1040@TK2MSFTNGP10.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e0RmbquWFHA.3280@TK2MSFTNGP09.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O4oeIJuWFHA.1240@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%233GhwPtWFHA.2700@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O9$Z4WmWFHA.3928@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e966FIlWFHA.1468@tk2msftngp13.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
upaVZ4iWFHA.612@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %23l0OY0hWFHA.2664@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %2304hDVhWFHA.2420@TK2MSFTNGP12.phx.gbl...
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.
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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
Pour la ligne do while, qu'est-ce qui ne fonctionne pas ?, chez moi, ça
marche.
Daniel
"ga51" <ga51@hotmail.fr> a écrit dans le message de news:
eKF%23J1xWFHA.3584@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
uKAsbmvWFHA.1040@TK2MSFTNGP10.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e0RmbquWFHA.3280@TK2MSFTNGP09.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O4oeIJuWFHA.1240@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%233GhwPtWFHA.2700@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O9$Z4WmWFHA.3928@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e966FIlWFHA.1468@tk2msftngp13.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
upaVZ4iWFHA.612@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %23l0OY0hWFHA.2664@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %2304hDVhWFHA.2420@TK2MSFTNGP12.phx.gbl...
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.
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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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
Ga51Pour 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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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" <ga51@hotmail.fr> a écrit dans le message de news:
eKF%23J1xWFHA.3584@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
uKAsbmvWFHA.1040@TK2MSFTNGP10.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e0RmbquWFHA.3280@TK2MSFTNGP09.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O4oeIJuWFHA.1240@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%233GhwPtWFHA.2700@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O9$Z4WmWFHA.3928@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e966FIlWFHA.1468@tk2msftngp13.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
upaVZ4iWFHA.612@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %23l0OY0hWFHA.2664@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %2304hDVhWFHA.2420@TK2MSFTNGP12.phx.gbl...
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.
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
Ga51Pour 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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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
Ga51Pour 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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
Bonsoir.
Là, je n'arrive plus à suivre. Si tu pouvais mettre ton classeur sur cjoint
?
Cordialement.
Daniel
"ga51" <ga51@hotmail.fr> a écrit dans le message de news:
e%23eXSv5WFHA.3348@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
eKF%23J1xWFHA.3584@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
uKAsbmvWFHA.1040@TK2MSFTNGP10.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e0RmbquWFHA.3280@TK2MSFTNGP09.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O4oeIJuWFHA.1240@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%233GhwPtWFHA.2700@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O9$Z4WmWFHA.3928@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e966FIlWFHA.1468@tk2msftngp13.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
upaVZ4iWFHA.612@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %23l0OY0hWFHA.2664@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %2304hDVhWFHA.2420@TK2MSFTNGP12.phx.gbl...
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.
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
Ga51Pour 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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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
Ga51Bonsoir.
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
Ga51Pour 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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.
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" <ga51@hotmail.fr> a écrit dans le message de news:
e%23eXSv5WFHA.3348@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
eKF%23J1xWFHA.3584@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
uKAsbmvWFHA.1040@TK2MSFTNGP10.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e0RmbquWFHA.3280@TK2MSFTNGP09.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O4oeIJuWFHA.1240@TK2MSFTNGP14.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
%233GhwPtWFHA.2700@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
O9$Z4WmWFHA.3928@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de news:
e966FIlWFHA.1468@tk2msftngp13.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: upaVZ4iWFHA.612@TK2MSFTNGP12.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %23l0OY0hWFHA.2664@TK2MSFTNGP15.phx.gbl...
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" <ga51@hotmail.fr> a écrit dans le message de
news: %2304hDVhWFHA.2420@TK2MSFTNGP12.phx.gbl...
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.
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
Ga51Bonsoir.
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
Ga51Pour 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
Ga51Merci 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
Ga51Je 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
Ga51En 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).ActivateWith 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 IfNext 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
Ga51En 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.
Ga51Si 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
Ga51Bonjour.
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.
Ga51J'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.
Ga51Bonjour,
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
Ga51Problè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
Ga51Je 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
GaBonjour.
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.