Macro automatique - ouvir un classeur

Bonjour à tous,

Je ne suis un petit utilisateur d'Excel et j'essaye, partant d'un classeur et avec une "macro automatique" (je suis bien incapable d'en créer une ....) d'ouvrir un autre classeur qui est sur le bureau et d'en copier une feuille puis de la coller dans le premier classeur. J'ai donc essayé avec la fonction macro automatique en le faisant "pas à pas" mais cela ne marche pas.

Est ce possible ?

Merci par avance de votre réponse.

Bonjour,

Pour ouvrir un classeur situé dans ton ordi, en voici le code en VBA

Workbooks.Open "C:\Dossier\Fichier Exemple 1.xlsx"

et pour copier la feuille 1 de ce fichier dans ton fichier 2 après la troisième feuille

WorkBook("fichier1.xls").Worksheets("Feuil1").Copy After:=WorkBook("fichier2.xls").Worksheets("Feuil3")

Merci beaucoup.

Après beaucoup de tâtonnements .... pour aller ouvrir le fichier sur le bureau j'ai écrit : Workbooks.Open "C:\users\XXX\desktop\fichier 2.xlsx" et ça fonctionne

Mais quand j'adapte et utilise ta deuxième ligne j'ai un message "erreur de compilation sub ou function non définie et "wordbook" dans

Copy After:=WorkBook est surligné.

bien sûr, il faut que mes deux lignes de code soient concordantes dans leur ensemble comme ceci

    Workbooks.Open ("C:\Dossier\monpremierfichier.xls")  ' inscrire le chemin complet
    Workbooks.Open (":\Dossier\mondeuxièmefichier.xls")  ' idem
    Workbooks("monpremierfichier.xls").Sheets("ma feuille").Copy After:=Workbooks("mondeuxièmefichier.xls").Worksheets("Feuil1")

Bonjour et merci cela fonctionne.... j'ai appris beaucoup de choses !

Problème annexe.... pour accéder au fichier je dois donner le chemin "C:\users\XXX\desktop\fichier 2.xlsx et il y a donc mon nom d'utilisateur.

Est-il possible de communiquer le classeur comportant la macro à une autre personne pour qu'elle l'utilise sur son propre PC et si oui comment faut-il rédiger le chemin ?

Merci

Re,

Est-il possible de communiquer le classeur comportant la macro à une autre personne pour qu'elle l'utilise sur son propre PC et si oui comment faut-il rédiger le chemin ?

Bien sûr, mais il faudra que la nouvelle personne réécrive son propre chemin une fois le fichier enregistré sur son ordi
Exemple

"C:\users\Tartempion\desktop\fichier 2.xlsx

Mais je me demande si j'ai bien compris ta question

Moi je pense que je n'ai pas assez précisé ma question.... Il faudrait que la (ou les...) personnes à qui je donne le classeur avec macro n'aient pas à intervenir dans la macro... Donc y-a-il une autre manière d'indiquer le chemin ? Autre que C:\users\Tartempion\desktop\fichier 2.xlsx ?

Bonjour,

Si je comprends bien, tu veux donner ton fichier à une autre personne. cette dernière pour l'utiliser devra charger des fichiers comme toi tu le fais. Ces fichiers seront donc sur son ordi sinon je ne vois pas comment elle pourrait faire
Ainsi elle devra obligatoirement faire appel au chemin que je t'ai donné.
Ou alors je ne comprends pas du tout ce que tu désires que cette personne fasse
Bonne journée

Bonjour,

Si j'ai bien compris, pour compléter la proposition de @Jacky. Vous pouvez ajouter dans le classeur une cellule contenant le chemin d'accès vers le/les fichier(s) à traiter. Ensuite on peut lire cette cellule en VBA pour ouvrir le classeur correspondant.

Ci-joint un mini-exemple avec une macro qui permet de rentrer automatiquement ce chemin d'accès dans la cellule.

Tu as bien compris.

J'ai un fichier "A" qui contient la macro et qui doit traiter les données issues d'un fichier "B".

Chaque intervenant peut charger sur son PC le fichier "B" qui est un "export" d'un logiciel externe que chacun utilise.

Mon but est donc de donner à chacun le fichier "A" pour lui permettre de récupérer et traiter les données de son "B". Mais chacun est bien incapable d'aller modifier le chemin de la macro.

Là je pense que je suis plus clair....

Merci et bonne journée.

