Portée variable vba excel

Résolu
RV71 Messages postés 589 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 12 septembre 2024 - 11 sept. 2024 à 17:34
RV71 Messages postés 589 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 12 septembre 2024 - 12 sept. 2024 à 14:00

Bonjour,

J'ai un classeur avec plusieurs feuilles.

Je souhaite récupérer à l'ouverture du fichier le nom du fichier (sans extension) et le mettre dans une variable.
Je pense que ça fonctionne (test msgbox)

Public Sub Workbook_Open()

'On met dans une variable le nom sans l'extension




nom_fichier = Split(ThisWorkbook.Name, ".")(0)

Maintenant, je souhaite récupérer ce nom_fichier (la variable) dans le code d'un userform

Et là elle ne retourne rien

J'ai testé de la déclarer dans Declarations() de general

Public nom_fichier As String

Dans mon user_form, pas bien le choix de l'appeler,,

 j'ai mis le code en public mais c'est pareil

Public Sub btn_creer_fichier_Click()

MsgBox nom_fichier

Là je sèche

Merci

A voir également:

8 réponses

cousinhub29 Messages postés 936 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 11 septembre 2024 339
11 sept. 2024 à 19:38

Bonsoir,

Est-ce que la variable "nom_fichier" est bien déclarée en "Public" dans un module standard?


0
RV71 Messages postés 589 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 12 septembre 2024 31
Modifié le 11 sept. 2024 à 20:33

j'ai déclaré du coup dans le module du userform, d'ailleur je ne sais pas pourquoi j'ai voulu déclarer en glogal, question d'habitude.

Mais là j'ai soit de la peau de soce soit faut que j'arrête, mais j'ai un problème dans le code de mon userForm

-> le code user form sur un bouton, avec 2 listes 

Public Sub btn_creer_fichier_Click()


'On met dans une variable le nom sans l'extension

nom_fichier = Split(ThisWorkbook.Name, ".")(0)





'on vérifie que les 2 listes ont été choisies

If IsNull(list_mois) Or IsNull(list_annee) Or Val(list_annee) = 0 Then
's'il manque un choix on avertit et on sort
    MsgBox "choisir un mois ET une année"
    Exit Sub
    
End If

      
' si on est là on peut procèder à la création du nouveau fichier



'On récupère le dossier courrant

repertoire = CurDir



'on cacatene le tout

Dim fichier As String
fichier = repertoire & "\" & nom_fichier & list_annee & list_mois & ".xlsm"



MsgBox ("le nom du fichier à comparer est : " & fichier)
'là je vois bien le chemin complet et le fichier avec extension xlsm


If Dir(fichier) <> "" Then

    MsgBox "Le fichier '" & fichier & "' existe"

Else

    MsgBox "Le fichier n'a pas été trouvé"

End If




A chaque fois j'ai le msgbox "le fichier n'a pas été trouvé" 

pourtant je peux certifier que le fichier "Sxxxxxxx20241.xlsm" (avec le répertoire dans le msgbox) existe dans le répertoire courant.

Je pense que je passe à coté d'un détail mais je sèche...

Merci

0
RV71 Messages postés 589 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 12 septembre 2024 31
Modifié le 11 sept. 2024 à 20:52

voici le code entier qui est dans un bouton d'un user form

Le fichier que je selectionne via les 2 listes et bien retourné par la msgbox (chemin et extension) et existe dans le répertoire.

Ca m'échappe...



Public Sub btn_creer_fichier_Click()


'On met dans une variable le nom sans l'extension

nom_fichier = Split(ThisWorkbook.Name, ".")(0)





'on vérifie que les 2 listes ont été choisies
If IsNull(list_mois) Or IsNull(list_annee) Or Val(list_annee) = 0 Then
's'il manque un choix on avertit et on sort
    MsgBox "choisir un mois ET une année"
    Exit Sub
    
End If

      
' si on est là on peut procèder à la création du nouveau fichier



'On récupère le dossier courrant

