Petit Soucil de division de feuille

  • Initiateur de la discussion Initiateur de la discussion JeanMikael
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

JeanMikael

Guest
Re-re Bonjour le forum,


J'ai cette macro :


Code:
Sub distribue4()
Dim n As Integer
Dim ftr As String
'declaration de collection
Dim criteres As Collection
Set criteres = New Collection
'creation de la collection des criteres
Application.ScreenUpdating = False

For n = 2 To Range("g65536").End(xlUp).Row
  On Error Resume Next
    criteres.Add Range("g" & n), CStr(Range("g" & n))
  On Error GoTo 0
Next n

'ajout d'une feuille par critere
For n = 1 To criteres.Count

  Sheets.Add.Name = "Erreur " & criteres(n)

  Sheets("Feuil1").Range("A1:AD1").Copy Destination:=ActiveSheet.Range("A1")

Next n

'tansfert vers les feuilles
For n = 2 To Sheets("Feuil1").Range("g65536").End(xlUp).Row

  ftr = "Erreur " & Sheets("Feuil1").Range("g" & n)
 
  Sheets("Feuil1").Range("A" & n & ":AD" & n).Copy Destination:=Sheets(ftr).Range("A65536").End(xlUp).Offset(1, 0)

Sheets("Feuil1").Select

Next n

Application.ScreenUpdating = True

End Sub

Cette macro me permet de créer un onglet pour chaque valeur rencontrer dans la colonne G, dans cette colonne ce sont des chiffre jusque là tout va bien, mon soucil c'est que dans ma colonne j'ai par exemple des chiffre de 0 à 9 donc mon code va crée un onglet nommé Erreur 1 par exemple et ce que je souhaiterai c'est ajouter un 0 pour les onglet qui vont de Erreur 1 à 9 donc j'aurai par exemple comme nom d'onglet Erreur 01, j'ai essayé de mettre dans ma colonne G un format personnalisée qui met un 0 devant les chiffres allant de 1 à 9 met la macro lorsqu'elle divise les onglets ne tient pas compte du format personalisée, comment faire pour obtenir le résultat souhaité ?
d'avance merci de votre aide, bonne après-midi.

Cordialement,
Jean-Mikaël
 
Re : Division d'Onglet

Re-re Bonjour le forum,


J'ai cette macro :



Code:
Sub distribue4()
Dim n As Integer
Dim ftr As String
'declaration de collection
Dim criteres As Collection
Set criteres = New Collection
'creation de la collection des criteres
Application.ScreenUpdating = False

For n = 2 To Range("g65536").End(xlUp).Row
  On Error Resume Next
    criteres.Add Range("g" & n), CStr(Range("g" & n))
  On Error GoTo 0
Next n

'ajout d'une feuille par critere
For n = 1 To criteres.Count

  Sheets.Add.Name = "Erreur " & criteres(n)

  Sheets("Feuil1").Range("A1:AD1").Copy Destination:=ActiveSheet.Range("A1")

Next n

'tansfert vers les feuilles
For n = 2 To Sheets("Feuil1").Range("g65536").End(xlUp).Row

  ftr = "Erreur " & Sheets("Feuil1").Range("g" & n)
 
  Sheets("Feuil1").Range("A" & n & ":AD" & n).Copy Destination:=Sheets(ftr).Range("A65536").End(xlUp).Offset(1, 0)

Sheets("Feuil1").Select

Next n

Application.ScreenUpdating = True

End Sub

Cette macro me permet de créer un onglet pour chaque valeur rencontrer dans la colonne G, dans cette colonne ce sont des chiffre jusque là tout va bien, mon soucil c'est que dans ma colonne j'ai par exemple des chiffre de 0 à 9 donc mon code va crée un onglet nommé Erreur 1 par exemple et ce que je souhaiterai c'est ajouter un 0 pour les onglet qui vont de Erreur 1 à 9 donc j'aurai par exemple comme nom d'onglet Erreur 01, j'ai essayé de mettre dans ma colonne G un format personnalisée qui met un 0 devant les chiffres allant de 1 à 9 met la macro lorsqu'elle divise les onglets ne tient pas compte du format personalisée, comment faire pour obtenir le résultat souhaité ?
d'avance merci de votre aide, bonne après-midi.

Cordialement,
Jean-Mikaël
 
Re : Petit Soucil de division de feuille

Re-re Bonjour le forum,


J'ai cette macro :


Code:
Sub distribue4()
Dim n As Integer
Dim ftr As String
'declaration de collection
Dim criteres As Collection
Set criteres = New Collection
'creation de la collection des criteres
Application.ScreenUpdating = False
 
For n = 2 To Range("g65536").End(xlUp).Row
  On Error Resume Next
    criteres.Add Range("g" & n), CStr(Range("g" & n))
  On Error GoTo 0
Next n
 
'ajout d'une feuille par critere
For n = 1 To criteres.Count
 
  Sheets.Add.Name = "Erreur " & criteres(n)
 
  Sheets("Feuil1").Range("A1:AD1").Copy Destination:=ActiveSheet.Range("A1")
 
