Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

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
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
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 ...
Bon courage
 

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
(Voir illustration ci-dessous après exécution de la macro TriFeuilles)
Je souhaite garder ce format pour le nom de mes feuilles.



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
    9.2 KB · Affichages: 97
  • 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 ...
Bon dimanche
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…