VBA : faire référence à un autre classeur sans le nommer

HELMUT94 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour les pros de VBA,

j'ai deux classeurs ouverts, dans ma macro je veux déplacer la feuille de l'un vers l'autre : facile

par contre mes classeurs ne s'appelleront pas toujours pareil, comment je fais pour que la macro fonctionne avec n'importe quel classeur

je sais qu'il y a la notion ActiveWorkbook qui désigne le classeur dans lequel je suis mais comment désigner le second classeur sans le nommer puisque son nom sera différent à la prochaine utilisation de macro?

par quoi remplacer "Workbooks("RequeteGlobalePlatXLS.xls")" ?

Sub test()
'
' test Macro
'

'
Sheets("AffectationListXLS").Select
Sheets("AffectationListXLS").Move After:=Workbooks( _
"RequeteGlobalePlatXLS.xls").Sheets(1)
Windows("Classeur4").Activate
End Sub

Configuration: Windows / Chrome 73.0.3683.86

3 réponses

  1. Zoul67 Messages postés 2001 Statut Membre 149
     
    Bonjour,

    C'est un peu risqué, mais tu peux déterminer tous les classeurs VBA ouverts et comparer leur nom.
    Un exemple :
    Sub essai()
        MsgBox ActiveWorkbook.FullName
        For Each fichier_excel In Workbooks
            MsgBox fichier_excel.FullName
        Next fichier_excel
    End Sub


    Et tu ajoutes une comparaison.

    A+
    0
    1. HELMUT94 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   1
       
      Merci
      risqué par rapport à quoi ?

      je ne sais pas ajouter une comparaison

      donc si je mets "fullname" à la place du nom du fichier, ça marche ?
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour à tous,

    s'assure qu'il n'y a que 2 classeurs d'ouverts sinon éjection :
    Sub deplFeuil()
        Dim wb2 As Workbook
        If Workbooks.Count <> 2 Then MsgBox "Il faut 2 classeurs": Exit Sub
        For Each wb2 In Workbooks
            If wb2.Name <> ThisWorkbook.Name Then Exit For
        Next
        ThisWorkbook.Sheets("AffectationListXLS").Move After:=wb2.Sheets(1)
        ThisWorkbook.Activate
    End Sub

    eric

    PS : copie toujours du classeur de la macro vers l'autre, qq soit l'actif.

    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Pourquoi "les pros" ? cest ridicule...
    Dim fichier As String

    ChDir "D:\docus\excel\essai" ' à adapter
    fichier = Application.GetOpenFilename("Fichiers xlsx,*.xlsx")
    Workbooks.Open Filename:=fichier

    -1
    1. HELMUT94 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   1
       
      les pros... parce que là par exemple je ne comprends ni ta réponse ni celle de Zoul67
      0
    2. HELMUT94 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   1
       
      thanks, je vais regarder
      0