Bonjour à tous !
Voila, je chercher à l'aide d'une macro à pouvoir ouvrir un classeur excel de mon choix, copier l'onglet dénomé "owssvr (1)" (le nom du classeur peut changer, le nom de l'onglet ne le peut pas) et le coller dans la 1ère feuille de l'excel qui exécute la macro (pour ensuite pouvoir appliquer les autres macros, mais ça me semble plus aisé).
Donc j'ai essayé par différentes approches, mais je débute totalement le VBA et je nage un peu^^
Je suis arrivé au résultat suivant :
Mais bon, c'est un bidouillage entre une macro enregistré et ce que j'ai pu glaner me permettant d'aller au résultat voulu. Mais j'arrive à un message d'erreur 5 (argument ou appel de procédure incorrect) et je ne sais pas d'où ça vient :s
En effectuant mes recherches je suis tombé sur un autre code, que j'ai essayé d'adapter à mon cas, mais j'ai une erreur 1004 cet fois ci ...
Réussir cet macro est un peu la base de ce que je souhaite développer et bien entendu, si elle marche pas, je ne peux pas avancer ^^ Ca fait quelques jours que je rumine dessus mais je commence à me perdre dans le peu que j'ai pu apprendre.
Quelqu'un pourrait me donner un coup de main ?
Voila, je chercher à l'aide d'une macro à pouvoir ouvrir un classeur excel de mon choix, copier l'onglet dénomé "owssvr (1)" (le nom du classeur peut changer, le nom de l'onglet ne le peut pas) et le coller dans la 1ère feuille de l'excel qui exécute la macro (pour ensuite pouvoir appliquer les autres macros, mais ça me semble plus aisé).
Donc j'ai essayé par différentes approches, mais je débute totalement le VBA et je nage un peu^^
Je suis arrivé au résultat suivant :
Code:
Private Sub CommandButton2_Click()
Dime fileToOpen As Variant
fileToOpen = Application.GetOpenFilename("(*.xls),*.xls")
Workbooks.OpenText Filename:=fileToOpen
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=fileToOpen;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Databa" _
, _
"se Password="""";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global B" _
, _
"ulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Je" _
, _
"t OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
), Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("fileToOpen")
.Name = fileToOpen
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = fileToOpen
.Refresh BackgroundQuery:=False
End With
End Sub
Mais bon, c'est un bidouillage entre une macro enregistré et ce que j'ai pu glaner me permettant d'aller au résultat voulu. Mais j'arrive à un message d'erreur 5 (argument ou appel de procédure incorrect) et je ne sais pas d'où ça vient :s
En effectuant mes recherches je suis tombé sur un autre code, que j'ai essayé d'adapter à mon cas, mais j'ai une erreur 1004 cet fois ci ...
Code:
Private Sub CommandButton4_Click()
Dim a As Variant, Nom As String
Nom = ActiveWorkbook.Name
ChDrive "D:" ' Choix du lecteur
ChDir "D:\" 'Choix du répertoire
a = Application.GetOpenFilename("fichier excel (*.xls), *.xls", _
, "Sélection de vos fichiers excel", , True)
Select Case TypeName(a)
Case Is = "Boolean"
Exit Sub
Case Else
For b = LBound(a) To UBound(a)
Workbooks.Open a(b)
Next
End Select
Nom2 = ActiveWorkbook.Name
Cells.Select
Selection.Copy
Windows(Nom).Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows(Nom2).Close
End Sub
Réussir cet macro est un peu la base de ce que je souhaite développer et bien entendu, si elle marche pas, je ne peux pas avancer ^^ Ca fait quelques jours que je rumine dessus mais je commence à me perdre dans le peu que j'ai pu apprendre.
Quelqu'un pourrait me donner un coup de main ?