Bonjour,
J'expose mon projet avant d'exposer le soucis. Je cherche à alimenter une base de donnée mysql à partir d'un fichier excel (on appellera ce fichier le fichier A). Pour cela j'ai choisi d'utiliser un fichier excel intermédiaire (on appellera ce fichier B). Donc dans un premier temps je voudrais faire une copie de A dans B. Une fois copié je voudrais supprimer certaines colonnes qui ne m'interessent pas dans B.Ensuite le fichier B sera enregistré au format CSV pour finalement être importé dans ma BDD mysql.
1ère question : Est-ce que tout ça vous semble réalisable par macro excel ?
Voila les quelques lignes de code que j'ai pour le moment :
Le soucis c'est que lorsque j'arrive à la ligne xlBook.save le message d'erreur suivant apparait "Erreur d’exécution '-2147417848(80010108)': Erreur Automation. L'objet invoqué s'est déconnecté de ses clients." Puis quelques secondes plus tard une fenêtre d'avertissement apparait sur le fichier B avec le message : "Mon Classeur.csv est à présent disponible pour modification. Ouvrez le fichier en lecture-écriture pour le modifier" et deux options me sont proposées: Lecture-écriture ou Annuler.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 Private Sub CommandButton1_Click() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim classeur As Workbook 'On créer l'objet Excel Set xlApp = CreateObject("Excel.Application") 'On défini le nombre d'onglets xlApp.SheetsInNewWorkbook = 1 'On ajoute un classeur Set xlBook = xlApp.Workbooks.Add 'On rend le classeur visible xlApp.Visible = True 'On créer l'objet onglet dans le nouveau classeur créé Set xlSheet = xlBook.Worksheets(1) 'On affecte un nom aux l'onglets xlSheet.Name = "test" 'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc Set xlSheet = Nothing 'On remet la propriété de l'application à 3 (par défaut) xlApp.SheetsInNewWorkbook = 3 'Sauvegarde au format csv xlBook.SaveAs ("L:/Mon Classeur.csv") 'On ferme l'application xlApp.Quit 'On re-ouvre le nouveau classeur Set classeur = Workbooks.Open("L:\Mon Classeur.csv") 'On copie dans le nouveau classeur ThisWorkbook.Sheets(1).Copy After:=classeur.Sheets(classeur.Sheets.Count) 'Sauvegarde xlBook.save 'xlBook.SaveAs ("L:/Mon Classeur.csv") 'On ferme l'application xlApp.Quit End Sub
Je ne vois pas bien tout ce que cela peut vouloir dire...
Merci d'avance pour votre aide éventuelle.
Partager