comment utiliser le nom VBA d'un onglet renommé ?

cabsen

XLDnaute Junior
Bonsoir le forum,

Je teste la validité d'un fichier Excel contenant des données à importer au moyen de la macro suivante (la célèbre fonction GetValue se trouve dans une autre procédure ;)) :

Code:
Sub TestGetValue()
sheet = "accueil"
ref = "AB37"
If Mid(GetValue(path, file, sheet, ref), 1, 7) <> "version" Then
MsgBox "Fichier non valide !"
Else
MsgBox "Fichier valide"
End If
End Sub

Lorsqu'un des onglets du fichier à tester porte bien le nom "accueil", tout va bien. Mais lorsqu'aucun des onglets ne porte le nom "accueil", la macro plante !

J'ai remarqué que la feuille renommée conserve son nom de la forme Feuil1(accueil) dans l'Éditeur Visual Basic.
Ma question est la suivante : existe-t-il une syntaxe pour utiliser "Feuil1" (le nom VBA en dur) dans une procédure en lieu et place de "accueil" pour éviter le plantage ?
 

tirex28

XLDnaute Occasionnel
Re : comment utiliser le nom VBA d'un onglet renommé ?

Bonsoir,

Le 'nom vba' d'une feuille correspond à sa propriété CodeName

Code:
MsgBox Worksheets(1).CodeName

Tu peux utiliser ce nom dans tes procédures pour faire référence à l'objet:

Code:
MsgBox Feuil1.Name

Cordialement,

Tirex28/
 

cabsen

XLDnaute Junior
Re : comment utiliser le nom VBA d'un onglet renommé ?

Bonjour tirex28,

J'imagine que c'est bien la solution mais ça me génère une erreur de type '13' avec le message "type incompatible".

J'ai Dim sheet As String
Or Feuil1.Name n'est pas une simple chaîne de caractères

Et si j'essaye de déclarer ma variable autrement, la même erreur survient :(

Merci tout de même ;)
 

Pierrot93

XLDnaute Barbatruc
Re : comment utiliser le nom VBA d'un onglet renommé ?

Bonjour Cabsen, Tirex

chez moi le code ci dessus fonctionne et renvoie bien dans la variable "x" le nom de la feuille, celui présent sur l'onglet :

Code:
Dim x As String
x = Feuil1.Name

maintenant je vois pas trop où tu veux en venir...

bonne journée
@+
 

JNP

XLDnaute Barbatruc
Re : comment utiliser le nom VBA d'un onglet renommé ?

Bonjour le fil, Pierrot :),
J'ai noté que ta variable s'appelle sheet, or Sheet est utilisé par VBA, peut-être que ça rentre en conflit...
Comme Pierrot, j'ai testé :
Code:
Sub Test()
Dim Feuille As String
Feuille = Feuil1.Name
MsgBox (Feuille)
End Sub
Et ça fonctionne parfaitement.
Bonne journée :cool:
PS : Je sais que ce n'est pas conventionnel, mais j'utilise toujours des variables en français, ce qui me permet de les identifier dans mon code facilement, et ça m'évite des conflits avec le VBA.
 

cabsen

XLDnaute Junior
Re : comment utiliser le nom VBA d'un onglet renommé ?

Merci à tous,

Je vais travailler sur vos pistes ce soir. J'ai bon espoir…

Pour préciser les choses :

1 • Je fournis un fichier Excel A de gestion du temps de travail à mes collègues (horaires, activités, congés, etc.)

Des améliorations et corrections sont régulièrement apportées à ce fichier, donc…

2 • Je fournis un dossier de mise à jour qui contient le nouveau fichier Excel B amélioré ou corrigé et un fichier USF qui va importer les données déjà saisies dans le fichier Excel A.

Le problème est que mes collègues renomment leur propre fichier, je dois donc vérifier que le fichier qu'ils sélectionnent pour la mise à jour est bel et bien le fichier Excel A et pas un autre…

3 • L'USF contrôle donc que le fichier sélectionné pour la mise à jour est bien un fichier Excel valide en testant la valeur de la cellule "AB37" de la feuille "accueil"…

En y réfléchissant, la solution serait peut-être simplement de tester si la feuille "accueil" existe ? Puis, si elle existe, de tester la valeur de la cellule ?
 

cabsen

XLDnaute Junior
Re : comment utiliser le nom VBA d'un onglet renommé ?

Re le fil,

Merci Tirex28, Pierrot93 et JNP, votre solution fonctionne pour récupérer le nom de l'onglet de la feuille 1.

Serait-il possible de récupérer le nom de l'onglet de la première feuille d'un fichier Excel fermé ? Je sais… je pousse un peu…;)
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 896
Membres
103 404
dernier inscrit
sultan87