Récupérer le numéro d'une feuille sous vba

89ric

XLDnaute Junior
Bonjour,
Pouvez-vous m'aider SVP?
Je cherche une fonction sous vba me permettant que récupérer le numéro d'une feuille.
En effet, cette feuille se positionnant en dernier, mes macros font référence à la dernière feuille du classeur. Seul problème, c'est que je suis amener à ajouter des feuilles et du coup mes macros ne font plus référence à la bonne feuille.
J'ai beau chercher, je n'ai rien trouvé.
Avez-vous une solution?
Merci d'avance.
 

Grand Chaman Excel

XLDnaute Impliqué
Re : Récupérer le numéro d'une feuille sous vba

Bonsoir,

Tu peux aussi utiliser une fonction du genre pour récupérer le no en fonction du nom de la feuille :

VB:
Function NoFeuille(NomFeuille As String) as Integer
    Dim i As Integer
    For i = 1 To Sheets.Count
        If Sheets(i).Name = NomFeuille Then
            NoFeuille = i
            Exit Function
        End If
    Next
End Function

A+
 

89ric

XLDnaute Junior
Re : Récupérer le numéro d'une feuille sous vba

Bonjour, merci pour vos réponses.
Entre-temps, j'ai essayé ceci:

Sheets(Sheets.Count).Active
a = ActiveSheets.Index

Mais cela ne fonctionne pas. Pourquoi?
Je pense que le principe doit être bon mais il doit y avoir des erreurs de syntaxe.
Je débute vraiment en VBA!

Merci.
 

89ric

XLDnaute Junior
Re : Récupérer le numéro d'une feuille sous vba

Merci Pierrot93,
ca marche!
Mais j'ai un autre souci, lorsque j'essaie de faire tourner ma macro, elle plante à la fin (ce qui est mis en rouge)
Je ne vois pas pourquoi, j'ai plusieurs essais, rien n'y fait!
Pouvez-vous m'aider
Merci.

Sub CréerRDV()

Dim a As Integer


'Copie la feuille "Rendez-vous" en dernier
Sheets("Rendez-vous").Copy After:=Sheets(Sheets.Count)

Worksheets(Sheets.Count).Activate
a = ActiveSheet.Index

'Affecte une couleur à l'onglet
Sheets(a).Tab.ColorIndex = 3

'Renomme la dernière feuille
Sheets(a).Name = "RDV" & " " & Sheets("Rendez-vous").Range("c2").Text & " " & Sheets("Rendez-vous").Range("g2").Text & Sheets("Rendez-vous").Range("h2").Text

'Déprotège la feuille
Sheets(a).Unprotect

'Copie la valeur des cellules c2 à l2 et supprime les colonnes N à V
Range("C2:l2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _
:=xlBetween
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

Range("O6:V56").Select
ActiveSheet.Unprotect
Selection.Delete Shift:=xlUp



'Crée un lien hypertexte dans la feuille de renseignement élève
Dim j As Integer
Dim s, t, d As String
Dim i As Long
Dim c As Range


t = Sheets(Sheets.Count).Range("c2").Text
For j = 15 To 46
s = Sheets(j).Name
'MsgBox Mid(s, 1, Len(s)) & vbLf & Mid(t, 1, Len(s))
If Mid(s, 1, Len(s)) = Mid(t, 1, Len(s)) Then
Sheets(a).Select
d = Cells(2, 7) & " " & Cells(2, 8)
'Cherche la première cellule vide du tableau
For Each c In Sheets(j).Range("h40:l41")
If c.Value = "" Then
'Ecris la valeur d dans la première cellule trouvée
c = d
'Crée un lien hypertexte de cette cellule vers la dernière feuille
lien = Sheets(a).Name
Sheets(j).Activate
Range(c).Select


ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"'" & lien & "'!A1", TextToDisplay:=d
Exit For
End If
Next c


Exit For
End If

Next








'Protège la feuille
Sheets(a).protect

End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 559
Messages
2 089 604
Membres
104 225
dernier inscrit
Misterpat63