Bonjour à tous,
je travaille en ce moment sur une macro et je fais face à quelques difficultés. Le but de ma macro est d'automatiser un ensemble de tâche qui vise à donner des résultats sous forme de tableaux croisés dynamiques à des non-initiés d'Excel, je dois donc tenter de faire au plus simple. Pour ce faire, j'utilise des macro. Je pars d'un classeur qu'on va nommé A.xlsx (nom fixe) et j'importe une base de données au choix, avec ce code
Ce code n'est peut-être pas parfait (je débute en VBA et je suis prêt à recevoir des astuces si vous en avez) mais il est fonctionnel.
Maintenant cela fonctionne mais je dois aussi importer une base qui n'est pas standardisée et c'est là que se présente mon problème, j'utilise une syntaxe quasiment similaire
Cependant je fais peut-être une erreur bête mais le bouton ne fonctionne pas du tout, je n'ai pas d'erreur mais je n'ai même pas l'explorateur de fichier qui s'ouvre.
En clair je cherche à faire, dans l'ordre :
Ouverture de mon classeur A (qui dispose des macro), import d'une feuille d'un autre classeur dans une nouvelle feuille avec le premier code, puis importation dans une feuille (dans A) déjà créée cette fois, d'une partie d'une feuille d'un classeur B (qui lui a un nom variable).
C'est un peu flou mais c'est de cette manière que j'en ferai une première approche, si vous avez besoin de plus de précisions, n'hésitez pas.
Merci d'avance !
je travaille en ce moment sur une macro et je fais face à quelques difficultés. Le but de ma macro est d'automatiser un ensemble de tâche qui vise à donner des résultats sous forme de tableaux croisés dynamiques à des non-initiés d'Excel, je dois donc tenter de faire au plus simple. Pour ce faire, j'utilise des macro. Je pars d'un classeur qu'on va nommé A.xlsx (nom fixe) et j'importe une base de données au choix, avec ce code
Code:
Sub CommandButton1_Click() ' RECHERCHE DU CLASSEUR SOURCE
Dim Classeur_choisi As Long
Static Classeur_choisi_bis As String
Select Case UserForm1.CommandButton1.Caption
Case "Copier la requête"
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Show
For Classeur_choisi = 1 To .SelectedItems.Count
Workbooks.Open (.SelectedItems(Classeur_choisi))
Next Classeur_choisi
End With
Classeur_choisi_bis = ActiveWorkbook.Name
ActiveWorkbook.Saved = True ' Pour éviter le message de re-calcul des formules d'une version antérieure.
UserForm1.CommandButton1.Caption = "Copier cette Feuille"
' ICI ON PEUT CHOISIR LA FEUILLE A COPIER
Case "Copier cette Feuille"
ActiveWorkbook.ActiveSheet.Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
Windows(Classeur_choisi_bis).Activate
Application.DisplayAlerts = False
ActiveWorkbook.Close
MsgBox ("Votre feuille est copiée dans le classeur !")
Unload UserForm1
Sheets("Macro et mode d'emploi").Select
Application.DisplayAlerts = True
ActiveWorkbook.Save
End Select
End Sub
Maintenant cela fonctionne mais je dois aussi importer une base qui n'est pas standardisée et c'est là que se présente mon problème, j'utilise une syntaxe quasiment similaire
Code:
Private Sub CommandButton2_Click()
Dim Classeur_choisi As Long
Static Classeur_choisi_bis As String
Select Case UserForm1.CommandButton2.Caption
Case "Copier la requête pour auto"
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = False
.Show
For Classeur_choisi = 1 To .SelectedItems.Count
Workbooks.Open (.SelectedItems(Classeur_choisi))
Next Classeur_choisi
End With
Classeur_choisi_bis = ActiveWorkbook.Name
n = Workbooks(Classeur_choisi_bis).Sheets("DP_NACRE_Synthèse").Range("A65536").End(xlUp).Row
ActiveWorkbook.Saved = True ' Pour éviter le message de re-calcul des formules d'une version antérieure.
UserForm1.CommandButton1.Caption = "Copier cette Feuille"
' ICI L'ON PEUT CHOISIR LA FEUILLE A COPIER
Case "Copier cette Feuille"
ActiveWorkbook.ActiveSheet.Range("A24" & ":AF" & n).Copy after:=ThisWorkbook.Sheets("Autos").Range("A6")
Windows(Classeur_choisi_bis).Activate
Application.DisplayAlerts = False
ActiveWorkbook.Close
'MsgBox ("Votre feuille est copiée dans le classeur !")
Unload UserForm1
Sheets("Macro et mode d'emploi").Select
Application.DisplayAlerts = True
ActiveWorkbook.Save
End Select
End Sub
Cependant je fais peut-être une erreur bête mais le bouton ne fonctionne pas du tout, je n'ai pas d'erreur mais je n'ai même pas l'explorateur de fichier qui s'ouvre.
En clair je cherche à faire, dans l'ordre :
Ouverture de mon classeur A (qui dispose des macro), import d'une feuille d'un autre classeur dans une nouvelle feuille avec le premier code, puis importation dans une feuille (dans A) déjà créée cette fois, d'une partie d'une feuille d'un classeur B (qui lui a un nom variable).
C'est un peu flou mais c'est de cette manière que j'en ferai une première approche, si vous avez besoin de plus de précisions, n'hésitez pas.
Merci d'avance !