OVH Cloud OVH Cloud

Onglet de classeur nommé et par ordre alpha.

3 réponses
Avatar
Crel
Bonjour à toutes et tous.
J'ai un classeur classique avec des onglets, ces onglets représentent le nom
et le prénom d'une personne.
A chaque fois que l'on crée une nouvelle feuille, on doit nommer l'onglet on
lui donnant le nom et le prénom de la personne.

1. Comment faire pour que le nom et le prénom saisit en A1, aille se mettre
sur l'onglet, après appui sur un bouton macro ?

2. Comment après appui sur un bouton, mettre les onglets dans l'ordre
alphabétique ?

Merci beaucoup
Patrick.

3 réponses

Avatar
Crel
Désolé Macbob, concernant la macro tri, il me dit qu'il y a un pb au niveau
de la boucle !

Loop
Do While
H2 > B1

Merci beaucoup.
Patrick

"MacBob" a écrit dans le message
de news: BB448C22.216B%
Salut Crel

Quel dommage que l'absence de notre Madone (j'ai cité Monique) te prive de
la liste des sites incontournables pour répondre à ce genre de question.
Voici donc ce que tu peux trouver sur l'un d'entre eux en deux coups de
cuillère à pot.

L'adresse du site d'abord

http://www.excelabo.net/index.htm

Les réponses a adapter à ton cas ensuite.

Je voudrais créer des onglets à partir d'une liste de noms contenus sur
une

feuille.
Je voudrais aussi pouvoir détruire tout ou partie de ces onglets.
Private Sub CmdCreerFeuilles_Click()
Dim cell As Range, Nom$, Sht As Worksheet

For Each cell In Selection
Nom = cell.Value
If Nom <> "" Then
On Error Resume Next
Set Sht = Sheets(Nom)
On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = Nom
End If
Next cell
End Sub

Exemple visible sur la page onglet de ce classeur
Frédéric Sigonneau et Flo

Comment trier par ordre alphabétique les onglets de mon fichier ?
Voilà une macro avec un algorithme de tri très rapide, triant par
ordre alphanumérique les *groupes* de feuilles qui commencent par les
mêmes

chaînes de caractères, et opérant à l'intérieur de ces groupes
un tri numérique sur les fins de noms. Si ton classeur contient les
feuilles Zaza26, Zaza15, JPS69, 2000, 19, JPS49287, Zaza4 et Feuil10,
elles seront triées en: 19, 2000, Feuil10, JPS69, JPS49287, Zaza4,
Zaza15 et Zaza26.

'============================================= > Dim Arr(), Idx() As Integer
Dim Elt1, Elt2, IdxTemp As Integer
Dim I As Integer

Sub TriFeuilles()
Dim J As Integer, NF As Integer
Dim Nom() As String
Dim Calc As Long

NF = Sheets.Count
ReDim Nom(1 To NF)
ReDim Arr(1 To NF, 1 To 2)
For I = 1 To NF
Nom(I) = Sheets(I).Name
For J = Len(Nom(I)) To 1 Step -1
If Not IsNumeric(Mid$(Nom(I), J, 1)) Then Exit For
Next J
If J = Len(Nom(I)) Then
Arr(I, 1) = Nom(I)
Else
Arr(I, 1) = Left$(Nom(I), J)
Arr(I, 2) = CLng(Mid$(Nom(I), J + 1))
End If

Next I
ReDim Idx(1 To NF)
For I = 1 To UBound(Idx)
Idx(I) = I

Next I
Tri 1, NF
Erase Arr
Calc = Application.Calculation

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For I = 1 To NF
Sheets(Nom(Idx(I))).Move Sheets(I)
Next I

Application.Calculation = Calc

End Sub

Private Sub Tri(ByVal B1 As Integer, ByVal H1 As Integer)

Dim B2 As Integer
Dim H2 As Integer


B2 = B1
H2 = H1
Elt1 = Arr(Idx((B1 + H1) 2), 1)
Elt2 = Arr(Idx((B1 + H1) 2), 2)
Do While B2 < H2
Do While B2 < H1
If Arr(Idx(B2), 1) > Elt1 Then Exit Do
If Arr(Idx(B2), 1) = Elt1 Then _
If Arr(Idx(B2), 2) >= Elt2 Then Exit Do
B2 = B2 + 1
Loop
Do While
H2 > B1
If Arr(Idx(H2), 1) < Elt1 Then Exit Do
If Arr(Idx(H2), 1) = Elt1 Then _
If Arr(Idx(H2), 2) <= Elt2 Then Exit Do
H2 = H2 - 1
Loop
If B2 < H2 Then
IdxTemp = Idx(B2)
Idx(B2) = Idx(H2)
Idx(H2) = IdxTemp
End If
If B2 <= H2 Then
B2 = B2 + 1
H2 = H2 - 1
End If
Loop
If H2 > B1 Then Tri B1, H2

If B2 < H1 Then Tri B2, H1

End Sub

Laurent Longre


Le 23/07/03 18:33, dans , « Crel »

Bonjour à toutes et tous.
J'ai un classeur classique avec des onglets, ces onglets représentent le
nom


et le prénom d'une personne.
A chaque fois que l'on crée une nouvelle feuille, on doit nommer
l'onglet on


lui donnant le nom et le prénom de la personne.

1. Comment faire pour que le nom et le prénom saisit en A1, aille se
mettre


sur l'onglet, après appui sur un bouton macro ?

2. Comment après appui sur un bouton, mettre les onglets dans l'ordre
alphabétique ?

Merci beaucoup
Patrick.








Avatar
Crel
Merci beaucoup Mac bob, j'ai trouvé.
C'est vraiment très sympa de ta part.
Patrick

"MacBob" a écrit dans le message
de news: BB448C22.216B%
Salut Crel

