Activer 1 fichier dont lenom est une variable

claurel -  
 amigo -
Bonjour,
le problème que je vous soumets me rend impossible l'exécution de ma macro en vba-Excel. Je n'arrive pas en fait à trouver la syntaxe correct me permettant d'activer un fichier préalablement ouvert dont le nom est une variable. Voici l'instruction qui est à l'origine du bug:
Windows ("triXXXX".xls) .Activate.
Merci d'avance!!!

8 réponses

  1. amigo
     
    Bonjour,

    Soit fich le nom de la variable, fich est de type string.

    fich="0010"
    Windows("tri" & fich & ".xls").Activate ' equivalent a Windows("tri0010.xls").Activate

    Salut
    0
    1. claurel
       
      bonjour Amigo,
      merci pour la réponse malheureusement, elle ne marche pas: erreur d'éxécution '9'
      Pouvez vous, en me répondant, m'expliquer également le principe de raisonnement?
      Merci
      0
  2. amigo
     
    Bonjour,

    La syntaxe est bonne, peux-tu me monter un extrait du code tel que tu l'as écrit et qui génère l'erreur.

    A+.
    0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Et avec Workbooks("tri" & fich & ".xls").Activate

    polux
    0
  4. claurel
     
    bonjour,
    de mon côté, j'ai fait également des recherches question de comprendre ces notions de guillemets et de concaténation: à quoi ils servent et comment les utiliser? Finalement, j'ai trouver la solution.
    Ce que j'avait avant était:
    Sub Macro1 ()
    '
    '

    '
    Dim s, t, triXXXX, q
    Dim user, XXXX
    s = "Saisissez le nom de fichier dans lequel vous souhaitez travailler."
    t = "Fichier de travail"
    50 triXXXX = InputBox(s, t)
    If (triXXXX = "") Then
    q = "Voulez-vous vraiment arrêter les opérations?"
    user = MsgBox(q, vbYesNo + vbQuestion)
    If user = 6 Then
    GoTo 40
    Else
    GoTo 50
    End If
    End If
    Windows("tri" & XXXX & ".xls").Activate
    ...
    40 end Sub

    Et maintenant j'ai:
    Sub Macro1 ()
    '
    '

    '
    Dim s, t, triXXXX, q
    Dim user
    s = "Saisissez le nom de fichier dans lequel vous souhaitez travailler."
    t = "Fichier de travail"
    50 triXXXX = InputBox(s, t)
    If (triXXXX = "") Then
    q = "Voulez-vous vraiment arrêter les opérations?"
    user = MsgBox(q, vbYesNo + vbQuestion)
    If user = 6 Then
    GoTo 40
    Else
    GoTo 50
    End If
    End If
    Windows(triXXXX & ".xls").Activate
    ...
    40 end Sub

    A bien y regarder, je crois que le problème se situait au niveau de la variable XXXX qui en fait n'existait dans l'algorithme. Vous m'avez été d'une aide non moins précieuse. Grâce à vous j'ai fait un pas de plus dans le processus d'auto apprentissage du langage VBA. Merci encore et bonne continuation dans votre initiative!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. amigo
     
    bonjour,

    Effectivement, maintement c'est presque bon.
    Je pensais que "tri" etait constant et que "XXXX" etait variable d'ou l'erreur.

    Presque bon, parce que VB offre la possibilité de faire des programmes stucturés, sans utiliser les méthodes du GWBASIC avec plein de GOTO et des numéros de lignes.

    Voila le meme programme mais avec des structures de blocs d'instructions.
    Sub Macro1 () 
    Dim s, t, triXXXX, q 
    Dim user 
    s = "Saisissez le nom de fichier dans lequel vous souhaitez travailler." 
    t = "Fichier de travail" 
    q = "Voulez-vous vraiment arrêter les opérations?" 
    
    do
       triXXXX = InputBox(s, t) 
       If (triXXXX = "") Then 
          user = MsgBox(q, vbYesNo + vbQuestion) 
          If user = vbYes Then Exit Sub
       End If 
    loop
    
    Windows(triXXXX & ".xls").Activate 
    End Sub 
    


    C'est quand même plus lisible, non? Laisses tes vieilles habitudes , t'as tout à y gagner.

    Salut.
    0
  7. claurel
     
    D'accord puisque ça marche
    Merci!
    0
  8. claurel
     
    Bonsoir,
    j'aimerais pouvoir mettr fin à cette discussion, c'est-à-dire la marquer "problème résolu" mais comment faire?
    Merci d'avance
    0
  9. amigo
     
    Il doit y avoir une icone ou un bouton quelque part, une petite bulle verte je crois. Sinon tant pis.
    Ciao.
    0