• Initiateur de la discussion Initiateur de la discussion AndrewB
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

AndrewB

Guest
Bonjour à tous 🙂
Etant très mauvais en programmation, j'aimerais savoir si vous connaitriez un code VBA qui me permettrais d'importer dans dans les colonnes A et B de mon fichier Excel X, les colonnes A et E d'un autre fichier Y.
La macro demanderait à l'utilisateur le nom du fichier ainsi que de l'onglet du fichier Y, où se trouve les colonnes A et E à importer...

Vous êtes mon seul espoir ^^
Je vous remercie d'avance
 
Re : simple macro

Bonjour AndrewB, bonjour le forum,

En pièce jointe un exemple avec un bouton, une UserForm et une macro. Si tu recopies, pense à recopier tous le code dans les différents composant : Module1, Feuil1(Feuil1) et UserForm1...
• Le code du bouton, composant : Feuil1(Feuil1)
Code:
Private Sub CommandButton1_Click() 'bouton "Import"
ActiveCell.Select 'enlève le focus au bouton
Module1.Macro1 'lance la procédure "Macro1" du module "Module1"
End Sub
• le code de la macro, composant : Module1
Code:
Option Explicit 'oblige à déclarer toutes les variables
Public cs As Workbook 'déclare la variable cs (Classeur Source)
Public os As Object 'déclare la variable os (Onglet Source)

Sub Macro1()
Dim cc As Workbook 'déclare la variable cc (Classeur Cible)

Set cc = ThisWorkbook 'définit le classeur cible
cc.Sheets("Feuil1").Range("A1:B1").EntireColumn.Clear 'efface les anciennes données
Application.Dialogs(xlDialogOpen).Show 'oure la boite de dialogue "Ouvrir"
If ActiveWorkbook.Name = ThisWorkbook.Name Then 'condition : si le nom du classeur actif est le même que le nom de ce classeur
    MsgBox "Vous devez ouvrie le classeur source !" 'message
    Exit Sub 'sort de la procédure
End If 'fin de la condition
Set cs = ActiveWorkbook 'définit le classeur source
cc.Activate 'active le classeur cible
UserForm1.Show 'affiche l'UserForm1
os.Columns(1).Copy cc.Sheets("Feuil1").Range("A1") 'copie la colonne A source et la colle dans la colonne A cible
os.Columns(5).Copy cc.Sheets("Feuil1").Range("B1") 'copie la colonne E source et la colle dans la colonne B cible
cc.Sheets("Feuil1").Range("A1:B1").EntireColumn.AutoFit 'ajuste la largeur des colonnes
End Sub
• le code de l'UserForm1, Composant : UserForm1
Code:
Private Sub UserForm_Initialize() 'à l'initilisation de l'UserFOrm
Dim o As Object 'déclare la variable o (Onglet)

For Each o In cs.Sheets 'boucle sur tous les onglets du classeur
    Me.ListBox1.AddItem o.Name 'ajoute le nom de l'onglet à la ListBox1
Next o 'prochain onglet de la boucle
End Sub


Private Sub ListBox1_Click() 'au clic dans la ListBox1
Set os = cs.Sheets(Me.ListBox1.Value) 'séfinit l'onglet source os
Unload Me 'vide et ferme l'Userform
End Sub
Le fichier :

[Édition]
Bonjour Fhoest on s'est croisé...
 

Pièces jointes

Re : simple macro

J'ai recopié les différent programmes dans les différents composants, cependant lors du choix du nom de l'onglet le programme bug.
Il me dit :

Erreur de compilation:

Membre de méthode ou de données introuvable
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
265
Réponses
5
Affichages
292
Retour