Portée variable vba excel

Résolu
RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   -  
RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   -

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. cousinhub29 Messages postés 1112 Date d'inscription   Statut Membre Dernière intervention   383
     

    Bonsoir,

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


    0
  2. RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   31
     

    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
  3. RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   31
     

    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
  4. RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   31
     

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

    0
    1. RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   31
       

      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cousinhub29 Messages postés 1112 Date d'inscription   Statut Membre Dernière intervention   383
     

    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
    1. RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   31
       

      ta pelote de fils

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

      0
      1. cousinhub29 Messages postés 1112 Date d'inscription   Statut Membre Dernière intervention   383 > RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention  
         

        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
  7. RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   31
     

    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
  8. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

    au lieu de curdir, utilise:

    ThisWorkbook.Path
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      "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
  9. RV71 Messages postés 620 Date d'inscription   Statut Membre Dernière intervention   31
     

    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