Copier des feuilles sans nom dans un autre classeur
Bonjour à tous les membres du forum.
Désolé du titre étrange, je n'avais aucune idée précise d'un nom clair qui ne ressemble pas à d'autre problèmes sur le forum.
J'ai faits des recherches sur le forum pour trouver des pistes de solutions pour mon souci mais aucun de ceux que j'ai trouvés ne m'aide précisément sur un détail en particulier.
Mon document possède un menu Accueil avec un bouton : Nouveau Mois. Ce bouton doit copier la feuille Accueil ainsi que la 2e feuille : Original dans un nouveau classeur que j'ai renommé auparavant dans le même dossier. Jusque-là tout fonctionne bien. Ce que je suis incapable de faire, (mes connaissances sont principalement limité dans l'utilisation du VB dans les applications offices) est de copier la dernière page du document à la suite des 2 autres, sans mentionner son nom et sa position puisqu'il n'est jamais identique dans aucun des documents.
Le code doit fonctionné dans les documents que ce même bouton reproduit.
J'ai essayé plusieurs formules que j'ai modifiées en conséquence mais rien n'a fonctionné jusqu'à maintenant.
Mon code :
Private Sub CommandButton1_Click()
Dim nomfic As String
Dim nomcplet As String
Dim nbfeuil As String
nomfic = Me.TextBox1.Text
If Dir(ActiveWorkbook.Path & "\" & nomfic + ".xlsm") <> "" Then
MsgBox ("Le fichier" + " " + nomfic + ".xlsm" + " " + "existe déjà")
Exit Sub
Else
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nomfic + ".xlsm"
End If
nomcplet = nomfic + ".xlsm"
Workbooks.Open (ActiveWorkbook.Path & "\" & nomfic + ".xlsm")
While nbfeuil > 2
Workbooks(nomcplet).Sheets(nbfeuil).Range("A12:G28").ClearContents
Workbooks(nomcplet).Sheets(nbfeuil).Range("C31:G31").ClearContents
Workbooks(nomcplet).Sheets(nbfeuil).Range("A32:G32").ClearContents
nbfeuil = nbfeuil - 1
Wend
Workbooks(nomcplet).Activate
Workbooks(nomcplet).Sheets(1).Range("B7").Value = Me.TextBox1.Text
ActiveWorkbook.Save
ActiveWorkbook.Close
MsgBox "Mois de " + nomfic + " Créé avec succès."
End SubJe vous remercie de toute l'aide que vous aller m'apporter.
Merci et bonne fin de journée.
Bonsoir,
question: tu cherches une feuille qui n'a jamais le même nom ni la même position ! donc à quoi la reconnais-tu ?
Si tu ne la reconnais pas, tu seras bien en peine pour la tranférer...
Cordialement.
désolé ! Je m’aperçois à l'instant que ce n'est pas dans ce code que les feuilles ont leur nom.
C'est dans ce code.
Private Sub CommandButton1_Click()
Dim nbpage As Integer
nbpage = Sheets.Count
Sheets(nbpage).Copy After:=Sheets(Sheets.Count)
' Renomme la feuille
Application.ActiveSheet.Name = Me.daterap.Text
Application.ActiveSheet.Range("H51").Value = Me.daterap.Text
Application.ActiveSheet.CheckBox1.Enabled = True
Application.ActiveSheet.CheckBox1.Value = False
Unload Me
End SubDonc pour répondre à ta question, Ce qui les identifie ce sont la textbox nommée : datera. il gagne un nom par rapport à ce que tu rentres dans la textbox. j'ai faits des tests et je comprends pas comment faire le code pour y placer une textbox comme variable.
Ce n'est peut-être pas possible non plus.
Merci.
Bonjour à tous.
J'ai travaillé avec un collègue et nous avons trouvé la solution.
Nous avons faits l'inverse de ce que je voulais faire au départ. Plutôt que copier les 2 premières et la dernière, nous avons copié toutes les pages et supprimé celles qu'on ne voulait plus. C'étais plus facile de cette manière.
Si cela peut aider d'autres personnes alors voici le code:
Private Sub CommandButton1_Click()
Dim nomfic As String
Dim nomcplet As String
Dim dfeuille As Integer
Dim nbfeuil As Integer
nomfic = Me.TextBox1.Text
If Dir(ActiveWorkbook.Path & "\" & nomfic + ".xlsm") <> "" Then
MsgBox ("Le fichier" + " " + nomfic + ".xlsm" + " " + "existe déjà")
Exit Sub
Else
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nomfic + ".xlsm"
End If
nomcplet = nomfic + ".xlsm"
Workbooks.Open (ActiveWorkbook.Path & "\" & nomfic + ".xlsm")
Application.DisplayAlerts = False
nbfeuil = Workbooks(nomcplet).Sheets.Count
nbfeuil = nbfeuil - 1
While nbfeuil > 2
Workbooks(nomcplet).Sheets(nbfeuil).Delete
nbfeuil = nbfeuil - 1
Wend
Application.DisplayAlerts = True
Workbooks(nomcplet).Activate
Workbooks(nomcplet).Sheets(1).Range("B7").Value = Me.TextBox1.Text
ActiveWorkbook.Save
ActiveWorkbook.Close
MsgBox "Mois de " + nomfic + " Créé avec succès."
Me.Hide
End SubMerci à toi MFerrand et bonne continuation à tous les membres du forum.