Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Salut Twinley,
devant le silence en réponse à ton problème, je te lance un début de
réponse. Le pb c'est que tu ne peux pas avoir 2 feuilles nommée de la même
manière en même temps. Donc on peut filouter en donnant un nommant ta
feuille84 en 85, puis en nommant ta feuille1 en 84, et en repassant ta 85 en
feuill 1...
Mon truc à l'air de fonctionner sauf pour la dernière feuille (celle "du
milieu") où il donne un dernier nom qui ne va pas forcément. Et, la chaleur
aidant, mes neurones sont en rupture...
Essaie de partir de ça et tente d'adapter...
Private Sub CommandButton1_Click()
Dim i As Integer
j = 1
k = 1
For i = 11 To Int(11 / 2) Step -1
Worksheets("Feuil" & i).Name = "Feuil" & (i + k)
Worksheets("Feuil" & j).Name = "Feuil" & i
Worksheets("Feuil" & (i + k)).Name = "Feuil" & j
j = j + 1
k = k + 1
Next
End Sub
Ca donne quoi ?
CAP2
Salut Twinley,
devant le silence en réponse à ton problème, je te lance un début de
réponse. Le pb c'est que tu ne peux pas avoir 2 feuilles nommée de la même
manière en même temps. Donc on peut filouter en donnant un nommant ta
feuille84 en 85, puis en nommant ta feuille1 en 84, et en repassant ta 85 en
feuill 1...
Mon truc à l'air de fonctionner sauf pour la dernière feuille (celle "du
milieu") où il donne un dernier nom qui ne va pas forcément. Et, la chaleur
aidant, mes neurones sont en rupture...
Essaie de partir de ça et tente d'adapter...
Private Sub CommandButton1_Click()
Dim i As Integer
j = 1
k = 1
For i = 11 To Int(11 / 2) Step -1
Worksheets("Feuil" & i).Name = "Feuil" & (i + k)
Worksheets("Feuil" & j).Name = "Feuil" & i
Worksheets("Feuil" & (i + k)).Name = "Feuil" & j
j = j + 1
k = k + 1
Next
End Sub
Ca donne quoi ?
CAP2
Salut Twinley,
devant le silence en réponse à ton problème, je te lance un début de
réponse. Le pb c'est que tu ne peux pas avoir 2 feuilles nommée de la même
manière en même temps. Donc on peut filouter en donnant un nommant ta
feuille84 en 85, puis en nommant ta feuille1 en 84, et en repassant ta 85 en
feuill 1...
Mon truc à l'air de fonctionner sauf pour la dernière feuille (celle "du
milieu") où il donne un dernier nom qui ne va pas forcément. Et, la chaleur
aidant, mes neurones sont en rupture...
Essaie de partir de ça et tente d'adapter...
Private Sub CommandButton1_Click()
Dim i As Integer
j = 1
k = 1
For i = 11 To Int(11 / 2) Step -1
Worksheets("Feuil" & i).Name = "Feuil" & (i + k)
Worksheets("Feuil" & j).Name = "Feuil" & i
Worksheets("Feuil" & (i + k)).Name = "Feuil" & j
j = j + 1
k = k + 1
Next
End Sub
Ca donne quoi ?
CAP2
bonjour,
il est bien sur possible de changer le codename des feuilles . p.e , voici
une proc qui fait ce travail
For Each ws In ActiveWorkbook.Worksheets
ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") =
"Z" & ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName")
Next ws
Ceci dit, dans ta demande, il sera impossible de donner le même codename à 2
feuilles. Il serait donc utile de passer par une renumérotation du style de
ci-dessus, "ZZFeuil49" jusqu'à ZZFeuil84" feuilles de Feuil49 à 84 . Puis
pour les feuilles Feuil1 à Feuil48 les renommer Feuil 49 à Feuil84 et enfin
renommer les Feuilles "ZZFeuil49" jusqu'à ZZFeuil84" par Feuil1 à Feuil48.
Tu peux réaliser tout ceci en utilisant la proc ci-dessus en l'adaptant avec
des test sur la valeur renvoyée par
ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName")
Je te fais confiance pour triturer le code.
A+Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
bonjour,
il est bien sur possible de changer le codename des feuilles . p.e , voici
une proc qui fait ce travail
For Each ws In ActiveWorkbook.Worksheets
ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") =
"Z" & ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName")
Next ws
Ceci dit, dans ta demande, il sera impossible de donner le même codename à 2
feuilles. Il serait donc utile de passer par une renumérotation du style de
ci-dessus, "ZZFeuil49" jusqu'à ZZFeuil84" feuilles de Feuil49 à 84 . Puis
pour les feuilles Feuil1 à Feuil48 les renommer Feuil 49 à Feuil84 et enfin
renommer les Feuilles "ZZFeuil49" jusqu'à ZZFeuil84" par Feuil1 à Feuil48.
Tu peux réaliser tout ceci en utilisant la proc ci-dessus en l'adaptant avec
des test sur la valeur renvoyée par
ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName")
Je te fais confiance pour triturer le code.
A+
Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
bonjour,
il est bien sur possible de changer le codename des feuilles . p.e , voici
une proc qui fait ce travail
For Each ws In ActiveWorkbook.Worksheets
ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName") =
"Z" & ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName")
Next ws
Ceci dit, dans ta demande, il sera impossible de donner le même codename à 2
feuilles. Il serait donc utile de passer par une renumérotation du style de
ci-dessus, "ZZFeuil49" jusqu'à ZZFeuil84" feuilles de Feuil49 à 84 . Puis
pour les feuilles Feuil1 à Feuil48 les renommer Feuil 49 à Feuil84 et enfin
renommer les Feuilles "ZZFeuil49" jusqu'à ZZFeuil84" par Feuil1 à Feuil48.
Tu peux réaliser tout ceci en utilisant la proc ci-dessus en l'adaptant avec
des test sur la valeur renvoyée par
ws.Parent.VBProject.VBComponents(ws.CodeName).Properties("_CodeName")
Je te fais confiance pour triturer le code.
A+Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Bonjour Twinley,
Teste ce code sur une copie de ton classeur :
Sub Renommer()
Dim Module As Object
Dim Tbl() As String
Dim I As Integer
Dim J As Integer
'récupère dans un tableau le nom
'des modules de feuilles dont
'le nombre est supérieur à 48
With ThisWorkbook.VBProject
For I = 1 To .VBComponents.Count
Set Module = .VBComponents(I)
With Module
If Left(.Name, 5) = "Feuil" And _
Right(.Name, Len(.Name) - 5) > 48 Then
J = J + 1
ReDim Preserve Tbl(1 To J)
Tbl(J) = .Name
End If
End With
Next I
'tri le tableau par ordre décroissant
Tri Tbl()
'défini à 1 pour débuter à Feuil2
J = 1
'Renomme les modules comme :
'Feuil84 = Feuil2
'Feuil83 = Feuil3
'Feuil82 = Feuil4
'etc...
For I = 1 To UBound(Tbl)
J = J + 1
.VBComponents(Tbl(I)).Name = "Feuil" & J
Next
End With
Set Module = Nothing
End Sub
Sub Tri(Tbl() As String)
Dim Tempo
Dim I As Integer
Dim J As Integer
'pour un tri décroissant "<"
'pour un tri croissant ">"
For I = 1 To UBound(Tbl) - 1
For J = I + 1 To UBound(Tbl)
If Tbl(I) < Tbl(J) Then
Tempo = Tbl(J)
Tbl(J) = Tbl(I)
Tbl(I) = Tempo
End If
Next J
Next I
End Sub
Hervé.
"twinley" a écrit dans le message de news:
OUhZuE#Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Bonjour Twinley,
Teste ce code sur une copie de ton classeur :
Sub Renommer()
Dim Module As Object
Dim Tbl() As String
Dim I As Integer
Dim J As Integer
'récupère dans un tableau le nom
'des modules de feuilles dont
'le nombre est supérieur à 48
With ThisWorkbook.VBProject
For I = 1 To .VBComponents.Count
Set Module = .VBComponents(I)
With Module
If Left(.Name, 5) = "Feuil" And _
Right(.Name, Len(.Name) - 5) > 48 Then
J = J + 1
ReDim Preserve Tbl(1 To J)
Tbl(J) = .Name
End If
End With
Next I
'tri le tableau par ordre décroissant
Tri Tbl()
'défini à 1 pour débuter à Feuil2
J = 1
'Renomme les modules comme :
'Feuil84 = Feuil2
'Feuil83 = Feuil3
'Feuil82 = Feuil4
'etc...
For I = 1 To UBound(Tbl)
J = J + 1
.VBComponents(Tbl(I)).Name = "Feuil" & J
Next
End With
Set Module = Nothing
End Sub
Sub Tri(Tbl() As String)
Dim Tempo
Dim I As Integer
Dim J As Integer
'pour un tri décroissant "<"
'pour un tri croissant ">"
For I = 1 To UBound(Tbl) - 1
For J = I + 1 To UBound(Tbl)
If Tbl(I) < Tbl(J) Then
Tempo = Tbl(J)
Tbl(J) = Tbl(I)
Tbl(I) = Tempo
End If
Next J
Next I
End Sub
Hervé.
"twinley" <twinleymax@hotmail.com> a écrit dans le message de news:
OUhZuE#eFHA.256@TK2MSFTNGP14.phx.gbl...
Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Bonjour Twinley,
Teste ce code sur une copie de ton classeur :
Sub Renommer()
Dim Module As Object
Dim Tbl() As String
Dim I As Integer
Dim J As Integer
'récupère dans un tableau le nom
'des modules de feuilles dont
'le nombre est supérieur à 48
With ThisWorkbook.VBProject
For I = 1 To .VBComponents.Count
Set Module = .VBComponents(I)
With Module
If Left(.Name, 5) = "Feuil" And _
Right(.Name, Len(.Name) - 5) > 48 Then
J = J + 1
ReDim Preserve Tbl(1 To J)
Tbl(J) = .Name
End If
End With
Next I
'tri le tableau par ordre décroissant
Tri Tbl()
'défini à 1 pour débuter à Feuil2
J = 1
'Renomme les modules comme :
'Feuil84 = Feuil2
'Feuil83 = Feuil3
'Feuil82 = Feuil4
'etc...
For I = 1 To UBound(Tbl)
J = J + 1
.VBComponents(Tbl(I)).Name = "Feuil" & J
Next
End With
Set Module = Nothing
End Sub
Sub Tri(Tbl() As String)
Dim Tempo
Dim I As Integer
Dim J As Integer
'pour un tri décroissant "<"
'pour un tri croissant ">"
For I = 1 To UBound(Tbl) - 1
For J = I + 1 To UBound(Tbl)
If Tbl(I) < Tbl(J) Then
Tempo = Tbl(J)
Tbl(J) = Tbl(I)
Tbl(I) = Tempo
End If
Next J
Next I
End Sub
Hervé.
"twinley" a écrit dans le message de news:
OUhZuE#Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Bonjour Hervé
Je manque de superlatif.
Impressionnant, ça marche nickel.
J'étais encore loin de trouver.
Cette procédure mérite de rentrer au Panthéon de Misange, j'espère que
cela va tomber sous ses yeux.
Les miens sont tout embués par l'émotion, je n'ai jamais vu un tableau
d'aussi près.
Merci pour le temps gagné.
à+twinley
Hervé wrote:Bonjour Twinley,
Teste ce code sur une copie de ton classeur :
Sub Renommer()
Dim Module As Object
Dim Tbl() As String
Dim I As Integer
Dim J As Integer
'récupère dans un tableau le nom
'des modules de feuilles dont
'le nombre est supérieur à 48
With ThisWorkbook.VBProject
For I = 1 To .VBComponents.Count
Set Module = .VBComponents(I)
With Module
If Left(.Name, 5) = "Feuil" And _
Right(.Name, Len(.Name) - 5) > 48 Then
J = J + 1
ReDim Preserve Tbl(1 To J)
Tbl(J) = .Name
End If
End With
Next I
'tri le tableau par ordre décroissant
Tri Tbl()
'défini à 1 pour débuter à Feuil2
J = 1
'Renomme les modules comme :
'Feuil84 = Feuil2
'Feuil83 = Feuil3
'Feuil82 = Feuil4
'etc...
For I = 1 To UBound(Tbl)
J = J + 1
.VBComponents(Tbl(I)).Name = "Feuil" & J
Next
End With
Set Module = Nothing
End Sub
Sub Tri(Tbl() As String)
Dim Tempo
Dim I As Integer
Dim J As Integer
'pour un tri décroissant "<"
'pour un tri croissant ">"
For I = 1 To UBound(Tbl) - 1
For J = I + 1 To UBound(Tbl)
If Tbl(I) < Tbl(J) Then
Tempo = Tbl(J)
Tbl(J) = Tbl(I)
Tbl(I) = Tempo
End If
Next J
Next I
End Sub
Hervé.
"twinley" a écrit dans le message de news:
OUhZuE#Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Bonjour Hervé
Je manque de superlatif.
Impressionnant, ça marche nickel.
J'étais encore loin de trouver.
Cette procédure mérite de rentrer au Panthéon de Misange, j'espère que
cela va tomber sous ses yeux.
Les miens sont tout embués par l'émotion, je n'ai jamais vu un tableau
d'aussi près.
Merci pour le temps gagné.
à+twinley
Hervé wrote:
Bonjour Twinley,
Teste ce code sur une copie de ton classeur :
Sub Renommer()
Dim Module As Object
Dim Tbl() As String
Dim I As Integer
Dim J As Integer
'récupère dans un tableau le nom
'des modules de feuilles dont
'le nombre est supérieur à 48
With ThisWorkbook.VBProject
For I = 1 To .VBComponents.Count
Set Module = .VBComponents(I)
With Module
If Left(.Name, 5) = "Feuil" And _
Right(.Name, Len(.Name) - 5) > 48 Then
J = J + 1
ReDim Preserve Tbl(1 To J)
Tbl(J) = .Name
End If
End With
Next I
'tri le tableau par ordre décroissant
Tri Tbl()
'défini à 1 pour débuter à Feuil2
J = 1
'Renomme les modules comme :
'Feuil84 = Feuil2
'Feuil83 = Feuil3
'Feuil82 = Feuil4
'etc...
For I = 1 To UBound(Tbl)
J = J + 1
.VBComponents(Tbl(I)).Name = "Feuil" & J
Next
End With
Set Module = Nothing
End Sub
Sub Tri(Tbl() As String)
Dim Tempo
Dim I As Integer
Dim J As Integer
'pour un tri décroissant "<"
'pour un tri croissant ">"
For I = 1 To UBound(Tbl) - 1
For J = I + 1 To UBound(Tbl)
If Tbl(I) < Tbl(J) Then
Tempo = Tbl(J)
Tbl(J) = Tbl(I)
Tbl(I) = Tempo
End If
Next J
Next I
End Sub
Hervé.
"twinley" <twinleymax@hotmail.com> a écrit dans le message de news:
OUhZuE#eFHA.256@TK2MSFTNGP14.phx.gbl...
Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley
Bonjour Hervé
Je manque de superlatif.
Impressionnant, ça marche nickel.
J'étais encore loin de trouver.
Cette procédure mérite de rentrer au Panthéon de Misange, j'espère que
cela va tomber sous ses yeux.
Les miens sont tout embués par l'émotion, je n'ai jamais vu un tableau
d'aussi près.
Merci pour le temps gagné.
à+twinley
Hervé wrote:Bonjour Twinley,
Teste ce code sur une copie de ton classeur :
Sub Renommer()
Dim Module As Object
Dim Tbl() As String
Dim I As Integer
Dim J As Integer
'récupère dans un tableau le nom
'des modules de feuilles dont
'le nombre est supérieur à 48
With ThisWorkbook.VBProject
For I = 1 To .VBComponents.Count
Set Module = .VBComponents(I)
With Module
If Left(.Name, 5) = "Feuil" And _
Right(.Name, Len(.Name) - 5) > 48 Then
J = J + 1
ReDim Preserve Tbl(1 To J)
Tbl(J) = .Name
End If
End With
Next I
'tri le tableau par ordre décroissant
Tri Tbl()
'défini à 1 pour débuter à Feuil2
J = 1
'Renomme les modules comme :
'Feuil84 = Feuil2
'Feuil83 = Feuil3
'Feuil82 = Feuil4
'etc...
For I = 1 To UBound(Tbl)
J = J + 1
.VBComponents(Tbl(I)).Name = "Feuil" & J
Next
End With
Set Module = Nothing
End Sub
Sub Tri(Tbl() As String)
Dim Tempo
Dim I As Integer
Dim J As Integer
'pour un tri décroissant "<"
'pour un tri croissant ">"
For I = 1 To UBound(Tbl) - 1
For J = I + 1 To UBound(Tbl)
If Tbl(I) < Tbl(J) Then
Tempo = Tbl(J)
Tbl(J) = Tbl(I)
Tbl(I) = Tempo
End If
Next J
Next I
End Sub
Hervé.
"twinley" a écrit dans le message de news:
OUhZuE#Bonjour à tous,
J'ai ajouté des feuilles dans un classeur. Les modules de feuilles
naissent au fur et à mesure. Normal. Mais de nombreux essais ont créés
des discontinuitées et je suis en ordre inverse.
J'aimerais renommer le module de feuil84 en module de feuil2, puis dans
une boucle,
renommer le module de feuil83 en module de feuil3
renommer le module de feuil82 en module de feuil4
jusqu'à la jonction.
Position de début feuil49 à feuil84
Feuil1 et feuil48 ne doivent pas être modifiées.
J'ai bricolé avec les ligne ci-dessous, c'est passé une fois, mais avec
une err 13. Depuis je suis bloqué. C'est déjà pas la bonne syntaxe,
alors je suis loin de faire la boucle.
With Worksheets("Feuil83").CommandButton1
.Name = "Feuil3"
End With
Merci pour votre aide
--
à+twinley