Quel dommage que l'absence de notre Madone (j'ai cité Monique) te prive de
la liste des sites incontournables pour répondre à ce genre de question.
Voici donc ce que tu peux trouver sur l'un d'entre eux en deux coups de
cuillère à pot.

L'adresse du site d'abord

http://www.excelabo.net/index.htm

Les réponses a adapter à ton cas ensuite.

Je voudrais créer des onglets à partir d'une liste de noms contenus sur
une

feuille.
Je voudrais aussi pouvoir détruire tout ou partie de ces onglets.
Private Sub CmdCreerFeuilles_Click()
Dim cell As Range, Nom$, Sht As Worksheet

For Each cell In Selection
Nom = cell.Value
If Nom <> "" Then
On Error Resume Next
Set Sht = Sheets(Nom)
On Error GoTo 0
If Sht Is Nothing Then Sheets.Add.Name = Nom
End If
Next cell
End Sub

Exemple visible sur la page onglet de ce classeur
Frédéric Sigonneau et Flo

Comment trier par ordre alphabétique les onglets de mon fichier ?
Voilà une macro avec un algorithme de tri très rapide, triant par
ordre alphanumérique les *groupes* de feuilles qui commencent par les
mêmes

chaînes de caractères, et opérant à l'intérieur de ces groupes
un tri numérique sur les fins de noms. Si ton classeur contient les
feuilles Zaza26, Zaza15, JPS69, 2000, 19, JPS49287, Zaza4 et Feuil10,
elles seront triées en: 19, 2000, Feuil10, JPS69, JPS49287, Zaza4,
Zaza15 et Zaza26.

'============================================= > Dim Arr(), Idx() As Integer
Dim Elt1, Elt2, IdxTemp As Integer
Dim I As Integer

Sub TriFeuilles()
Dim J As Integer, NF As Integer
Dim Nom() As String
Dim Calc As Long

NF = Sheets.Count
ReDim Nom(1 To NF)
ReDim Arr(1 To NF, 1 To 2)
For I = 1 To NF
Nom(I) = Sheets(I).Name
For J = Len(Nom(I)) To 1 Step -1
If Not IsNumeric(Mid$(Nom(I), J, 1)) Then Exit For
Next J
If J = Len(Nom(I)) Then
Arr(I, 1) = Nom(I)
Else
Arr(I, 1) = Left$(Nom(I), J)
Arr(I, 2) = CLng(Mid$(Nom(I), J + 1))
End If

Next I
ReDim Idx(1 To NF)
For I = 1 To UBound(Idx)
Idx(I) = I

Next I
Tri 1, NF
Erase Arr
Calc = Application.Calculation

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For I = 1 To NF
Sheets(Nom(Idx(I))).Move Sheets(I)
Next I

Application.Calculation = Calc

End Sub

Private Sub Tri(ByVal B1 As Integer, ByVal H1 As Integer)

Dim B2 As Integer
Dim H2 As Integer


B2 = B1
H2 = H1
Elt1 = Arr(Idx((B1 + H1) 2), 1)
Elt2 = Arr(Idx((B1 + H1) 2), 2)
Do While B2 < H2
Do While B2 < H1
If Arr(Idx(B2), 1) > Elt1 Then Exit Do
If Arr(Idx(B2), 1) = Elt1 Then _
If Arr(Idx(B2), 2) >= Elt2 Then Exit Do
B2 = B2 + 1
Loop
Do While
H2 > B1
If Arr(Idx(H2), 1) < Elt1 Then Exit Do
If Arr(Idx(H2), 1) = Elt1 Then _
If Arr(Idx(H2), 2) <= Elt2 Then Exit Do
H2 = H2 - 1
Loop
If B2 < H2 Then
IdxTemp = Idx(B2)
Idx(B2) = Idx(H2)
Idx(H2) = IdxTemp
End If
If B2 <= H2 Then
B2 = B2 + 1
H2 = H2 - 1
End If
Loop
If H2 > B1 Then Tri B1, H2

If B2 < H1 Then Tri B2, H1

End Sub

Laurent Longre


Le 23/07/03 18:33, dans , « Crel »

Bonjour à toutes et tous.
J'ai un classeur classique avec des onglets, ces onglets représentent le
nom


et le prénom d'une personne.
A chaque fois que l'on crée une nouvelle feuille, on doit nommer
l'onglet on


lui donnant le nom et le prénom de la personne.

1. Comment faire pour que le nom et le prénom saisit en A1, aille se
mettre


sur l'onglet, après appui sur un bouton macro ?

2. Comment après appui sur un bouton, mettre les onglets dans l'ordre
alphabétique ?

Merci beaucoup
Patrick.








Avatar
Ellimac
Bonjour,

Sub NomFeuille()
toto = Range("a1")
Sheets.Add
ActiveSheet.Name = toto
End Sub

Sub Trier_Onglets()
For Each x In ActiveWorkbook.Sheets
For cpt = 2 To ActiveWorkbook.Sheets.Count
If Sheets(cpt - 1).Name > Sheets(cpt).Name Then
Sheets(cpt - 1).Move after:=Sheets(cpt)
End If
Next
Next
Sheets(1).Activate
End Sub

Camille

-----Message d'origine-----
Bonjour à toutes et tous.
J'ai un classeur classique avec des onglets, ces onglets
représentent le nom

et le prénom d'une personne.
A chaque fois que l'on crée une nouvelle feuille, on doit
nommer l'onglet on

lui donnant le nom et le prénom de la personne.

1. Comment faire pour que le nom et le prénom saisit en
A1, aille se mettre

sur l'onglet, après appui sur un bouton macro ?

2. Comment après appui sur un bouton, mettre les onglets
dans l'ordre

alphabétique ?

Merci beaucoup
Patrick.



.