Copier Feuille(A) Classeur A vers Classeur B

Bonjour,

Un fichier "Adhérents" est mis à jour par le secrétaire d'une association, dans son ordinateur.

Moi je suis le Trésorier et je travaille avec mon ordinateur.

J'ai développé une application dans mon ordinateur qui nécessite d'aller chercher des infos dans le fichier "Adhérents" du micro du Secrétaire.

Je peux récupérer son classeur et le mettre dans mon ordiateur via une clé Usb.

Mais sa feuille "Adhérents" sera dans un classeur et mon projet à moi dans un autre classeur.

Coment copier le fichier "Adhérents" dans mon classeur ?

Bonjour,

Coment copier le fichier "Adhérents" dans mon classeur ?

Ta demande est trop vague pour te conseiller d'autant que l'on ne sait pas ce que tu veux copier. Tout le classeur, une feuille, des données venant de plusieurs feuilles, ????

Fais une recherche sur le forum par "copier une feuille", "importer des données", etc...

Amicalement

Dan

Bonjour Nad Dan,

Je suis allé faire des recherches avec "copier and feuille and classeur" et j'ai trouvé plein de sujets compliqués auxquels je ne comprends pas grandchose . . .

Alors je me permets d'essayer de préciser ma demande :

Sur mon ordinateur :

1) CLASSEUR A (que j'ai copié à partir de l'ordinateur du Secrétaire avec une clé Usb)

Il contient 5 Feuilles dont une qui m'intéresse : "Adhérents" (c'est le fichier des adhérents avec nom, prénom, adresse, tel etc. . mis à jour régulièrement par le Secrétaire).

2) CLASSEUR B avec mes feuilles, mes macros, mes Usf etc . . .

Je souhaite y rapatrier (copier) la Feuille "Adhérents" du CLASSEUR A (avec du code VBA)

Ai-je été clair ?

Re,

essaie ce code :

Sub test()
'Macro dan pour pelerin98
'08/11/2009
Dim wb As Workbook
Set wb = Workbooks("classeurA")
wb.Sheets("Adhérents").Copy ThisWorkbook.Sheets(1)
End Sub

Code à placer dans un module en VBA et ce, dans le classeur B

classeurA étant le nom du fichier de la secrétaire et doit être ouvert.

Amicalement

Dan

Merci Nad-Dan, ça fonctionne au quart de poil ! Tu es un vrai chef. J'admire.

Puis-je abuser ? (en attendant la réponse, j'abuse)

Pour que ça fonctionne, il faut ouvrir au préalable le "Classeur A"

Comme c'est destiné à des utilisateurs "basiques" (encore plus débutants que moi) n'y a t-il pas un moyen automatique (code VBA) à placer avant le code que tu m'as fourni, pour ouvrir le "Classeur A" et pour le fermer une fois que la copie de la feuille "Adhérents" a été faite ?

Re,

Si c'est possible mais il faut savoir où se trouve le classeur A. Je veux dire dans quel répertoire ou alors on fait une instruction qui ouvre la boite de dialogue permettant d'aller choisir et ouvrir le fichier en question. Comme si tu utilisais la commande fichier / Ouvrir

A te relire

Dan

Nad Dan,

J'ai suivi tes instructions et ça fonctionne, . . . presque !

J'ai,comme tu le proposes, "macroïsé" la fonction Ouverture du Classeur A

Ca me donne le Code suivant :

ChDir "C:\Users\utilisateur\Desktop\JPF\MET"

Workbooks.Open Filename:= _

"C:\Users\utilisateur\Desktop\JPF\MET\adhérents MET.xls"

Application.WindowState = xlMinimized

Windows("Gestion_Manifs.xls").Activate

Pas de problème, le Classeur A (adhérents MET.xls) s'ouvre bien, mais ça se termine par l'affichage Excel du contenu du dossier final du chemin indiqué ("C:\Users . . . \MET") Donc le contenu du dossier "MET"

Je me retrouve donc avec :

1) les icônes rprésentant tous les dossiers contenus dans "MET"

2) avec dans la barre en bas de l'écran les deux dossiers (classeurs) ouverts, à savoir :

