Nom des feuilles excel automatique selon une cellule + compteur

Fermé
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020 - Modifié le 4 janv. 2019 à 09:39
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020 - 14 janv. 2019 à 19:06
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

' 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
A voir également:

5 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
3 janv. 2019 à 07:35
Bonjour,
site de partage fichier
https://www.cjoint.com
0
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020
3 janv. 2019 à 19:36
Bonjour,
Merci pour le lien, j'y ai mis mon fichier
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
4 janv. 2019 à 07:09
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/
0
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020
Modifié le 4 janv. 2019 à 08:14
Bonjour,

Désolée je débute voici le lien https://www.cjoint.com/c/IAeharS0YXO Merci pour ta patience
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
4 janv. 2019 à 09:06
Re,

Certes, certes mais a quel moment voulez vous que ca se passe votre affaire car comprends pas trop la logique!!
0
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020 > f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024
Modifié le 4 janv. 2019 à 09:56
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
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
Modifié le 4 janv. 2019 à 11:08
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??
0
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020
4 janv. 2019 à 22:53
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
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
5 janv. 2019 à 07:53
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……...
0
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020
7 janv. 2019 à 19:50
Bonjour,

Je continue de chercher une solution...

La fonction ne gère pas le compteur, elle me créée en doublon la dernière feuille.

En tout cas je te remercie pour ton aide.
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
8 janv. 2019 à 07:34
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
0
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020
10 janv. 2019 à 20:51
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 ?
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
Modifié le 11 janv. 2019 à 07:58
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
0
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020
11 janv. 2019 à 19:32
Bonjour,

Si mes feuilles ne sont pas protégés, la macro me créée toutes les factures avec une dernière + 2019-70(2) et

Si mes feuilles sont protégés, ce que j'aimerai..., là ça fait une erreur d'exécution
0
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020
11 janv. 2019 à 19:42
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
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
11 janv. 2019 à 20:22
Re
Chez moi y a pas de feuilles protègees et ça marche sans problème!!!!!!
Pouvez mettre votre fichier à dispo??
0
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020
11 janv. 2019 à 21:38
ggrrrr ça ne me garde pas le verrouillage de ma feuille modele
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MR682 Messages postés 15 Date d'inscription jeudi 3 janvier 2019 Statut Membre Dernière intervention 21 février 2020
14 janv. 2019 à 19:06
Bonjour,

Génial ça fonctionne nickel!!

un énorme MERCI pour ton aide et ton temps
0