VBA_switch entre classeurs ouverts

Bonjour,

Je débute dans l'apprentissage VBA en m'entraînant avec les fichiers du boulot.

J'ai d'abord recherché pas mal de temps sur le net mais n'ai rien trouvé ou du moins rien trouvé qui ne fonctionne car ce que je trouve sont des gens dont le code est erroné cherchant une solution ...

J'aimerais tout simplement:

1) après avoir ouvert 2 fichiers excel manuellement (et uniquement ces 2 la)

(pas d'ouverture via un chemin d'acces dans la macro car ils sont sur onedrive auxquel je ne suis pas le seul à accéder. De plus les fichiers dans lesquels je dois copier les donnees changent tout le temps de nom) .

fichier1 = fichier avec la macro qui récupère les données en les collant (dont le nom ne change pas)

fichier2 = fichier qui contient les données que je veux copier (le nom change tout le temps)

2) en cliquant sur un bouton avec macro affectée: copier les données du fichier 2

1 seule feuille nommée "feuille 1" ou il faut copier (E5:Z35)

3) coller les fichiers en E5 sur la feuille active du fichier 1 (continuité du bouton de l'étape 2)

En gros, comment peut-on switcher entre 2 classeurs ouverts via une macro ?

Merci d'avance

Hello,

Voici comment parcourir les classeurs ouverts :

Dim C As Workbook

For Each C In Application.Workbooks
    'Actions à effectuer
next C 

Maintenant si tu veux prendre les données du classeur dont le nom change cela donnerait ça :

Dim CT As Workbook
Dim C As Workbook

Set CT = Workbooks("fichier_nom_qui_change_pas.xslm")

For Each C In Application.Workbooks
    If Not C.Name = CT.Name Then
        'Tes actions à faire
    end if
next C 

R@g

Merci mais cela fonctionne uniquement quand je lance la macro alors que je suis dans le fichier 2.

Si je le lance via un bouton affecté dans le fichier 1, il se contente de copier coller ce qui est dans le fichier 1.

Je voudrais que l'utilisateur clique sur le bouton du fichier 1 et que la macro active le fichier 2 -> copie E5:Z35 dans le fichier 2 -> revienne dans le fichier 1 et colle en E5 dans le fichier 1

capture

Salut asroyal,

essaie comme ca

Sub copie_colle()
    Dim b1 As Workbook, b2 As Workbook
    Dim r1 As Range, r2 As Range

    Set b1 = ActiveWorkbook 'fichier1 où la macro existe
    Set r1 = b1.Sheets("Feuil1").Range("E5") ' il faut adapter le nom de la feuille

    Set b2 = Workbooks("fichier2") ' il faut adapter le nom du fichier2
    Set r2 = b2.Sheets("Feuil1").Range("E5:Z35") ' il faut adapter le nom de la feuille

    b1.Activate
    r2.Copy r1
End Sub

@++

Merci aussi mais le problème est que le fichier 2 dans lequel je veux aller chercher les données (copier) change de nom tout le temps. Je ne peux donc pas mettre Worbooks("nom de fichier") .

Il faudrait une commande du genre OtherWorkbook.Activate pour switcher avec l'autre fichier excel (vu que 2 fichier sont ouverts seulement) mais ca n'existe pas

Re,

essaie comme ca alors, donc la condition c'est qu'il n y a que les deux fichiers ouverts! (après avoir ouvert 2 fichiers excel manuellement (et uniquement ces 2 la))

Sub copie_colle()
    Dim AB As Workbook, wb As Workbook
    Dim r1 As Range, r2 As Range

    Set A = ActiveWorkbook ' ou Workbooks("TEST.xlsm")
    Set r1 = A.Sheets("Feuil1").Range("E5") ' il faut adapter le nom de la feuille

    For Each AB In Application.Workbooks
    If A.Name <> AB.Name Then
    Set wb = Workbooks(AB.Name)
    End If
    Next AB

    Set r2 = wb.Sheets("Feuil1").Range("E5:Z35") ' il faut adapter le nom de la feuille

    r2.Copy r1
End Sub

Merci beaucoup !

L'erreur venait du fait que je n'avais pas fait setwb = workbooks (AB name) c'est ca ?

ouiiiiiiiiiiii

Rechercher des sujets similaires à "vba switch entre classeurs ouverts"