Executer une macro à partir d'un fichier X

damdam38 -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

2 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. damdam38
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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