Classeur A (adhérents MET") et Classeur B (le mien)

Il faut que je fasse "remonter" mon classeur B (minimisé en barre de bas d'écran) pour pouvoir continuer normalement mon traitement.

Je voudrais que l'affichage du contenu du dossir "MET" ne se fasse pas mais que par contre la "remontée" de mon classeur B soit automatique.

Est-ce Clair ? . . . et possible ?

re,

Le classeur A se trouve toujours ici --> "C:\Users\utilisateur\Desktop\JPF\MET\" ?

Donc dans le dossier MET de JPF ??

Merci de confirmer qu'il sera toujours bien à cette endroit.

A te relire

Dan

Nad Dan,

Tout à fait.

J'ai un Dossier "MET" dans lequel il y a (entre autres) "Classeur A" et "Classeur B"

Et ça sera toujours comme ça.

Voir image jointe. https://www.excel-pratique.com/~files/doc2/Forum.jpg

8test-13.xlsm (20.94 Ko)

Nad Dan,

je crois avoir résolu le problème en supprimant dans ta macro la ligne

Application.WindowState = xlMinimized

Ca donne ça :

Sub GE_Ouvre_Classeur()

'

' GE_Ouvre_Classeur Macro

' Macro enregistrée le 09/11/2009 par utilisateur

'

ChDir "C:\Users\utilisateur\Desktop\JPF\MET"

Workbooks.Open Filename:= _

"C:\Users\utilisateur\Desktop\JPF\MET\adhérents MET.xls"

' Application.WindowState = xlMinimized

Windows("Gestion_Manifs.xls").Activate

End Sub

Ca m'ouvre bien le Classeur "adhérents MET" et ça me rend actif mon classeur "Gestion_Manifs" qui s'ouvre bien sur ma page d'accueil appelée par le Code de "ThisWorhbook"

Je peux donc, grace à toi, effectuer automatiquement (par macros) les opérations :

1) ouverture d'un classeur externe (A)

2) récupérer dans ce classeur externe, une feuille qui remplacera sa petite soeur (version antérieure) dans mon classeur (B)

Cela pour ne pas faire faire à des utilisateurs qui ne connaissent rien aux techniques informatiques, des manipulations hors de leur portée.

Salut le forum

Si tu veux vraiment automatiser le traitement

'importer le contenu d'une feuille de calcul d'un classeur fermé
'(seules les données sont importées, pas les mises en forme)

Sub testQuery()
  fich$ = "D:\ExempleTris.xls"
  Feuille$ = "Feuil1"
  QueryWorksheet fich, Feuille
End Sub

Public Sub QueryWorksheet(NomFichier$, Feuille$)
'Rob Bovey, mpep
'nécessite une référence à la librairie
'Microsoft ActiveX Data Object 2.x Library
Dim rsData As ADODB.Recordset
Dim szConnect As String
Dim szSQL As String

    ''' Crée la chaîne de connexion
    szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & NomFichier & ";" & _
        "Extended Properties=Excel 8.0;"

    ' La requête est basée sur le nom de la feuille. Ce nom
    ' doit se terminer par un $ et doit être entouré de crochets droits.
    ' Adapter ce nom à vos besoins
    szSQL = "SELECT * FROM [" & Feuille & "$];"

    Set rsData = New ADODB.Recordset
    rsData.Open szSQL, szConnect, adOpenForwardOnly, _
        adLockReadOnly, adCmdText

    ''' Vérifie qu'on a bien reçu des données
    If Not rsData.EOF Then
        Feuil1.Range("A1").CopyFromRecordset rsData
    Else
        MsgBox "Aucun enregistrement renvoyé.", vbCritical
    End If

    ''' On nettoie pour finir...
    rsData.Close
    Set rsData = Nothing

End Sub

Mytå

9screen-shoot-2.docx (156.88 Ko)
11screen-shoot-1.docx (170.54 Ko)

Bonsoir Usb512,

Merci pour ta solution que je garde en réserve.

Cependant ele ne règle pas mon problème (qui est résolu) car elle ne transère pas les mises en forme.

capture
Rechercher des sujets similaires à "copier feuille classeur"