Executer une macro à partir d'un fichier X

Fermé
damdam38 - 22 juil. 2011 à 14:13
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 22 juil. 2011 à 15:41
Bonjour,

Je suis en train de faire une macro excel (2007). J'ai fait un bouton qui execute la fonction Ouvrir... .
Mon but c'est d'abord de pouvoir choisir un fichier excel dans un dossier X à l'aide de ce bouton et ensuite de pouvoir copier les données de ce fichier. Alors voila mon code


Private Sub CommandButton1_Click()
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Show
UserForm1.TextBox1.Text = .SelectedItems(1)
End With
End Sub


Sub macro1()
'
' macro1 Macro
'

'
Range("A1").Select
Workbooks.Open Filename:="C:\Users\XXX\Desktop\export.xls"
Range("A3:A10").Select
Selection.Copy
Windows("macro1.xlsm").Activate

Je pense que ce qui manque est le code qui indique qu'il faut executer le fichier que j'avais chouisi au début. Des idées?
Merci
A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
22 juil. 2011 à 14:28
Bonjour,
La ligne à modifier est :
Workbooks.Open Filename:="C:\Users\XXX\Desktop\export.xls"

à remplacer par :
'sort de la procédure si le textbox1 est vide... On ne sait jamais! ;-)
If UserForm1.TextBox1.Text = "" Then Exit Sub
Workbooks.Open Filename:= TextBox1.Text

Bon j'avoue ne pas avoir testé et me tromper souvent en ce moment... Alors revenez après tests...
0
ca me fait erreur d'execution 424
objet requis
Voila le code

Private Sub CommandButton1_Click()
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Show
UserForm1.TextBox1.Text = .SelectedItems(1)
End With
End Sub


Sub remplirbdd()
'
' remplirbdd Macro
'

'
Range("A1").Select
If UserForm1.TextBox1.Text = "xx" Then Exit Sub
Workbooks.Open Filename:=TextBox1.Text

Range("A3:A10").Select
Selection.Copy
Windows("macrobdd.xlsm").Activate
Range("B2").Select
ActiveSheet.Paste
Windows("TextBox1.Text").Activate
Range("B3:C10").Select
Application.CutCopyMode = False
Selection.Copy
Application.CutCopyMode = False
Selection.Copy
Windows("macrobdd.xlsm").Activate
Range("C2").Select
ActiveSheet.Paste
Windows("TextBox1.Text").Activate

etc et ca met en jaune la ligne UserForm1.TextBox1.Text = .SelectedItems(1)
End With
quand je fais Débogage
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 757
Modifié par pijaku le 22/07/2011 à 15:42
Pourquoi ne pas placer tout ton code, et donc réaliser toute la procédure, dans ton bouton?
Ca peux donner quelque chose comme :
Private Sub CommandButton1_Click()  
With Application.FileDialog(msoFileDialogOpen)  
    .AllowMultiSelect = False  
    .Show  
    UserForm1.TextBox1.Text = .SelectedItems(1)  
End With 
'Dans la ligne suivante, tu as ajouté "xx" au lieu de ""... Je ne comprends pas. 
If UserForm1.TextBox1.Text = "xx" Then Exit Sub 
Workbooks.Open Filename:=TextBox1.Text 
'dans la ligne suivante A ADAPTER : Feuil1 à remplacer par le nom de la feuille accueillant les données............... 
Range("A3:C10").Copy Workbooks("macrobdd.xlsm").Worksheets("Feuil1").Range("B2") 
'le copier-coller en une ligne de code, pratique non???
End Sub
0