Next n
 
'tansfert vers les feuilles
For n = 2 To Sheets("Feuil1").Range("g65536").End(xlUp).Row
 
  ftr = "Erreur " & Sheets("Feuil1").Range("g" & n)
 
  Sheets("Feuil1").Range("A" & n & ":AD" & n).Copy Destination:=Sheets(ftr).Range("A65536").End(xlUp).Offset(1, 0)
 
Sheets("Feuil1").Select
 
Next n
 
Application.ScreenUpdating = True
 
End Sub

Cette macro me permet de créer un onglet pour chaque valeur rencontrer dans la colonne G, dans cette colonne ce sont des chiffre jusque là tout va bien, mon soucil c'est que dans ma colonne j'ai par exemple des chiffre de 0 à 9 donc mon code va crée un onglet nommé Erreur 1 par exemple et ce que je souhaiterai c'est ajouter un 0 pour les onglet qui vont de Erreur 1 à 9 donc j'aurai par exemple comme nom d'onglet Erreur 01, j'ai essayé de mettre dans ma colonne G un format personnalisée qui met un 0 devant les chiffres allant de 1 à 9 met la macro lorsqu'elle divise les onglets ne tient pas compte du format personalisée, comment faire pour obtenir le résultat souhaité ?
d'avance merci de votre aide, bonne après-midi.

Cordialement,
Jean-Mikaël
Salut
comme j'ai la flemme, j'ai pas tout regarder, juste la description du problème
remplacer :
ftr = "Erreur " & Sheets("Feuil1").Range("g" & n)
par
ftr = "Erreur " & format(Sheets("Feuil1").Range("g" & n);"00")
Juste une question au hazard : si t'as un problème d'erreur Excel en plein milieux de ta macro, comment tu exécute ScreenUpDating = True ?
Mais il n'y a aucun risque d'erreur,... normalement
A+
 
Re : Petit Soucil de division de feuille

Bonjour Gorfael,

Tout d'abord merci de ta réponse je vais tester sa, en ce qui concerne ta question je ne sais pas sa mais encore jamais arrivé 🙂
Bonne après-midi.

Cordialement,
Jean-Mikaël
 
Re : Petit Soucil de division de feuille

Re-, JeanMikael, bonjour Gorfael

une autre solution :

Sheets.Add.Name = IIf(Len(criteres(n)) = 1, "Erreur 0" & criteres(n), "Erreur " & criteres(n))

Gorfael,
Il me semble que le ScreenUpdating est remis automatiquement à True lorsqu'on stoppe la macro (par End Sub ou arrêt suite à Bug), mais peut-être me trompais-je?
 
Re : Petit Soucil de division de feuille

Re, bhbh

La ligne que tu m'a filé à l'air de marcher le seul truc c'est que le programme
s'arrete à cette ligne :

Code:
Sheets("Feuil1").Range("A" & n & ":AD" & n).Copy Destination:=Sheets(ftr).Range("A65536").End(xlUp).Offset(1, 0)

Cordialement,
Jean-Mikaël
 
Re : Petit Soucil de division de feuille

Merci bhbh mais hélas toujours une erreur à cette ligne :

Code:
Sheets("Feuil1").Range("A" & n & ":AD" & n).Copy Destination:=Sheets(ftr).Range("A65536").End(xlUp).Offset(1, 0)
 
Re : Petit Soucil de division de feuille

Re-,
effectivement, difficile de dépanner si tu n'appliques pas les conseils qu'on te donne...😉, et que nous, on essaie avec ce qu'on t'a préconisé...

ton code modifié :

Dim criteres As Collection
Set criteres = New Collection
'creation de la collection des criteres
Application.ScreenUpdating = False
For n = 3 To Range("g65536").End(xlUp).Row
On Error Resume Next
criteres.Add Range("g" & n), CStr(Range("g" & n))
On Error GoTo 0
Next n
'ajout d'une feuille par critere
For n = 1 To criteres.Count
Sheets.Add.Name = IIf(Len(criteres(n)) = 1, "Erreur 0" & criteres(n), "Erreur " & criteres(n))
Sheets("liste").Range("A1:AD1").Copy Destination:=ActiveSheet.Range("A1")
Next n
'tansfert vers les feuilles
For n = 3 To Sheets("liste").Range("g65536").End(xlUp).Row
ftr = "Erreur " & Sheets("liste").Range("g" & n)
ftr = IIf(Len(ftr) < 9, "Erreur 0" & Sheets("liste").Range("g" & n), "Erreur " & Sheets("liste").Range("g" & n))
Sheets("liste").Range("A" & n & ":AD" & n).Copy Destination:=Sheets(ftr).Range("A65536").End(xlUp).Offset(1, 0)
Next n
Application.ScreenUpdating = True
End Sub

Celui là fonctionne, je l'ai testé...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
911
Réponses
15
Affichages
786
Retour