Comment inserer une feuille apres une autre feuille donnée ?
11 réponses
apt
par exemple :
j'ai trois feuille : Janvier - Fevrier - Donn=E9es
je veux inserer le feuille du mois courant qui est Mars apres le
feuille Fevrier.
j'ai utilise le code suivant :
Sub SelectFeuille(Nom$, indx As Integer)
On Error Resume Next
Worksheets(Nom).Select
If Err <> 0 Then Worksheets.Add.Name =3D Nom
Sheets(Nom).Move after:=3DSheets(indx)
End Sub
et quand j'appel le fonction SelectFeuille("Mars", 1) ca me donne
l'erreur suivante :
Modifie cette ligne : Sheets(Nom).Move after:=Sheets(indx)
Pour
Sheets(Nom).Move after:=Sheets(Sheets(indx))
Salutations!
"apt" a écrit dans le message de news:
par exemple :
j'ai trois feuille : Janvier - Fevrier - Données je veux inserer le feuille du mois courant qui est Mars apres le feuille Fevrier.
j'ai utilise le code suivant :
Sub SelectFeuille(Nom$, indx As Integer) On Error Resume Next Worksheets(Nom).Select If Err <> 0 Then Worksheets.Add.Name = Nom Sheets(Nom).Move after:=Sheets(indx) End Sub
et quand j'appel le fonction SelectFeuille("Mars", 1) ca me donne l'erreur suivante :
Erreur de compilation : Attendu : mais sans reussite.
Merci.
Bonjour Apt,
Modifie cette ligne :
Sheets(Nom).Move after:=Sheets(indx)
Pour
Sheets(Nom).Move after:=Sheets(Sheets(indx))
Salutations!
"apt" <apitops@gmail.com> a écrit dans le message de news: 1143056297.296583.46630@u72g2000cwu.googlegroups.com...
par exemple :
j'ai trois feuille : Janvier - Fevrier - Données
je veux inserer le feuille du mois courant qui est Mars apres le
feuille Fevrier.
j'ai utilise le code suivant :
Sub SelectFeuille(Nom$, indx As Integer)
On Error Resume Next
Worksheets(Nom).Select
If Err <> 0 Then Worksheets.Add.Name = Nom
Sheets(Nom).Move after:=Sheets(indx)
End Sub
et quand j'appel le fonction SelectFeuille("Mars", 1) ca me donne
l'erreur suivante :
Erreur de compilation :
Attendu :
mais sans reussite.
Modifie cette ligne : Sheets(Nom).Move after:=Sheets(indx)
Pour
Sheets(Nom).Move after:=Sheets(Sheets(indx))
Salutations!
"apt" a écrit dans le message de news:
par exemple :
j'ai trois feuille : Janvier - Fevrier - Données je veux inserer le feuille du mois courant qui est Mars apres le feuille Fevrier.
j'ai utilise le code suivant :
Sub SelectFeuille(Nom$, indx As Integer) On Error Resume Next Worksheets(Nom).Select If Err <> 0 Then Worksheets.Add.Name = Nom Sheets(Nom).Move after:=Sheets(indx) End Sub
et quand j'appel le fonction SelectFeuille("Mars", 1) ca me donne l'erreur suivante :
Erreur de compilation : Attendu : mais sans reussite.
jmais je ne sais toujours pas comment parametrer l'index pour la feuille nouvellement creer soit place juste dans l'ordre des mois de l'année.
j'ai dans mon classeur quatre feuilles comme suis :
Données - Janvier - Avril - Mai
apres l'execution, le nouvelle feuille est inserée comme suit :
Call SelectFeuille("Mars", 2)
Mars - Données - Janvier - Avril - Mai
parce que la feuille active est "Données" (puisqu'elle contient le bouton)
Si j'active la feuille Avril et je demarre mon programme depuis le VBE la feuille est inserée apres Avril.
Alors comment faire pour avoir cette feuille dans l'ordre des mois de l'année quelque soit la feuille active ?
Merci
michdenis
Bonjour Apt,
Sub test() SelectFeuille "janvier", 1 End Sub
Sub SelectFeuille(Nom$, ByVal indx As Integer) Dim Sh As Worksheet On Error Resume Next Set Sh = Worksheets(Nom$) If Err <> 0 Then Worksheets.Add before:=Worksheets(indx) ActiveSheet.Name = Nom$
End Sub
Salutations!
"apt" a écrit dans le message de news: Merci michdenis et JB.
jmais je ne sais toujours pas comment parametrer l'index pour la feuille nouvellement creer soit place juste dans l'ordre des mois de l'année.
j'ai dans mon classeur quatre feuilles comme suis :
Données - Janvier - Avril - Mai
apres l'execution, le nouvelle feuille est inserée comme suit :
Call SelectFeuille("Mars", 2)
Mars - Données - Janvier - Avril - Mai
parce que la feuille active est "Données" (puisqu'elle contient le bouton)
Si j'active la feuille Avril et je demarre mon programme depuis le VBE la feuille est inserée apres Avril.
Alors comment faire pour avoir cette feuille dans l'ordre des mois de l'année quelque soit la feuille active ?
Merci
Bonjour Apt,
Sub test()
SelectFeuille "janvier", 1
End Sub
Sub SelectFeuille(Nom$, ByVal indx As Integer)
Dim Sh As Worksheet
On Error Resume Next
Set Sh = Worksheets(Nom$)
If Err <> 0 Then Worksheets.Add before:=Worksheets(indx)
ActiveSheet.Name = Nom$
End Sub
Salutations!
"apt" <apitops@gmail.com> a écrit dans le message de news: 1143062515.779814.178320@v46g2000cwv.googlegroups.com...
Merci michdenis et JB.
jmais je ne sais toujours pas comment parametrer l'index pour la
feuille nouvellement creer soit place juste dans l'ordre des mois de
l'année.
j'ai dans mon classeur quatre feuilles comme suis :
Données - Janvier - Avril - Mai
apres l'execution, le nouvelle feuille est inserée comme suit :
Call SelectFeuille("Mars", 2)
Mars - Données - Janvier - Avril - Mai
parce que la feuille active est "Données" (puisqu'elle contient le
bouton)
Si j'active la feuille Avril et je demarre mon programme depuis le VBE
la feuille est inserée apres Avril.
Alors comment faire pour avoir cette feuille dans l'ordre des mois de
l'année quelque soit la feuille active ?
Sub SelectFeuille(Nom$, ByVal indx As Integer) Dim Sh As Worksheet On Error Resume Next Set Sh = Worksheets(Nom$) If Err <> 0 Then Worksheets.Add before:=Worksheets(indx) ActiveSheet.Name = Nom$
End Sub
Salutations!
"apt" a écrit dans le message de news: Merci michdenis et JB.
jmais je ne sais toujours pas comment parametrer l'index pour la feuille nouvellement creer soit place juste dans l'ordre des mois de l'année.
j'ai dans mon classeur quatre feuilles comme suis :
Données - Janvier - Avril - Mai
apres l'execution, le nouvelle feuille est inserée comme suit :
Call SelectFeuille("Mars", 2)
Mars - Données - Janvier - Avril - Mai
parce que la feuille active est "Données" (puisqu'elle contient le bouton)
Si j'active la feuille Avril et je demarre mon programme depuis le VBE la feuille est inserée apres Avril.
Alors comment faire pour avoir cette feuille dans l'ordre des mois de l'année quelque soit la feuille active ?
Je crois, qu'il faut connaitre l'index de la feuille apres laquelle on doit ajouter la nouvelle feuille.... parce que si on deplace la feuille de devant l'index changera et doit mis a jour.
il faut avoir un code d'une maniere generale.
Je crois, qu'il faut connaitre l'index de la feuille apres laquelle on
doit ajouter la nouvelle feuille.... parce que si on deplace la feuille
de devant l'index changera et doit mis a jour.
Je crois, qu'il faut connaitre l'index de la feuille apres laquelle on doit ajouter la nouvelle feuille.... parce que si on deplace la feuille de devant l'index changera et doit mis a jour.
il faut avoir un code d'une maniere generale.
JB
Bonjour,
http://cjoint.com/?dxjZAfKksI
Insere le mois demandé à sa place:
Sub essai() InsereMois "Mars" End Sub
Sub InsereMois(mois) m = Month("01/" & mois & "/2006") If Not ExisteFeuille(mois) Then p = 0 For i = Sheets.Count To 1 Step -1 On Error Resume Next monglet = Month("01/" & Sheets(i).Name & "/2006") On Error GoTo 0 If Not IsEmpty(monglet) And m > monglet Then p = i Exit For End If If Not IsEmpty(monglet) And m < monglet Then p = i End If Next i If p = 0 Then p = Sheets.Count Sheets.Add after:=Sheets(p) ActiveSheet.Name = mois End If End Sub
Function ExisteFeuille(f) ExisteFeuille = False For i = 1 To Sheets.Count If f = Sheets(i).Name Then ExisteFeuille = True Next i End Function
Cordialement JB
Bonjour,
http://cjoint.com/?dxjZAfKksI
Insere le mois demandé à sa place:
Sub essai()
InsereMois "Mars"
End Sub
Sub InsereMois(mois)
m = Month("01/" & mois & "/2006")
If Not ExisteFeuille(mois) Then
p = 0
For i = Sheets.Count To 1 Step -1
On Error Resume Next
monglet = Month("01/" & Sheets(i).Name & "/2006")
On Error GoTo 0
If Not IsEmpty(monglet) And m > monglet Then
p = i
Exit For
End If
If Not IsEmpty(monglet) And m < monglet Then
p = i
End If
Next i
If p = 0 Then p = Sheets.Count
Sheets.Add after:=Sheets(p)
ActiveSheet.Name = mois
End If
End Sub
Function ExisteFeuille(f)
ExisteFeuille = False
For i = 1 To Sheets.Count
If f = Sheets(i).Name Then ExisteFeuille = True
Next i
End Function
Sub InsereMois(mois) m = Month("01/" & mois & "/2006") If Not ExisteFeuille(mois) Then p = 0 For i = Sheets.Count To 1 Step -1 On Error Resume Next monglet = Month("01/" & Sheets(i).Name & "/2006") On Error GoTo 0 If Not IsEmpty(monglet) And m > monglet Then p = i Exit For End If If Not IsEmpty(monglet) And m < monglet Then p = i End If Next i If p = 0 Then p = Sheets.Count Sheets.Add after:=Sheets(p) ActiveSheet.Name = mois End If End Sub
Function ExisteFeuille(f) ExisteFeuille = False For i = 1 To Sheets.Count If f = Sheets(i).Name Then ExisteFeuille = True Next i End Function
Cordialement JB
apt
Merci JB.
Pour le mois de Mars ca fonctionne mais si je change le mois en cours, fevrier par exemple, rien n'est inseré !!!!
bon voila le code que j'utilise en attendant d'adapter ton code.
Private Sub CommandButton1_Click() Dim CM Dim Mois(1 To 12) As String Dim i As Integer
' Creation d'un tableau des noms de mois
For i = 1 To 12
Mois(i) = Format(DateSerial(1, i, 1), "mmmm")
Next i
CM = Month(Date) Select Case CM Case Is = 1 SelectFeuille Mois(CM), 1 Case Is = 2 SelectFeuille Mois(CM), 2 Case Is = 3 SelectFeuille Mois(CM), 3 Case Is = 4 SelectFeuille Mois(CM), 4 Case Is = 5 SelectFeuille Mois(CM), 5 Case Is = 6 SelectFeuille Mois(CM), 6 Case Is = 7 SelectFeuille Mois(CM), 7 Case Is = 8 SelectFeuille Mois(CM), 8 Case Is = 9 SelectFeuille Mois(CM), 9 Case Is = 10 SelectFeuille Mois(CM), 10 Case Is = 11 SelectFeuille Mois(CM), 11 Case Is = 12 SelectFeuille Mois(CM), 12 End Select End Sub
Sub SelectFeuille(Nom$, ByVal indx As Integer) Dim Sh As Worksheet On Error Resume Next Set Sh = Worksheets(Nom$) If Err <> 0 Then Worksheets.Add after:=Worksheets(indx) ActiveSheet.Name = Nom$ End Sub
Merci JB.
Pour le mois de Mars ca fonctionne mais si je change le mois en cours,
fevrier par exemple, rien n'est inseré !!!!
bon voila le code que j'utilise en attendant d'adapter ton code.
Private Sub CommandButton1_Click()
Dim CM
Dim Mois(1 To 12) As String
Dim i As Integer
' Creation d'un tableau des noms de mois
For i = 1 To 12
Mois(i) = Format(DateSerial(1, i, 1), "mmmm")
Next i
CM = Month(Date)
Select Case CM
Case Is = 1
SelectFeuille Mois(CM), 1
Case Is = 2
SelectFeuille Mois(CM), 2
Case Is = 3
SelectFeuille Mois(CM), 3
Case Is = 4
SelectFeuille Mois(CM), 4
Case Is = 5
SelectFeuille Mois(CM), 5
Case Is = 6
SelectFeuille Mois(CM), 6
Case Is = 7
SelectFeuille Mois(CM), 7
Case Is = 8
SelectFeuille Mois(CM), 8
Case Is = 9
SelectFeuille Mois(CM), 9
Case Is = 10
SelectFeuille Mois(CM), 10
Case Is = 11
SelectFeuille Mois(CM), 11
Case Is = 12
SelectFeuille Mois(CM), 12
End Select
End Sub
Sub SelectFeuille(Nom$, ByVal indx As Integer)
Dim Sh As Worksheet
On Error Resume Next
Set Sh = Worksheets(Nom$)
If Err <> 0 Then Worksheets.Add after:=Worksheets(indx)
ActiveSheet.Name = Nom$
End Sub
Pour le mois de Mars ca fonctionne mais si je change le mois en cours, fevrier par exemple, rien n'est inseré !!!!
bon voila le code que j'utilise en attendant d'adapter ton code.
Private Sub CommandButton1_Click() Dim CM Dim Mois(1 To 12) As String Dim i As Integer
' Creation d'un tableau des noms de mois
For i = 1 To 12
Mois(i) = Format(DateSerial(1, i, 1), "mmmm")
Next i
CM = Month(Date) Select Case CM Case Is = 1 SelectFeuille Mois(CM), 1 Case Is = 2 SelectFeuille Mois(CM), 2 Case Is = 3 SelectFeuille Mois(CM), 3 Case Is = 4 SelectFeuille Mois(CM), 4 Case Is = 5 SelectFeuille Mois(CM), 5 Case Is = 6 SelectFeuille Mois(CM), 6 Case Is = 7 SelectFeuille Mois(CM), 7 Case Is = 8 SelectFeuille Mois(CM), 8 Case Is = 9 SelectFeuille Mois(CM), 9 Case Is = 10 SelectFeuille Mois(CM), 10 Case Is = 11 SelectFeuille Mois(CM), 11 Case Is = 12 SelectFeuille Mois(CM), 12 End Select End Sub
Sub SelectFeuille(Nom$, ByVal indx As Integer) Dim Sh As Worksheet On Error Resume Next Set Sh = Worksheets(Nom$) If Err <> 0 Then Worksheets.Add after:=Worksheets(indx) ActiveSheet.Name = Nom$ End Sub
Sub auto_open() nfeuille = Format(Date, "mmmm") If Not ExisteFeuille(nfeuille) Then Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = nfeuille End If End Sub
Function ExisteFeuille(f) ExisteFeuille = False For Each s In ActiveWorkbook.Sheets If s.Name = f Then ExisteFeuille = True Next s End Function
JB
Crée un onglet chaque mois:
http://cjoint.com/?dxoGzuok1V
Sub auto_open()
nfeuille = Format(Date, "mmmm")
If Not ExisteFeuille(nfeuille) Then
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = nfeuille
End If
End Sub
Function ExisteFeuille(f)
ExisteFeuille = False
For Each s In ActiveWorkbook.Sheets
If s.Name = f Then ExisteFeuille = True
Next s
End Function
Sub auto_open() nfeuille = Format(Date, "mmmm") If Not ExisteFeuille(nfeuille) Then Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = nfeuille End If End Sub
Function ExisteFeuille(f) ExisteFeuille = False For Each s In ActiveWorkbook.Sheets If s.Name = f Then ExisteFeuille = True Next s End Function