Portée variable vba excel

Résolu

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

8 réponses

  1. Bonsoir,

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


    1. 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

      1. 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

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

          1. 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.

        2. 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


          1. ta pelote de fils

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

        3. 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

          1. Contributeur

            bonjour,

            au lieu de curdir, utilise:

            ThisWorkbook.Path
            1. Contributeur

              "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.

          2. 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 :) 

            Discussions similaires

            Hors portee

            4 réponses