Nom des feuilles excel automatique selon une cellule + compteur
MR682
Messages postés
16
Statut
Membre
-
MR682 Messages postés 16 Statut Membre -
MR682 Messages postés 16 Statut Membre -
Bonjour à tous,
Tout d'abord mes meilleurs voeux pour cette nouvelle année.
N'étant pas très douée en macro, je fais appel à votre savoir.
J'aimerai une macro qui me permette de nommer automatiquement les feuilles selon un numéro de départ 'F201901' que j'ai indiquer dans la première feuille "N°factures!A1" pour que les suivantes deviennent F201902..03 etc. J'ai voulu ajouter la fonction qui évite la création de doublon mais je suis emmêlée les pinceaux
Voici mon bout de macro
je n'ai pas trouvé comment vous faire part de mon fichier excel
Merci pour votre retour
Tout d'abord mes meilleurs voeux pour cette nouvelle année.
N'étant pas très douée en macro, je fais appel à votre savoir.
J'aimerai une macro qui me permette de nommer automatiquement les feuilles selon un numéro de départ 'F201901' que j'ai indiquer dans la première feuille "N°factures!A1" pour que les suivantes deviennent F201902..03 etc. J'ai voulu ajouter la fonction qui évite la création de doublon mais je suis emmêlée les pinceaux
Voici mon bout de macro
' AjoutAutoFeuilles ()
Dim compteur As Integer
compteur = 1
For compteur = 1 To Range("N°factures!A1").Value
Sheets.Add
For Each Worksheet In Worksheets
If Worksheet.Name = "N°factures!A1" & compteur Then
Application.DisplayAlerts = False
Worksheet.Delete
Application.DisplayAlerts = True
End If
Next Worksheet
ActiveSheet.Name = "N°factures!A1" & compteur
Next
End Sub
je n'ai pas trouvé comment vous faire part de mon fichier excel
Merci pour votre retour
5 réponses
-
-
-
Bonjour,
Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com
Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
ou
'mon partage
https://mon-partage.fr/
-
-
Bonjour,
Désolée je débute voici le lien https://www.cjoint.com/c/IAeharS0YXO Merci pour ta patience-
Re,
Certes, certes mais a quel moment voulez vous que ca se passe votre affaire car comprends pas trop la logique!!- Dans le fichier, j'ai les deux premières feuilles qui récapitule pour l'une les numéros de factures et l'autre l'ensemble des factures détaillées. Puis viennent les factures "F201901", F201902..j'aimerai qu'en créant la feuille suivante, le nom de la feuille se mette automatiquement en gardant l'ordre chronologique soit F201903 mais aussi, après réflexion, qu'elle se créée, en copiant le détail de la feuille F201901.
En espérant avoir été plus compréhensible
-
Re,
Il vous faut une feuille model qui sera recopiee avec les valeurs et le nom qu'il faudra dans la chronologie. Normalement pas besoin de la feuille N°factures. Le numero de prochaine facture pourrait etre ecrit en auto dans la cellule B16 du model. Il faudra aussi un bouton ou autre action pour faire cette recopie!!
Pourquoi feuille: F201901 et ailleurs N° facture: 2019-01
La feuille FACTURATION JANVIER 2019 sera remplie comment et a quoi sert-elle??
-
-
Re,
j'ai trouvé cette fonction vba qui fonctionne mais elle ne tient pas compte des n°déjà créer préalablement.
est-ce qu'il y a un moyen d'ajouter dans la fonction un compteur (en partant du n° de ma première "feuille 2019-01") ?
Sub Create()
'Updateby Extendoffice 20160704
Dim I As Long
Dim xNumber As Integer
Dim xName As String
Dim xActiveSheet As Worksheet
On Error Resume Next
Application.ScreenUpdating = False
Set xActiveSheet = ActiveSheet
xNumber = InputBox("Enter number of times to copy the current sheet")
For I = 1 To xNumber
xName = ActiveSheet.Name
xActiveSheet.Copy After:=ActiveWorkbook.Sheets(xName)
ActiveSheet.Name = "2019-" & I
Next
xActiveSheet.Activate
Application.ScreenUpdating = True
End Sub
c'est un fichier test ..F201901 => F=feuille et le n°de facture 201901
la feuille FACTURATION ve reprendre différentes information de toutes les factures créées-
Bonjour,
Vous restez sur votre facon de voir, allons y:
Sub Create() 'Updateby Extendoffice 20160704 Dim I As Long Dim xNumber As Integer Dim xName As String Dim xActiveSheet As Worksheet On Error Resume Next Application.ScreenUpdating = False Num_depart = ActiveSheet.Range("B16") Num_depart = Split(Num_depart, "-") Ndep = CLng(Num_depart(1)) Set xActiveSheet = ActiveSheet xNumber = InputBox("Enter number of times to copy the current sheet") For I = Ndep To xNumber xName = ActiveSheet.Name xActiveSheet.Copy After:=ActiveWorkbook.Sheets(xName) With ActiveSheet .Name = "2019-" & Format(I, "00") .Range("B16") = .Name End With Next I xActiveSheet.Activate Application.ScreenUpdating = True Set xActiveSheet = Nothing End Sub
Il faudrait ajouter des tests sur la saisie de l'inputbox, mais a vous de voir……... -
-
Bonjour,
En effet, code modifie:
Sub Create() 'Updateby Extendoffice 20160704 Dim I As Long Dim xNumber As Integer Dim xName As String Dim xActiveSheet As Worksheet On Error Resume Next Application.ScreenUpdating = False Num_depart = ActiveSheet.Range("B16") Num_depart = Split(Num_depart, "-") Ndep = CLng(Num_depart(1)) + 1 Set xActiveSheet = ActiveSheet xNumber = InputBox("Enter number of times to copy the current sheet") xNumber = xNumber + Ndep For I = Ndep To xNumber xName = ActiveSheet.Name xActiveSheet.Copy After:=ActiveWorkbook.Sheets(xName) With ActiveSheet .Name = "2019-" & Format(I, "00") .Range("B16") = .Name End With Next I xActiveSheet.Activate Application.ScreenUpdating = True Set xActiveSheet = Nothing End Sub
-
-
Bonjour,
Top je n'ai plus de doublon merci. Par contre, ça me crée deux feuilles au lieu d'une mais c'est gérable.
Et si je veux pousser l'automatisme...
Est-ce qu'il est possible de créer automatiquement le nombre de factures défini par la feuilles "N°factures" ? ex. : j'inscris les numéros de factures (2019-01..2019-02 jusuqu'à 2019-70, soit 70 factures) sur cette feuille de la cellule B1 à B70. Puis, via le clic du bouton qui se trouve sur la feuille de factures "modèle", les 70 factures se créées avec le nom de la feuille mis automatiquement ?-
Bonjour,
deux feuilles au lieu d'une
Plait-il??
Chez moi si 1: creation d'une seule feuille
et ainsi de suite
Numero en fonction de B1-B70 en auto sur clic bouton, pas de problème...
Suite:
une facon de faire:Sub Create() 'Updateby Extendoffice 20160704 Dim I As Long Dim xNumber As Integer Dim xName As String Dim xActiveSheet As Worksheet Dim Plage As Variant 'On Error Resume Next 'Application.ScreenUpdating = False With Worksheets("N°Facture") Plage = .Range("B1:B" & .Range("B" & Rows.Count).End(xlUp).Row) Nb = UBound(Plage) End With With Worksheets("Modéle") .Activate xName = .Name End With For n = 1 To Nb ActiveSheet.Copy After:=ActiveWorkbook.Sheets(xName) With ActiveSheet .Name = Plage(n, 1) .Range("B16") = .Name xName = .Name End With Next n xActiveSheet.Activate Application.ScreenUpdating = True Set xActiveSheet = Nothing End Sub -
-
ok j'ai trouvé pour la protection de la feuille j'ai rajouté Unprotect et Protect (ci-dessous) par contre je n'arrive pas à enlever la dernière feuille supplémentaire 2019-070 (2)
Sub MacroavecfeuilleProtect()
ActiveSheet.Unprotect "ae2c"
'Updateby Extendoffice 20160704
Dim I As Long
Dim xNumber As Integer
Dim xName As String
Dim xActiveSheet As Worksheet
Dim Plage As Variant
'On Error Resume Next
'Application.ScreenUpdating = False
With Worksheets("N°Factures")
Plage = .Range("B1:B70" & .Range("B" & Rows.Count).End(xlUp).Row)
Nb = UBound(Plage)
End With
With Worksheets("MODELE")
.Activate
xName = .Name
End With
For n = 1 To Nb
ActiveSheet.Copy After:=ActiveWorkbook.Sheets(xName)
With ActiveSheet
.Name = Plage(n, 1)
.Range("B16") = .Name
xName = .Name
End With
Next n
xActiveSheet.Activate
Application.ScreenUpdating = True
Set xActiveSheet = Nothing
ActiveSheet.Protect "ae2c", True, True, True
End Sub -
-
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Génial ça fonctionne nickel!!
un énorme MERCI pour ton aide et ton temps