Appel function pour tester l'existence d'une feuille

cibleo

XLDnaute Impliqué
Bonjour le forum,

Dans le module1, il y a une macro qui me permet de reproduire un modèle de planning selon 2 dates entrées successivement dans des Inputbox.

Dans le fichier joint, j'ai tapé successivement 15/11/2010 et 17/11/2010 pour reproduire 3 plannings journaliers.
J'aimerais maintenant faire appel à une fonction qui me permettrait de tester l'existence des feuilles déjà produites.

Ainsi si j'entre 17/11/2010 puis 30/11/2010, seules les feuilles du 18/11 au 30/11 devront être dupliquées.
La feuille du 17/11 existant déjà, la macro CreerFeuilles1 bug évidemment.
J'ai trouvé cette fonction personnalisée, puis-je l'appeler dans ma macro ?
Code:
Function TestFeuil(Nom As String) As Boolean 'bqtr
Dim feuil As Object
On Error Resume Next
Set feuil = ActiveWorkbook.Sheets(Nom)
  If Err = 0 Then
     TestFeuil = True
  Else
     TestFeuil = False
  End If
End Function
Pouvez-vous m'aider ?
Cibleo
 

Pièces jointes

  • InputBox2.zip
    14.2 KB · Affichages: 45
  • InputBox2.zip
    14.2 KB · Affichages: 45
  • InputBox2.zip
    14.2 KB · Affichages: 47

kiki29

XLDnaute Barbatruc
Re : Appel function pour tester l'existence d'une feuille

Salut, sans aucun doute, une autre
Code:
Private Function ExistenceFeuille(ByVal sNomFeuille As String) As Boolean
    On Error Resume Next
    ExistenceFeuille = Sheets(sNomFeuille).Name <> ""
    Err.Clear
End Function
 

JNP

XLDnaute Barbatruc
Re : Appel function pour tester l'existence d'une feuille

Bonsoir le fil :),
Non testé
Code:
For i = DateDebut To DateFin
    If Weekday(i, vbMonday) < 6 Then 'Sans samedis et dimanches
[COLOR=red]        If Not TestFeuil(Format(i, "dd mm yy")) Then
[/COLOR]            Sheets("Modele").Copy After:=Worksheets(Worksheets.Count)
            With ActiveSheet
                .Name = Format(i, "dd mm yy") 'Mise en forme du nom de la feuille
                .[B1] = "Planning du " & Application.Proper(Format(i, "dddd dd mmmm yyyy")) 'Mise en forme du de la date en B1
            End With
[COLOR=red][B]        End If
[/B][/COLOR]    End If
Next
Bonne soirée :cool:
 

cibleo

XLDnaute Impliqué
Re : Appel function pour tester l'existence d'une feuille

Bonjour JNP, kiki29

J'ai testé ça marche, par contre j'ai effectué un test comme ceci :
12/11/2010 puis 15/11/2010 et la feuille du 12/11 est copié à la fin évidemment :rolleyes:
Quelle est l'instruction à rajouter pour les classer chronologiquement.

Merci à vous
Cibleo
 

JNP

XLDnaute Barbatruc
Re : Appel function pour tester l'existence d'une feuille

Re :),
Tu peux jeter un œil à ce fil :rolleyes:
Par contre, pour respecter un ordre alphabétique, il vaudrait mieux que tes onglets adaptent la notation inversée "yy mm dd", qui est beaucoup plus logique pour ce cas :p...
Bon courage :cool:
 

cibleo

XLDnaute Impliqué
Re : Appel function pour tester l'existence d'une feuille

Re à tous,
JNP merci pour le fil.

J'ai repris la macro ci-dessous, elle fonctionne bien tant que je ne change pas d'année.
J'ai introduit des feuilles au format janvier 2011, elles viennent se placer avant 2010 :eek:
(Voir illustration ci-dessous après exécution de la macro TriFeuilles)
Je souhaite garder ce format pour le nom de mes feuilles.
Onglet.jpg


Code:
Private Sub TriFeuilles()
Dim Bcle%, Index%, Sh As Object
'évidemment, les feuilles ne doivent pas être protégées !
On Error Resume Next
With ThisWorkbook
  For Each Sh In ThisWorkbook.Sheets
    If Sh.Index > [COLOR=blue]1[/COLOR] Then
      For Index = [COLOR=blue]2[/COLOR] To .Sheets.Count
        If LCase(Sh.Name) > LCase(.Sheets(Index).Name) And Sh.Index < Index Then
          Sh.Move , .Sheets(Index)
        End If
      Next Index
    End If
  Next Sh
End With
End Sub

Comment peut-on y remédier ?

Cibleo
 

Pièces jointes

  • Onglet.jpg
    Onglet.jpg
    9.2 KB · Affichages: 97
  • Onglet.jpg
    Onglet.jpg
    9.2 KB · Affichages: 96
  • InputBox2.zip
    13 KB · Affichages: 37
  • InputBox2.zip
    13 KB · Affichages: 42
  • InputBox2.zip
    13 KB · Affichages: 42

Banzai64

XLDnaute Accro
Re : Appel function pour tester l'existence d'une feuille

bonjour

A essayer et à tester

Code:
Private Sub TriFeuilles()
Dim Bcle%, Index%, Sh As Object
'évidemment, les feuilles ne doivent pas être protégées !
On Error Resume Next
With ThisWorkbook
  For Each Sh In ThisWorkbook.Sheets
    If Sh.Index > 1 Then
      For Index = 2 To .Sheets.Count
        If [COLOR="Red"]StrReverse([/COLOR]LCase(Sh.Name)[COLOR="Red"])[/COLOR] > [COLOR="Red"]StrReverse([/COLOR]LCase(.Sheets(Index).Name)[COLOR="Red"])[/COLOR] And Sh.Index < Index Then
          Sh.Move , .Sheets(Index)
        End If
      Next Index
    End If
  Next Sh
End With
End Sub
 

JNP

XLDnaute Barbatruc
Re : Appel function pour tester l'existence d'une feuille

Re :),
Comme je te l'avais dit, en utilisant la notation inversée :
Aujourd'hui, 21/11/2010 donne 2010 11 21 comme nom d'onglet, à ce moment là, tout se triera comme il faut ;).
Banzaï, StrReverse donnera 01 11 90 pour 09/11/10, je suis septique sur le tri :p...
Bon dimanche :cool:
 

Statistiques des forums

Discussions
312 196
Messages
2 086 087
Membres
103 116
dernier inscrit
kutobi87