repertoire = CurDir



'on cacatene le tout

Dim fichier As String
fichier = repertoire & "\" & nom_fichier & list_annee & list_mois & ".xlsm"



MsgBox ("le nom du fichier à comparer est : " & fichier)

' là j'ai la msgb qui me semble OK, voir plus bas


If Dir(fichier) <> "" Then

    MsgBox "Le fichier '" & fichier & "' existe"

Else

    MsgBox "Le fichier n'a pas été trouvé"

End If







End Sub

 Voici le msgbox de la ligne

MsgBox ("le nom du fichier à comparer est : " & fichier)

Sincèrement je ne vois pas

Merci

0
RV71 Messages postés 589 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 12 septembre 2024 31
11 sept. 2024 à 20:54

Voici une capture du fichier qui n'est pas détecté dans l'explorateur, meme dossier que le fichier excel

0
RV71 Messages postés 589 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 12 septembre 2024 31
11 sept. 2024 à 20:56

ce forum est vraiment merdique, je ne peux pas mettre une autre image

voici un lien cjoint

https://www.cjoint.com/c/NIls2L85o36

Serieux entre les commentaires et les réponses, cetains en plusieurs pasges, faudrait que Jeff se réveille, c'est impossible ce truc.

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cousinhub29 Messages postés 936 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 11 septembre 2024 339
11 sept. 2024 à 20:56

Re-,

Je pense avoir répondu à la question initiale...

(et n'ai aucune envie de prolonger sur ta pelote de fils, sur ton sujet parent)

Bon courage


0
RV71 Messages postés 589 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 12 septembre 2024 31
11 sept. 2024 à 20:59

ta pelote de fils

????????????

0
cousinhub29 Messages postés 936 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 11 septembre 2024 339 > RV71 Messages postés 589 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 12 septembre 2024
11 sept. 2024 à 21:06

Re-,

Sur un forum (quel qu’il soit), lorsqu'un sujet dépasse un certain nombre de posts, ou fil, on appelle cela une pelote...

https://forums.commentcamarche.net/forum/affich-38091784-comment-recuperer-une-valeur-selon-2-criteres

En est un exemple...

bientôt 80 réponses, et toujours pas de solutions...

Peut-être :

- Revoir le concept

- Remettre tout à plat

- ....

Bref, bon courage...

0
RV71 Messages postés 589 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 12 septembre 2024 31
11 sept. 2024 à 21:02

Mon dernier msgbox

MsgBox ("le nom du fichier à comparer est : " & fichier)


If Dir(fichier) <> "" Then

    MsgBox "Le fichier '" & fichier & "' existe"

Else

    MsgBox "Le fichier n'a pas été trouvé"

End If

m'affiche bien le chemin et le fichier donc j'imagine que cela fonctionne à ce niveau

0
yg_be Messages postés 23172 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 septembre 2024 1 533
12 sept. 2024 à 07:02

bonjour,

au lieu de curdir, utilise:

ThisWorkbook.Path
0
yg_be Messages postés 23172 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 septembre 2024 1 533
Modifié le 12 sept. 2024 à 09:27

"je passe à coté d'un détail"

"existe dans le répertoire courant"

"meme dossier que le fichier excel"

Et tu évites soigneusement d'indiquer le nom de ce répertoire.

Le nom finit par apparaitre dans les images que tu partages.

Apparement, tu les partages sans les regarder.

Regarde bien les "détails" des images partagées le 11 sept. 2024 à 20:43 et le 11 sept. 2024 à 20:56.

0
RV71 Messages postés 589 Date d'inscription mardi 14 avril 2020 Statut Membre Dernière intervention 12 septembre 2024 31
12 sept. 2024 à 14:00

Bien vu !!!

J'avais la tête dedans et n'avait pas fait attention.

En fait le curdir me renvoie je ne sais pas pourquoi un autre dossier.

Avec le 

ThisWorkbook.Path

ca fonctionne !

Merci pour le coup de main et d'oeil :) 

0