Autres Intégrer une feuille externe dans un classeur ouvert

FOUQUET Yves

XLDnaute Occasionnel
Bonjour,

J'ai une feuille dans un classeur lui même dans un dossier:
D:\Gestion AHI\transfer\recept_adh.xlsx La feuille s'appelle "Effectif"
C'est ma source et elle est fermée.

Je suis dans un autre classeur ouvert à partir de: D:\gestion AHI\Pr_gestion.xlsx
C'est ma cible qui est ouverte et dans laquelle de veux créer ma macro.

Je voudrais intégrer la feuille "Effectif" source dans la cible Pr_gestion.xlsm

Là encore je n'ai aucune idée.
J'ai bien essayé avec des copy et autres, de chercher du code pas trop compliqué, mais NADA à ma portée...

Alors si une âme charitable passe par là...

merci d'avance.
Yves
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Normalement cela devrait te mettre sur la voie
VB:
Sub liminal()
Dim strPath$, fichier$
Dim sourceWBK As Workbook, destiWBK As Workbook
strPath = "D:\Gestion AHI\transfer\"
fichier = "recept_adh.xlsx"
Application.ScreenUpdating = False
Set sourceWBK = Workbooks.Open(strPath & fichier)
Set destiWBK = ThisWorkbook
sourceWBK.Sheets("Effectif").Copy before:=destiWBK.Sheets(1)
sourceWBK.Close False
End Sub
 

FOUQUET Yves

XLDnaute Occasionnel
Je n'ai pu m'empêcher de tester.
Dans le petit dossier d'essai cela fonctionne très bien.
Dans le programme cela ne fonctionne plus...
"Excel ne parvient à inserer les feuilles dans le classeur de destination car il contient moins de de ligne et de colonne......


1032237
 

Staple1600

XLDnaute Barbatruc
Bonjour

Le code doit être dans le classeur contenant le projet VBA
(et donc être enregistré en *.xlsm)
Pour résumé:
Je suis dans le classeur A (donc ouvert et contient le code VBA) (extension du classeur A: *.xlsm)
et je veux copier la feuille Effectif du classeur B (fermé, extenstion du classeur B:*.xlsx) dans le classeur.

C'est ce que fait la macro du message#2.
 

FOUQUET Yves

XLDnaute Occasionnel
Oui le code est dans un Userform19 de D:\Gestion AHI\Pr_gestion AHI dont la propriété est (Microsoft Office Excel 97-2003 Worksheet (.xls)) et qui est la destination. (Classeur A)
J'ajoute que j'ai essayé en laissant la feuille "Effectif" dans le classeur ou en la supprimant du classeur, avant transfert et le résultat est le même.

Le fichier source est dans un autre classeur situé dans D:\Gestion AHI\transfer\recept_adhe.xlsx dont la propriété est 'Microsoft Office Excel Worksheet (.xlsx)' : feuille Effectif. (Classeur B)

Dans le petit module d'essai cela fonctionne y compris que si je lance plusieurs fois il copie plusieurs feuilles "Effectif 1,2,3..."
Dans le module programme c'est le même code, "copie-collé" et çà plante... ?

VB:
Option Explicit  'Activation de la déclaration explicite des variables
Dim Ws As Worksheet  'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm

'----------- Correspond au programme du bouton QUITTER
Private Sub CommandButton1_Click()
Unload Me
Application.DisplayAlerts = False   'supprime l'alerte
End Sub
'----------------------------------------------'
Private Sub CommandButton2_Click() 'VALIDER
'Sub liminal()
Dim strPath$, fichier$
Dim sourceWBK As Workbook, destiWBK As Workbook

'--- 1 supprimer les feuuilles ------
Worksheets("Effectif").Delete

'--- 2 copier les feuilles à partir de la source transfer  ---
strPath = "D:\Gestion AHI\transfer\"
fichier = "recept_adhe.xlsx"
Application.ScreenUpdating = False
Set sourceWBK = Workbooks.Open(strPath & fichier)
Set destiWBK = ThisWorkbook
sourceWBK.Sheets("Effectif").Copy before:=destiWBK.Sheets(1)
sourceWBK.Close False
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Il faudrait mieux que l'Userform19 soit dans un classeur *.xlsm
Ou plutôt il est obligatoire qu'il soit dans un classeur *.xlsm

Donc faire enregistrer sous et choisir *.xlsm

Et normalement, plus de message d'erreur

NB: Pour savoir pourquoi, voir sur le net les diffrénces entre un *.xls et un *.xlsx ;)

PS: Sur ta copie d'écran, on voit 20 userforms!!!
C'est 19 de trop ;)
 

FOUQUET Yves

XLDnaute Occasionnel
Pour xls et xlsm j'ai bien compris que je suis parti d'un vieux classeur existant auquel j'ai ajouté des macros ensuite. certainement pour cela qu'il est resté en xls.

22 Userforms: Pourquoi ? J'ai fait un Userform par procédure... Faut bien avoir des écrans différents?

Bon pour le reste cela a l'air de parfaitement fonctionner! C'EST GENIAL...
C'est les copains de Assistance Humanitaire Internationale qui vont être contents. Je vais tout tester et re-tester avant de leur faire voir.

Une fois tout fini, je vais imprimer quelques lignes de code bien particulières et sachant ce qu'elles produisent je serai à même de les étudier et comprendre leur signification.

Il me reste encore une procédure de fin d'année à écrire mais comme c'est encore une copie, et déplacement de feuille je devrais pouvoir m'en sortir.

Pour te remercier de ton aide, de ta patience, de ta gentillesse, et te sachant passionné que par le saucisson voilà pour toi....
Fabrication maison... Il n'y a pas que le VBA dans la vie.
1032252
1032253
1032254
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87