Récupérer le nom d'une feuille inputbox [Résolu]

Signaler
-
 Etienne -
Bonjour,

J'ai fait pas mal de recherche sur le forum mais pas moyen de trouver précisément ce que je cherche.

J'aimerais récupérer le nom d'une feuille avec une inputbox pour pouvoir après la stocker dans une variable et la réutiliser(c'est sur cette deuxième partie que je bloque.)

DeleteData = InputBox("Sélectionnez une feuille Valeur Min", "ValeurMin")
onglet = DeleteData.SheetName 'Cette ligne est fausse bien entendu mais je ne sais pas par quoi la remplacer

Merci d'avance pour votre aide.

Configuration: Windows / Edge 18.17763

3 réponses

Messages postés
13785
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 janvier 2021
775
bonjour,
peut-être:
option explicit
' ...
dim Deletedata as string, onglet as worksheet
DeleteData = InputBox("Sélectionnez une feuille Valeur Min", "ValeurMin")
set onglet = Sheets(DeleteData)
onglet.[a1]="ceci est l'onglet "+onglet.name
Messages postés
12234
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2021
2 548
Bonjour,

Voici :
Option Explicit

Sub Essai()
Dim iVar As Variant, MaFeuille As Worksheet
    iVar = InputBox("Saisir le nom de la feuille Valeur Min", "ValeurMin")
    If StrPtr(iVar) = 0 Then
        MsgBox "Vous avez annulé", vbCritical + vbOKOnly, "Annulation utilisateur"
    ElseIf iVar = vbNullString Then
        MsgBox "Aucune saisie", vbCritical + vbOKOnly, "Pas de saisie utilisateur"
    Else
        Set MaFeuille = getSheetByName(CStr(iVar), ThisWorkbook)
        If Not MaFeuille Is Nothing Then
            MsgBox MaFeuille.Name
        End If
    End If
End Sub
Function getSheetByName(Name As String, Optional Wb As Workbook) As Object
'Pierre Fauconnier
'https://www.developpez.net/forums/blogs/27262-pierre-fauconnier/b8231/vba-excel-verifier-quune-feuille-existe-classeur-trouver-feuille-nom-classeur/
Dim sh As Object, Counter As Long
    If Wb Is Nothing Then Set Wb = ActiveWorkbook
    Counter = 1
    Do While Counter <= Wb.Sheets.Count And getSheetByName Is Nothing
        If StrComp(Wb.Sheets(Counter).Name, Name, vbTextCompare) = 0 Then Set getSheetByName = Wb.Sheets(Counter)
        Counter = Counter + 1
    Loop
End Function

Les deux sont parfaits ! Merci beaucoup à vous deux