Je vous souhaite avant tout une excellente année 2019 à tous !
J'ai un soucis de duplication de Feuil, je m'explique
- J'ai dans une feuil nommé Ref une liste en colonne A d'environ 180
Reference
- J'ai une autre Feuil nommé Modèle stock
Je souhaiterais avoir un bouton qui crée autant de feuil que de ref avec
comme nom de feuil le nom de chacune des ref mais que chaque feuil soit
identique à la Feuil Modèle stock
En revanche si il y a un changement lors de ma prochaine importation de ref
dans ma feuil Ref, je souhaiterais qu'il ne touche jamais aux feuil déjà
créer mais qu'il ajoute les nouvelles feuil des nouvelles ref et si possible
les trier en croissant.
J'espère avoir été assez clair...
On m'avait déjà donné cela et qui m'est très utile mais qui ne colle pas
avec mon nouveau besoin
Sub ajout_feuilles()
Dim nom, c
For Each c In Range("liste")
nom = c.Value
Sheets.Add Count:=1, after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = nom
Next c
End Sub
Merci
Manu
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Pareil qu'avec l'autre code, Voici ce qu'il se passe : Je clic une fois sur le bouton, la macro s'exécute parfaitement et fabrique autant de Feuil de ce que comporte la Col A de la feuil "950" (110 feuil) mais fabrique en plus une copie de la Feuil "02 Modèle" Je supprime cette feuille puis pour tester je change un nom de la col A de la feuil "950" Je reclic sur le bouton, et là il m'ajoute bien le nouveau nom dans les feuil mais me copie 110 fois la Feuil "02 modèle"
J'ai modifié seulement une ligne de code, j'ai testé sommairement la macro, et cela semble s'exécuter correctement. Dans la procédure, le nom du modèle que tu attribues à la variable "FMmodel" doit être identique au nom de l'onglet de ladite feuille, orthographe et casse. '------------------------------------- Sub Creation_Feuilles() Dim Rg As Range, T(), Elt As Variant Dim Sh As Worksheet, A As Long Dim Sht As Worksheet, FMmodel As String '***********Variables à définir************* 'Nom de la feuille modèle FMmodel = "02 Modèle" 'L'index de la première feuille d'où doivent s'insérer 'les autres feuilles semblables au modèle A = 1 '******************************************** Set Sht = Worksheets(FMmodel) With Worksheets("950") 'Définir la plage de cellules Set Rg = .Range("A1:A" & .Range("A" & _ .Rows.Count).End(xlUp).Row) T = Rg.Value Tri_Croissant_Noms_Feuille T End With T = Tri_Croissant_Noms_Feuille(T) Application.ScreenUpdating = False On Error Resume Next For Each Elt In T If Elt <> Sht.Name Then Set Sh = Worksheets(Elt) If Err <> 0 Then Err = 0 With Sht .Copy After:=Worksheets(Worksheets(A).Index) Worksheets(Worksheets(A + 1).Index).Name = Elt A = A + 1 End With End If End If Next Application.ScreenUpdating = True End Sub '----------------------------------------------- MichD
Le 08/févr./2019 à 07:26, Manu a écrit :
Pareil qu'avec l'autre code, Voici ce qu'il se passe :
Je clic une fois sur le bouton, la macro s'exécute parfaitement et
fabrique autant de Feuil de ce que comporte la Col A de la feuil "950"
(110 feuil) mais fabrique en plus une copie de la Feuil "02 Modèle"
Je supprime cette feuille puis pour tester je change un nom de la col A
de la feuil "950"
Je reclic sur le bouton, et là il m'ajoute bien le nouveau nom dans les
feuil mais me copie 110 fois la Feuil "02 modèle"
J'ai modifié seulement une ligne de code, j'ai testé sommairement la
macro, et cela semble s'exécuter correctement.
Dans la procédure, le nom du modèle que tu attribues à la variable
"FMmodel" doit être identique au nom de l'onglet de ladite feuille,
orthographe et casse.
'-------------------------------------
Sub Creation_Feuilles()
Dim Rg As Range, T(), Elt As Variant
Dim Sh As Worksheet, A As Long
Dim Sht As Worksheet, FMmodel As String
'***********Variables à définir*************
'Nom de la feuille modèle
FMmodel = "02 Modèle"
'L'index de la première feuille d'où doivent s'insérer
'les autres feuilles semblables au modèle
A = 1
'********************************************
Set Sht = Worksheets(FMmodel)
With Worksheets("950")
'Définir la plage de cellules
Set Rg = .Range("A1:A" & .Range("A" & _
.Rows.Count).End(xlUp).Row)
T = Rg.Value
Tri_Croissant_Noms_Feuille T
End With
T = Tri_Croissant_Noms_Feuille(T)
Application.ScreenUpdating = False
On Error Resume Next
For Each Elt In T
If Elt <> Sht.Name Then
Set Sh = Worksheets(Elt)
If Err <> 0 Then
Err = 0
With Sht
.Copy After:=Worksheets(Worksheets(A).Index)
Worksheets(Worksheets(A + 1).Index).Name = Elt
A = A + 1
End With
End If
End If
Next
Application.ScreenUpdating = True
End Sub
'-----------------------------------------------
Pareil qu'avec l'autre code, Voici ce qu'il se passe : Je clic une fois sur le bouton, la macro s'exécute parfaitement et fabrique autant de Feuil de ce que comporte la Col A de la feuil "950" (110 feuil) mais fabrique en plus une copie de la Feuil "02 Modèle" Je supprime cette feuille puis pour tester je change un nom de la col A de la feuil "950" Je reclic sur le bouton, et là il m'ajoute bien le nouveau nom dans les feuil mais me copie 110 fois la Feuil "02 modèle"
J'ai modifié seulement une ligne de code, j'ai testé sommairement la macro, et cela semble s'exécuter correctement. Dans la procédure, le nom du modèle que tu attribues à la variable "FMmodel" doit être identique au nom de l'onglet de ladite feuille, orthographe et casse. '------------------------------------- Sub Creation_Feuilles() Dim Rg As Range, T(), Elt As Variant Dim Sh As Worksheet, A As Long Dim Sht As Worksheet, FMmodel As String '***********Variables à définir************* 'Nom de la feuille modèle FMmodel = "02 Modèle" 'L'index de la première feuille d'où doivent s'insérer 'les autres feuilles semblables au modèle A = 1 '******************************************** Set Sht = Worksheets(FMmodel) With Worksheets("950") 'Définir la plage de cellules Set Rg = .Range("A1:A" & .Range("A" & _ .Rows.Count).End(xlUp).Row) T = Rg.Value Tri_Croissant_Noms_Feuille T End With T = Tri_Croissant_Noms_Feuille(T) Application.ScreenUpdating = False On Error Resume Next For Each Elt In T If Elt <> Sht.Name Then Set Sh = Worksheets(Elt) If Err <> 0 Then Err = 0 With Sht .Copy After:=Worksheets(Worksheets(A).Index) Worksheets(Worksheets(A + 1).Index).Name = Elt A = A + 1 End With End If End If Next Application.ScreenUpdating = True End Sub '----------------------------------------------- MichD
Manu
Je n'y arrive pas, j'ai mis cela, et c'est toujours pareil.... Sub Creation_Feuilles() Dim Rg As Range, T(), Elt As Variant Dim Sh As Worksheet, A As Long Dim Sht As Worksheet, FMmodel As String FMmodel = "02 Modèle" A = "950" '***********Variables à définir************* 'Remplace "Modèle" par le nom de ta feuille modèle 'Set Sht = Worksheets("02 Modèle") Set Sht = Worksheets(FMmodel) 'L'index de la première feuille d'où doivent s'insérer 'les autres feuilles semblables au modèle A = 1 '******************************************** With Worksheets("950") 'Définir la plage de cellules Set Rg = .Range("A1:A" & .Range("A" & _ .Rows.Count).End(xlUp).Row) T = Rg.Value Tri_Croissant_Noms_Feuille T End With T = Tri_Croissant_Noms_Feuille(T) Application.ScreenUpdating = False On Error Resume Next For Each Elt In T If Elt <> Sht.Name Then Set Sh = Worksheets(Elt) If Err <> 0 Then Err = 0 With Sht .Copy After:=Worksheets(Worksheets(A).Index) Worksheets(Worksheets(A + 1).Index).Name = Elt A = A + 1 End With End If End If Next Application.ScreenUpdating = True End Sub Vraiment complexe le VBA ! Manu "MichD" a écrit dans le message de groupe de discussion : Le 08/févr./2019 à 07:26, Manu a écrit :
Pareil qu'avec l'autre code, Voici ce qu'il se passe : Je clic une fois sur le bouton, la macro s'exécute parfaitement et fabrique autant de Feuil de ce que comporte la Col A de la feuil "950" (110 feuil) mais fabrique en plus une copie de la Feuil "02 Modèle" Je supprime cette feuille puis pour tester je change un nom de la col A de la feuil "950" Je reclic sur le bouton, et là il m'ajoute bien le nouveau nom dans les feuil mais me copie 110 fois la Feuil "02 modèle"
J'ai modifié seulement une ligne de code, j'ai testé sommairement la macro, et cela semble s'exécuter correctement. Dans la procédure, le nom du modèle que tu attribues à la variable "FMmodel" doit être identique au nom de l'onglet de ladite feuille, orthographe et casse. '------------------------------------- Sub Creation_Feuilles() Dim Rg As Range, T(), Elt As Variant Dim Sh As Worksheet, A As Long Dim Sht As Worksheet, FMmodel As String '***********Variables à définir************* 'Nom de la feuille modèle FMmodel = "02 Modèle" 'L'index de la première feuille d'où doivent s'insérer 'les autres feuilles semblables au modèle A = 1 '******************************************** Set Sht = Worksheets(FMmodel) With Worksheets("950") 'Définir la plage de cellules Set Rg = .Range("A1:A" & .Range("A" & _ .Rows.Count).End(xlUp).Row) T = Rg.Value Tri_Croissant_Noms_Feuille T End With T = Tri_Croissant_Noms_Feuille(T) Application.ScreenUpdating = False On Error Resume Next For Each Elt In T If Elt <> Sht.Name Then Set Sh = Worksheets(Elt) If Err <> 0 Then Err = 0 With Sht .Copy After:=Worksheets(Worksheets(A).Index) Worksheets(Worksheets(A + 1).Index).Name = Elt A = A + 1 End With End If End If Next Application.ScreenUpdating = True End Sub '----------------------------------------------- MichD --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus
Je n'y arrive pas, j'ai mis cela, et c'est toujours pareil....
Sub Creation_Feuilles()
Dim Rg As Range, T(), Elt As Variant
Dim Sh As Worksheet, A As Long
Dim Sht As Worksheet, FMmodel As String
FMmodel = "02 Modèle"
A = "950"
'***********Variables à définir*************
'Remplace "Modèle" par le nom de ta feuille modèle
'Set Sht = Worksheets("02 Modèle")
Set Sht = Worksheets(FMmodel)
'L'index de la première feuille d'où doivent s'insérer
'les autres feuilles semblables au modèle
A = 1
'********************************************
With Worksheets("950")
'Définir la plage de cellules
Set Rg = .Range("A1:A" & .Range("A" & _
.Rows.Count).End(xlUp).Row)
T = Rg.Value
Tri_Croissant_Noms_Feuille T
End With
T = Tri_Croissant_Noms_Feuille(T)
Application.ScreenUpdating = False
On Error Resume Next
For Each Elt In T
If Elt <> Sht.Name Then
Set Sh = Worksheets(Elt)
If Err <> 0 Then
Err = 0
With Sht
.Copy After:=Worksheets(Worksheets(A).Index)
Worksheets(Worksheets(A + 1).Index).Name = Elt
A = A + 1
End With
End If
End If
Next
Application.ScreenUpdating = True
End Sub
Vraiment complexe le VBA !
Manu
"MichD" a écrit dans le message de groupe de discussion :
f8c7008b-3fb7-1221-7df6-a5263494f4eb@Hotmail.com...
Le 08/févr./2019 à 07:26, Manu a écrit :
Pareil qu'avec l'autre code, Voici ce qu'il se passe :
Je clic une fois sur le bouton, la macro s'exécute parfaitement et
fabrique autant de Feuil de ce que comporte la Col A de la feuil "950"
(110 feuil) mais fabrique en plus une copie de la Feuil "02 Modèle"
Je supprime cette feuille puis pour tester je change un nom de la col A de
la feuil "950"
Je reclic sur le bouton, et là il m'ajoute bien le nouveau nom dans les
feuil mais me copie 110 fois la Feuil "02 modèle"
J'ai modifié seulement une ligne de code, j'ai testé sommairement la
macro, et cela semble s'exécuter correctement.
Dans la procédure, le nom du modèle que tu attribues à la variable
"FMmodel" doit être identique au nom de l'onglet de ladite feuille,
orthographe et casse.
'-------------------------------------
Sub Creation_Feuilles()
Dim Rg As Range, T(), Elt As Variant
Dim Sh As Worksheet, A As Long
Dim Sht As Worksheet, FMmodel As String
'***********Variables à définir*************
'Nom de la feuille modèle
FMmodel = "02 Modèle"
'L'index de la première feuille d'où doivent s'insérer
'les autres feuilles semblables au modèle
A = 1
'********************************************
Set Sht = Worksheets(FMmodel)
With Worksheets("950")
'Définir la plage de cellules
Set Rg = .Range("A1:A" & .Range("A" & _
.Rows.Count).End(xlUp).Row)
T = Rg.Value
Tri_Croissant_Noms_Feuille T
End With
T = Tri_Croissant_Noms_Feuille(T)
Application.ScreenUpdating = False
On Error Resume Next
For Each Elt In T
If Elt <> Sht.Name Then
Set Sh = Worksheets(Elt)
If Err <> 0 Then
Err = 0
With Sht
.Copy After:=Worksheets(Worksheets(A).Index)
Worksheets(Worksheets(A + 1).Index).Name = Elt
A = A + 1
End With
End If
End If
Next
Application.ScreenUpdating = True
End Sub
'-----------------------------------------------
MichD
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Je n'y arrive pas, j'ai mis cela, et c'est toujours pareil.... Sub Creation_Feuilles() Dim Rg As Range, T(), Elt As Variant Dim Sh As Worksheet, A As Long Dim Sht As Worksheet, FMmodel As String FMmodel = "02 Modèle" A = "950" '***********Variables à définir************* 'Remplace "Modèle" par le nom de ta feuille modèle 'Set Sht = Worksheets("02 Modèle") Set Sht = Worksheets(FMmodel) 'L'index de la première feuille d'où doivent s'insérer 'les autres feuilles semblables au modèle A = 1 '******************************************** With Worksheets("950") 'Définir la plage de cellules Set Rg = .Range("A1:A" & .Range("A" & _ .Rows.Count).End(xlUp).Row) T = Rg.Value Tri_Croissant_Noms_Feuille T End With T = Tri_Croissant_Noms_Feuille(T) Application.ScreenUpdating = False On Error Resume Next For Each Elt In T If Elt <> Sht.Name Then Set Sh = Worksheets(Elt) If Err <> 0 Then Err = 0 With Sht .Copy After:=Worksheets(Worksheets(A).Index) Worksheets(Worksheets(A + 1).Index).Name = Elt A = A + 1 End With End If End If Next Application.ScreenUpdating = True End Sub Vraiment complexe le VBA ! Manu "MichD" a écrit dans le message de groupe de discussion : Le 08/févr./2019 à 07:26, Manu a écrit :
Pareil qu'avec l'autre code, Voici ce qu'il se passe : Je clic une fois sur le bouton, la macro s'exécute parfaitement et fabrique autant de Feuil de ce que comporte la Col A de la feuil "950" (110 feuil) mais fabrique en plus une copie de la Feuil "02 Modèle" Je supprime cette feuille puis pour tester je change un nom de la col A de la feuil "950" Je reclic sur le bouton, et là il m'ajoute bien le nouveau nom dans les feuil mais me copie 110 fois la Feuil "02 modèle"
J'ai modifié seulement une ligne de code, j'ai testé sommairement la macro, et cela semble s'exécuter correctement. Dans la procédure, le nom du modèle que tu attribues à la variable "FMmodel" doit être identique au nom de l'onglet de ladite feuille, orthographe et casse. '------------------------------------- Sub Creation_Feuilles() Dim Rg As Range, T(), Elt As Variant Dim Sh As Worksheet, A As Long Dim Sht As Worksheet, FMmodel As String '***********Variables à définir************* 'Nom de la feuille modèle FMmodel = "02 Modèle" 'L'index de la première feuille d'où doivent s'insérer 'les autres feuilles semblables au modèle A = 1 '******************************************** Set Sht = Worksheets(FMmodel) With Worksheets("950") 'Définir la plage de cellules Set Rg = .Range("A1:A" & .Range("A" & _ .Rows.Count).End(xlUp).Row) T = Rg.Value Tri_Croissant_Noms_Feuille T End With T = Tri_Croissant_Noms_Feuille(T) Application.ScreenUpdating = False On Error Resume Next For Each Elt In T If Elt <> Sht.Name Then Set Sh = Worksheets(Elt) If Err <> 0 Then Err = 0 With Sht .Copy After:=Worksheets(Worksheets(A).Index) Worksheets(Worksheets(A + 1).Index).Name = Elt A = A + 1 End With End If End If Next Application.ScreenUpdating = True End Sub '----------------------------------------------- MichD --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus
MichD
La même procédure dans un fichier exemple : https://www.cjoint.com/c/IBiqxVmDfgg MichD
La même procédure dans un fichier exemple :
https://www.cjoint.com/c/IBiqxVmDfgg
La même procédure dans un fichier exemple : https://www.cjoint.com/c/IBiqxVmDfgg MichD
Manu
Quel imbécile je suis !!! Tout ce que tu m'as donné est parfait, je n'avais tout simplement pas changé ma plage.... Set Rg = .Range("A1:A" & .Range("A" & _ .Rows.Count).End(xlUp).Row) Je n'avais rien en A1 il suffisait de mettre A2 Et en plus tu me l'as écrit juste au dessus. Vraiment désolé de t'avoir ennuyé pour si peu. Encore Merci Mich. Manu "MichD" a écrit dans le message de groupe de discussion : q3kaga$iug$ La même procédure dans un fichier exemple : https://www.cjoint.com/c/IBiqxVmDfgg MichD --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus
Quel imbécile je suis !!!
Tout ce que tu m'as donné est parfait, je n'avais tout simplement pas changé
ma plage....
Set Rg = .Range("A1:A" & .Range("A" & _
.Rows.Count).End(xlUp).Row)
Je n'avais rien en A1 il suffisait de mettre A2
Et en plus tu me l'as écrit juste au dessus.
Vraiment désolé de t'avoir ennuyé pour si peu.
Encore Merci Mich.
Manu
"MichD" a écrit dans le message de groupe de discussion :
q3kaga$iug$1@gioia.aioe.org...
La même procédure dans un fichier exemple :
https://www.cjoint.com/c/IBiqxVmDfgg
MichD
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Quel imbécile je suis !!! Tout ce que tu m'as donné est parfait, je n'avais tout simplement pas changé ma plage.... Set Rg = .Range("A1:A" & .Range("A" & _ .Rows.Count).End(xlUp).Row) Je n'avais rien en A1 il suffisait de mettre A2 Et en plus tu me l'as écrit juste au dessus. Vraiment désolé de t'avoir ennuyé pour si peu. Encore Merci Mich. Manu "MichD" a écrit dans le message de groupe de discussion : q3kaga$iug$ La même procédure dans un fichier exemple : https://www.cjoint.com/c/IBiqxVmDfgg MichD --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus