Ouvrir un classeur sur la première feuille "vierge"

hypo78

XLDnaute Impliqué
Bonjour à tous,

Mon classeur est constitué d 'une centaine de feuilles identiques.
Au fur et à mesure il se remplit avec une date en cellule AF2.

Ce que je souhaiterai, qu'à l'ouverture on soit directement sur la première feuille non remplie.

J'ai commencé à tatonner un code, mais si je suis là.... c'est que çà ne fonctionne pas.

Code:
Private Sub Workbook_Open()
w As Worksheet, cel As Range
For Each w In Worksheets
  For Each cel In w.[AF2]
    If cel = "" Then
      w.Activate
      Exit Sub
    End If
  Next
End Sub

Merci d'avance
 

Dranreb

XLDnaute Barbatruc
Re : Ouvrir un classeur sur la première feuille "vierge"

Bons...jour.
Il manque le mot clé "Dim" devant vos déclaration.
AF2 est l'adresse d'une seule cellule, alors pour chaque cellule dedans ben ça ne bouclera qu'une fois.
Sinon c'est pas mal. Je préfère personnellement une majuscule pour commencer mes noms de variables. Je les tape ensuite en minuscule dans le code, comme ça s'il ne me corrige pas la casse je suis tout de suite averti d'une erreur de frappe ou que ma variable n'est pas déclarée.
Cordialement
 

belerofon

XLDnaute Occasionnel
Re : Ouvrir un classeur sur la première feuille "vierge"

Salut Hypo,
Je me pose une question en rapport avec la tienne... Pour reussir a coder ta problematiqie, il faudrait hierarchiser toutes tes feuilles dans un ordre croissant pour qu a l issue de ta boucle VB s arrete sur la premiere feuille vierge... Il le fait peut etre automatiquement mais c est juste une question que je me posais...
J.
 

belerofon

XLDnaute Occasionnel
Re : Ouvrir un classeur sur la première feuille "vierge"

En y pensant encore, ton code demande d ouvrir toutes les feuilles vierges donc normal que ca plante...
Tu as besoin de creer une boucle qui s arretera des qu elle rencontrera les conditions requises par la boucle...
Tu connais mon niveau je ne saurais te pondre une code mais deja je reflechirais a declarer une variable i de type Integer qui s incrementerait a chaque boucle de 1 grace a un truc du genre:
Private Sub Workbook_Open()
Dim Ws As Worksheet, Cel, Feuilx As String, i As Integer

i = 1
Feuilx = "Feuil" & i

For Each Ws In Worksheets
With Sheets(Feuilx)
Cel = Ws.Range("AF2")
If Cel <> "" Then
i = i + 1
Else
Ws.Activate
Exit Sub
End If
End With
Next
End Sub

A priori ca marche en theorie, a tester avec un pc....
La j peux pas le chef de salle ronfle devant le PC....
PS: j espere que t as pas renommer tes onglets sinon mon code sert a rien

Biz copain,
J.
 

hypo78

XLDnaute Impliqué
Re : Ouvrir un classeur sur la première feuille "vierge"

Bonjour à tous les 2,
danreb : j'ai ajouté un Dim devant ma déclaration, pour autant mon code s'arrête sur Next... normal il ne boucle pas. En tout cas merci pour l'astuce d'écriture minuscule/majuscule.

Juju : je teste et je reviens. Mes onglets sont renommés de 01 à 99.
 

hypo78

XLDnaute Impliqué
Re : Ouvrir un classeur sur la première feuille "vierge"

Juju,

çà bloque là :

Code:
Cel = Ws.Range("AF2")

Mes feuilles s'appellent 1, 2, 3 .......99 J'ai donc un peu changé ton code

Code:
Private Sub Workbook_Open()
Dim Ws As Worksheet, Cel As Range, Feuilx As String, i As Integer

i = 1
Feuilx = i

For Each Ws In Worksheets
With Sheets(Feuilx)
Cel = Ws.Range("AF2")
If Cel <> "" Then
i = i + 1
Else
Ws.Activate
Exit Sub
End If
End With
Next
End Sub

Par contre j'ai qd même quelques feuilles qui ne sont pas à tester (database, Dossards, masques)

je cherche.... mais un petit coup de main est le bienvenu
 

geraldine69

XLDnaute Nouveau
Re : Ouvrir un classeur sur la première feuille "vierge"

Bonjour hypo78

Je ne sais pas si je suis dans les règles de l'art avec cette macro mais je me lance LOL

Code:
Sub TestFeuilleVide()
Dim NbFeuille As Integer

NbFeuille = Worksheets.Count


For i = 1 To NbFeuille

Sheets(i).Select

If Cells.Find("*") Is Nothing Then
GoTo Sortie
Else

End If
Next i

Sortie:
Exit Sub
End Sub

Géraldine
 

hypo78

XLDnaute Impliqué
Re : Ouvrir un classeur sur la première feuille "vierge"

Re,
euh.... en fin de compte mon test a fonctionné sur 2 feuilles,mais quand je le fais sur un classeur contenant plus de 2 feuilles la boucle ne s'arrête pas sur la 1ère feuille contenant la cellule "vide" il continue sa boucle jusqu'à la dernière.

Comment on lui dit "STOP" ,
 

geraldine69

XLDnaute Nouveau
Re : Ouvrir un classeur sur la première feuille "vierge"

Je te met mon classeur de test en exemple.

Positionne toi sur la feuille Depart et clic sur le bouton.

Seule la feuille 18 est vide

Tu peux aussi essayer en remplaçant

Code:
If Cells.Find("*") Is Nothing Then

par

Code:
If Cells.Find("") Is Nothing Then

Pour moi, ça fonctionne dans les deux cas




Géraldine
 

Pièces jointes

  • Test_premiere_Feuille_Vide.xlsm
    41.1 KB · Affichages: 59
Dernière édition:

geraldine69

XLDnaute Nouveau
Re : Ouvrir un classeur sur la première feuille "vierge"

Je viens de comprendre
Ce n'est pas la feuille qui t’intéresses mais la cellule.

Donc ça doit donner ceci

Code:
Sub TestFeuilleVide()
Dim NbFeuille As Integer

NbFeuille = Worksheets.Count


For i = 1 To NbFeuille

Sheets(i).Select

If Range("AF2").Value = ("") Then
GoTo Sortie
Else

End If
Next i

Sortie:
Exit Sub
End Sub

Géraldine
 

Discussions similaires

Réponses
2
Affichages
188

Statistiques des forums

Discussions
312 623
Messages
2 090 277
Membres
104 479
dernier inscrit
Guengant