Non non, tu étais clair mais c'est moi qui me posais trop de questions.

Donc comme je te le disais il faudra que l'utilisateur utilise un chemin pour accéder aux autres fichiers et comme le dit très bien Saboh, l'iidéal est de mettre ce chemin dans une cellule du fichier que tu donnes.
Regardes de plus pres la réponse de Saboh

@Saboh, bien le bonjour et une fois de plus toujours là pour parfaire mes propositions, c'est merveiilleux. Bonne journée

Bonjour à tous,

On pourrait aussi faire en sorte que la macro affiche une fenêtre pour choisir le fichier à traiter (fenêtre de type "Ouvrir ...")

Dans ce cas, le classeur peut se trouver n'importe où. C'est l'utilisateur qui le désigne quand la macro le lui demande.

le code à tester :

Sub ChoixClasseur()
   Dim NomClasseur As Variant
   NomClasseur = Application.GetOpenFilename("Fichier Excel (*.xl*), *.xl*")
   If NomClasseur = False Then MsgBox "Aucun classeur n'a été choisi", vbCritical: Exit Sub
   If Not LCase(Dir(NomClasseur)) Like "*.xl*" Then MsgBox "Le classeur ne semble pas être un classeur Excel", vbCritical: Exit Sub
   Workbooks.Open NomClasseur
End Sub

Bonjour MaFraise,

Mais le problème est toujours le même : il faut obligatoirement que l'utiilisateur précise le chemin à utiiliser pour accéder au fichier
C'ets bien ce que tu dis :

Dans ce cas, le classeur peut se trouver n'importe où. C'est l'utilisateur qui le désigne quand la macro le lui demande.

@+ et bonne journée

Salut à tous,

@Jacky content d'aider . Je pense que ce que @mafraise voulait dire c'est que (en reprenant mon exemple) en réalité il n'y a pas nécessairement besoin d'inscrire le chemin d'accès dans une cellule. On peut le récupérer (si tu regardes le code, c'est à cette ligne UIsheet.Range("file_path").Value2 = .SelectedItems(1)) et directement lancer la macro en suivant.

J'ai ajouté une étape intermédiaire d'écriture dans le classeur car personnellement j'aime bien avoir un "retour" pour vérifier que le chemin a bien été récupéré (et puis si je veux relancer la macro il est déjà là), mais c'est tout à fait optionnel. Un autre avantage à écrire dans le classeur est qu'on peut aussi le faire à la main, ou via une formule. Un désavantage est qu'on doit vérifier que le chemin est valide avant de continuer, car de fait s'il est modifiable à la main, c'est sujet à erreur.

Bonjour Jacky et à saboh12617 aussi,

jacky a écrit de sa plus belle plume :

Mais le problème est toujours le même : il faut obligatoirement que l'utilisateur précise le chemin à utiliser pour accéder au fichier

Le problème est tout à fait différent.

Dans un cas tout est figé. Il faut que l'utilisateur indique quelque part où est le classeur à traiter. il faut qu'il note son chemin et qu'il le mette au minimum dans une cellule.

Ou bien il choisit le classeur par son emplacement et son nom. Et ça l'utilisateur sait le faire puisqu'il a déjà ouvert le classeur avec la macro.

On se prémuni du changement d'emplacement du classeur, de son renommage. Un utilisateur, ça ose tout et même ce que à quoi on n'a jamais osé penser soi-même (et je parle par expérience) !

D'autre part personnellement, je ne mets jamais de fichier de données sur le bureau, ce n'est pas leur place (selon moi). Sur mon bureau, il n'a a que des raccourcis ou des liens web (d'ailleurs beaucoup trop, je le reconnais).

@Saboh,

En vérité je n'avais pas bien capté cette partie de ton code

    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Filters.Add "Fichiers Excel", "*.xlsx; *.xlsb; *.xlsm", 1
        If .Show <> 0 Then
            UIsheet.Range("file_path").Value2 = .SelectedItems(1)
        End If
    End With

mais en approfondissant ma recherche sur ce bout de code, je pige ce que tu viens de m'expliquer
Comme toujours, il ne faut pas être trop rapide dans la lecture d'une réponse et surtout d'une aide
@+

Re,

Ma p'tite version :

Merci à tous, grâce à vous je vais pouvoir y arriver !

Merci de m'avoir consacrer votre temps.
Bien cordialement.

Rechercher des sujets similaires à "macro automatique ouvir classeur"