Je souhaite copier un onglet d'un fichier A, créer un nouveau classeur B et coller cette copie sur ce dernier (classeur B). Et tout ça en automatique. Le déclencheur de la commande est un bouton.
En principe, une seule ligne suffit à faire la copie, mais il faut être certain que le classeur de destination est bien ouvert :
Code:
Sub CommandButton1_Click()
Sheets("Nom de feuille").Copy Before:=Workbooks("Classeur.xlsm").Sheets(x)
End Sub
Il faut bien sûr remplacer le textes entre guillemets par le nom de la feuille à copier et le nom du classeur cible. Dans cet exemple, la feuille sera copiée en première position dans la barre des onglets. Pour l'insérer devant un feuille quelconque, il suffit de remplacer "x" par le n° de position de la feuille.
Pour copier en dernière position :
Sub CommandButton1_Click()
Sheets("Nom de feuille").Copy After:=Workbooks("Classeur.xlsm").Sheets(Sheets.Count)
End Sub
Pardon c'est bon j'avais un petit bout de code pas effacé....
Merci.
Il est possible d'abuser est de demander si après :
Sheets("Nom de feuille").Copy
Je peux rajouter la commande enregistrer sous.( que je ne connais pas )
Car comme ça la personne n'a plus qu'a mettre le nom est valider.
Voici un exemple utilisant la fenêtre "Enregistrer sous" d'Excel :
Code:
Private Sub CommandButton1_Click()
Dim SaveBox As FileDialog
Set SaveBox = Application.FileDialog(msoFileDialogSaveAs)
Sheets("Feuil1").Copy
With SaveBox
.Show
.Execute
End With
End Sub
Si tu sélectionnes le mot-clé "FileDialog" et que tu appuies sur F1 tu auras des précisions concernant le paramétrage de la boîte de dialogue. Dans l'exemple ci-dessus, le plus simple qui soit, il te faudra indiquer (ou sélectionner) le répertoire et indiquer le nom du fichier ainsi que son extension.
BON JE L'AI RÉCUPERER...
Y a du boulot car toutes mes cellules sont en vrac mais j'ai les données.
Ca m'apprendra à pas faire de sauvegarde récente...
J'ai pu tester le code et ça marche au poil !!!!
J'ai la possibilité de rajouter la valeur d'une liste déroulante + la date dans le nom du fichier en auto?
Private Sub CommandButton1_Click()
Dim SaveBox As FileDialog
Set SaveBox = Application.FileDialog(msoFileDialogSaveAs)
'Sheets("Feuil1").Copy
With SaveBox
.Title = "Enregistrer sous..."
.AllowMultiSelect = False
.InitialFileName = ComboBox1 & TextBox1 & Date & ComboBox2
.Show
' .Execute
End With
End Sub
Pour te permettre de le tester, je te joins un fichier exemple avec un UserForm s'ouvrant sur un clic du bouton Démo. Pour éviter des enregistrements inutiles durant les tests, j'ai mis la ligne de copie et celle d'exécution en commentaires.
Bonne journée.
Cordialement.
NB : tant qu'une des zones à renseigner est vide, le bouton Enregistrer est désactivé. Ca permet d'éviter un plantage du code s'il manque un élément dans le chemin du fichier.