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 24603 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

Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   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
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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
pourtant, il n'y a pas besoin de "pros" pour résoudre un tel problème

pour apprendre le vba
https://excel.developpez.com/cours/?page=prog#environnement
et aussi, très pédagogique et zen (mon préféré pour les bases)
http://www.info-3000.com/vbvba/index.php

bonne découverte :o)
-1
HELMUT94 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   1
 
thanks, je vais regarder
0