Académique Documents
Professionnel Documents
Culture Documents
Macros, prsentation
Excel intgre dornavant un langage de programmation, VBA, qui permet de raliser des applications puissantes et conviviales, allant bien au-del ce que quvoque le terme de macro (cf. lhistorique ci-dessous). Malheureusement, parmi les utilisateurs dExcel, presque personne nen est conscient.
Historique
Une macro est un terme gnrique pour dsigner un moyen de mmoriser un enchanement de tches au sein dun logiciel. Il est ensuite possible dutiliser la macro lexpression standard est lancer la macro pour rpter le mme enchanement. Plusieurs mthodes peuvent tre employes pour lancer une macro :
On peut associer un raccourci clavier la macro. Lapplication peut comporter une commande provoquant laffichage de la liste des macros disponibles. Il suffit alors de choisir celle que lon veut lancer et de valider. Il est parfois possible galement dafficher un bouton, ventuellement situ dans une barre doutils. Un simple clic sur le bouton provoque lexcution de la macro.
Dans la majorit des cas, les macros ne permettent de raliser que des choses trs simples, par exemple la mise en page dun document (orientation et marges) dans un traitement de texte. Les macros sont alors des programmes automatiques. Dans ce contexte, il est parfois possible daccder au code de la macro, cest--dire au programme, pour modifier tel ou tel paramtre. Cette option amliore les choses, mais les possibilits restent cependant limites. En tant quoutil de programmation, ces macros manquaient la fois de souplesse et de puissance . Cest pourquoi les informaticiens les ont toujours considres avec condescendance. Ce type de macros a tout de mme rendu service a un certain nombre d'utilisateurs, grce au temps gagn.
Macros et tableurs
Lotus 1,2,3 a probablement t le premier tableur comportant des macros. Celles-ci taient relativement puissantes, mais leur lecture difficile, car chaque instruction tait un code de 3 ou 4 lettres, ventuellement complt de paramtres. Jai eu loccasion de voir des macros ralises avec Lotus, mais je nen ai jamais utilise ni a fortiori crite. Toutefois, je pense que leur syntaxe et lemploi de code abscons devaient limiter leur usage et leur maintenance. Excel est sorti en 1985. La premire version tournait sur Mac exclusivement, ncessitait 512 Ko et tenait sur une disquette. Mais, merveille, il y avait un langage macro relativement puissant et lisible. On tait encore loin dun langage de programmation classique : il manquait en particulier la possibilit de crer des menus et des zones de dialogue, et les structures classiques de boucles.
Malgr ces limitations, loutil tait suffisamment puissant pour que jai pu crer et commercialiser en 1987, toujours avec la version 1.0 dExcel, une application commerciale, Mac Bilan, qui compltait les logiciels de compta ( lpoque Maestria et Gestion Simil). Mac Bilan permettait partir dune balance (la liste des comptes dune entreprise avec leurs soldes) dtablir le bilan, le compte de rsultat et le dtail des postes. En outre, un certain nombre de contrles comptables taient effectus, et il tait possible de saisir des critures complmentaires prendre en compte pour le bilan. Le tout avec Excel 1.0 !
Qu'est-ce qu'une macro ? quoi cela peut-il servir ? Je pourrais m'attarder longuement sur la dfinition exacte des macros. Pour cela, nous avons divers sites comme www.gaboly.com. Je me contenterai, ici, de rpondre aux seules questions qui sont poses ci-dessus.
La macro complmentaire, dans Excel, est un code crit en VBA. Elle sert excuter automatiquement une tche dans Excel.
Les macros sont souvent utilises pour des actions rptitives et longues faire. Pour que vous ayez une bonne ide des possibilits offertes, je vais vous faire faire un petit
TP. Je vous fournis donc le fichier de base et nous travaillerons dessus. Rcuprez ce fichier : comptes.xls Afin de colorer un peu plus le code, j'ai utilis les balises-codes du VB.NET et non celles du VBA, qui sont inexistantes. Je prcise bien que le VB.NET n'a rien voir avec le VBA.
Sommaire du tutoriel :
L'criture d'une macro L'assistant cration de macros Lier une macro un objet Quelques exemples de macros
<p style="margin: 0;"> <a href="http://www4.smartadserver.com/call/pubjumpi/24617/166249/10602/S/1357597031021 /?"> <img src="http://www4.smartadserver.com/call/pubi/24617/166249/10602/S/1357597031021/?" alt="" /> </a> </p> Retour en haut
On va commencer par crer une macro qui nous permet de calculer la somme des dpenses. Pour cela, ouvrez le fichier que vous avez tlcharg.
Pour crer notre premire macro, vous devez cliquer sur le menu Outils puis Macros. Une petite fentre apparat avec toutes les macros du classeur. Bien sr, celui-ci tant vierge, vous n'en voyez pas. Dans le champ nom de la macro , mettez somme_depenses . Il faut viter tous les caractres spciaux, ils sont cause de problmes. Donc, pas d'espaces, pas d'accents, pas de + - / * , etc.
La nouvelle fentre qui apparat nous permet donc de taper notre code en Visual Basic.
La macro commence toujours par Sub nom de la macro() et se termine toujours par End Sub. Dans notre cas, nous avons : Code : VB.NET - Slectionner
1 Sub somme_depenses() 2 3 End Sub
Nous allons pouvoir commencer taper notre code. Nous devons donc dfinir la cellule o la somme des dpenses s'affichera. Il s'agit de la case C21. Celle-ci est fusionne avec la C22. Voici comment lui dire que nous slectionnons la cellule C21 (qui contient aussi la cellule C22) : Code : VB.NET - Slectionner
1 Range("C21:C22").Select
Il nous faut ensuite lui faire calculer la somme des cellules C6 C20 dans la cellule active. L o a va faire rflchir, c'est le positionnement dans les formules. Code : VB.NET - Slectionner
1 ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)"
Humm, hummmm ? C'est l que a commence chauffer derrire les yeux et entre les oreilles. =Sum() reprsente la formule =Somme() qu'on peut facilement taper dans une cellule du tableau. R[-15]C:R[-1]C reprsente la zone de slection par rapport la cellule actuelle. Il faut remonter de 15 pour slectionner la cellule 6 et remonter de 1 pour slectionner la cellule 20 par rapport la cellule active (C21:C22). C'est en suivant cette logique que nous avons crit cette ligne. Les deux points dans la formule dfinissent la plage comprise entre les deux cellules.
Vous allez rire ! Cette macro permet d'crire =somme(C6:C20) dans la cellule C21:C22. Vous n'tes pas obligs de fermer l'diteur pour pouvoir revenir Excel, ALT + TAB est amplement suffisant. Pour l'excuter, vous retournez dans Excel et vous cliquez sur Outils Macro Macros, choisissez la macro puis cliquez sur Excuter. L, vous allez me dire que c'est se casser la tte pour pas grand-chose et je ne vous donne pas tort. Nous allons donc passer ensuite la mthode la plus simple pour crer une macro. Il fallait juste que vous sachiez ce qui se passe l'criture d'une macro avant de poursuivre ce tutoriel. Je vous donne quand mme un petit supplment cette macro.
Allez sur la cellule C21:C22 et supprimez son contenu. Excutez ensuite la macro et regardez ce qui a chang. J'espre que ce premier changement vous incite poursuivre ce tutoriel Retour en haut
C'est partir de l qu'Excel enregistre tout ce qu'on fait, il nous faut donc viter les clics superflux.
Slectionnez la cellule D28 ; appuyez sur la touche +=} pour faire le signe gal ; slectionnez la cellule G21 ; appuyez sur 6-| pour faire le signe moins ; slectionnez la cellule C21 ; validez avec la touche Entre ; slectionnez, nouveau, la cellule D28.
Si tout s'est bien pass, nous avons nos deux totaux de renseigns et la somme restante.
Allez voir l'diteur, Microsoft Visual Basic, qui contient nos deux macros. Vous pouvez remarquer une grande diffrence entre celles-ci. Code : VB.NET - Slectionner
1 2 3 4 5 6 7 8 9 10 11 12 13 Sub somme_depenses() Range("C21:C22").Select ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)" Range("G21:G22").Select ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)" End Sub Sub test() ' ' test Macro ' essai pour le SDZ
C'est dans des moments comme celui-ci qu'il est possible de simplifier la macro, et c'est ce que nous allons faire en fusionnant les deux prcdentes dans une seule et mme macro. Nous gardons donc la premire macro : Code : VB.NET - Slectionner
1 Sub somme_depenses() 2 3 Range("C21:C22").Select 4 ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)" 5 Range("G21:G22").Select 6 ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)" 7 8 End Sub
Nous allons l'arranger avec ce qu'on a dans la seconde. Nous devons garder la formule utilise. Code : VB.NET - Slectionner
1 ActiveCell.FormulaR1C1 = "=R[-7]C[3]-R[-7]C[-1]"
Mais juste avant celle-ci, nous allons donner la cellule cible. Code : VB.NET - Slectionner
1 Range("D28:E30").Select
2 3 4 5 6 7 8 9 10 End
Range("C21:C22").Select ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)" Range("G21:G22").Select ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)" Range("D28:E30").Select ActiveCell.FormulaR1C1 = "=R[-7]C[3]-R[-7]C[-1]" Sub
Supprimez tout le reste (l'autre macro). Il ne doit vous rester que celle-ci. Cette seule macro permet donc d'inscrire les 3 formules dans les trois cellules. 1 macro pour 3 rsultats en un seul coup. Je vous accorde que de poser une macro de ce genre n'est gure trs intressant, mais passer par l n'est certainement pas une mauvaise chose. Nous allons dsormais pouvoir poursuivre avec d'autres macros complmentaires et d'autres faons de les utiliser. Le nettoyage des cellules
Il n'y a pas de grosses questions se poser l-dessus, on va juste faire le vide dans toutes les cellules o se trouvent nos chiffres. Cliquez sur Outils Macro Nouvelle_macro et nommez celle-ci effacer . Cliquez sur OK.
Slectionnez les cellules de C6 C22 ; appuyez sur CTRL ou MAJ (selon la version d'Excel) pour ajouter une slection ; restez appuys et slectionnez les cellules de G6 G22 ; et la cellule D28 ; appuyer sur la touche Suppr de votre clavier.
Arrtez l'enregistrement de la macro. Retournez voir l'diteur. Ce dernier doit afficher : Code : VB.NET - Slectionner
1 Sub somme_depenses() 2 3 Range("C21:C22").Select 4 ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)" 5 Range("G21:G22").Select 6 ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)" 7 Range("D28:E30").Select 8 ActiveCell.FormulaR1C1 = "=R[-7]C[3]-R[-7]C[-1]" 9 10 End Sub
11 12 13 14 15 16 17 18 19 20 21
Sub effacer() ' ' effacer Macro ' essai pour le SDZ ' ' ActiveCell.Offset(-22, -1).Range("A1:A17,E1:E17,B23:C25").Select ActiveCell.Activate Selection.ClearContents End Sub
Oups ! Nous avons commis une erreur. Nous voulons juste effacer les rsultats et non la totalit, ce qui implique d'effacer juste C21, G21 et D28. Appuyez sur CTRL + Z pour annuler cette dernire opration.
Nous gardons donc l'activation de cellule et l'effacement. Nous ne devons modifier que la premire ligne qui ne cible pas les bonnes cellules. Mettons donc : Code : VB.NET - Slectionner
1 2 3 4 5 6 7 8 9 10 11 Sub effacer() ' ' effacer Macro ' essai pour le SDZ ' ' Range("C21,G21,D28").Select ActiveCell.Activate Selection.ClearContents End Sub
Et, au passage, on va enlever l'inutile. Ce qui nous donnera : Code : VB.NET - Slectionner
1 Sub effacer() 2 Range("C21,G21,D28").Select 3 ActiveCell.Activate 4 Selection.ClearContents 5 End Sub
Voil qui est bien mieux. Nous pouvons effacer simplement le contenu des trois cellules de rsultats l'aide de cette macro. Peut-on faire plus simple que d'aller cliquer sur Outils Macro Macros et de slectionner la macro supprimer puis de cliquer sur OK ?
Vous vous dites : je vais devoir supprimer les chiffres au moins 200 fois dans ma journe car je veux calculer le budget de chacun de mes clients et je dois avouer qu'un simple clic a m'aiderait bien . Je vais alors vous rpondre qu'on va arranger a. Ce n'est pas trs compliqu. Retour en haut
Un bouton Excel
Pour crer un bouton Excel, il nous faut la barre d'outils Bote outils Contrles.
Cliquez donc sur Affichage puis Barre d'outils et cochez Bote outils Contrles. Cliquez sur l'icne Bouton de commande.
Cliquez sur votre classeur, restez appuys sur le bouton droit de la souris et tracez un rectangle. Il sera votre bouton. Relchez quand la taille vous semble correcte. Vous pouvez modifier, par la suite, sa taille, la police, etc. Faites un clic droit sur le bouton et choisissez Objet Bouton de commande dition. Vous pouvez changer le nom du bouton. J'ai mis EFFACER . Un petit rappel de nos deux macros : Code : VB.NET - Slectionner
1 Sub somme_depenses() 2 3 Range("C21:C22").Select 4 ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)" 5 Range("G21:G22").Select 6 ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)" 7 Range("D28:E30").Select 8 ActiveCell.FormulaR1C1 = "=R[-7]C[3]-R[-7]C[-1]" 9 10 End Sub 11 12 Sub effacer() 13 14 Range("C21,G21,D28").Select 15 ActiveCell.Activate 16 Selection.ClearContents 17
18 End Sub
Faites un clic droit sur le bouton et choisissez Visualiser le code. Mettez-y le code de la macro effacer mais ne touchez pas aux lignes Sub. Ce qui donnera : Code : VB.NET - Slectionner
1 Private Sub CommandButton1_Click() 2 3 Range("C21,G21,D28").Select 4 ActiveCell.Activate 5 Selection.ClearContents 6 7 End Sub
Un simple clic sur le bouton suffira effacer le contenu des 3 cellules. Les boutons Excel sont assez pnibles embellir et grer. Il faut faire de multiples manipulations pour arriver un rsultat peu attrayant. Je vous conseille de n'utiliser cette mthode qu' titre d'exercice. Il vaut mieux l'oublier au plus vite.
La zone de texte
On peut utiliser une zone de texte aussi. L, c'est du simple et rapide. La barre d'outils dessin doit tre affiche. Si ce n'est pas le cas, cliquez sur Affichage Barre d'outils Dessin. Cliquez ensuite sur l'icne Zone de texte
et crez un rectangle comme pour le bouton Excel. Je vous laisse grer votre zone de texte comme vous le voulez (clic droit sur le bord puis Format de la zone de texte). Vous pouvez modifier la couleur du fond, la taille du bord, Une fois que vous avez fait cela, vous faites un clic droit sur le bord et vous cliquez sur Affecter une macro. Choisissez la macro effacer et validez ce choix. Cliquez en dehors de votre zone de texte pour que la macro ne soit plus slectionne. Maintenant, si vous cliquez dessus, la macro sera excute. Une image
Rcuprez celle-ci l'aide d'un clic droit et choisissez Enregistrer l'image sous . Cliquez ensuite sur le menu Insertion Image partir du fichier et slectionnez celleci. Ajustez-la si besoin est. Faites ensuite un clic droit dessus et choisissez Affecter une macro. Slectionnez la macro effacer comme prcdemment. Vous pouvez essayer de vous-mmes d'affecter la macro somme_depenses ce bouton.
Si vous vous dbrouillez bien avec un logiciel de dessin ou de retouche photos, vous pourrez vous faire de beaux boutons. Affecter une macro une image, un bouton ou une zone de texte peut permettre de naviguer entre plusieurs feuilles par de simples clics. On peut, par exemple, faire une page de garde pour un fichier assez volumineux et naviguer partir de l entre les onglets du classeur. Et si on le faisait ?
On peut par exemple aller voir les graphiques lis aux tableaux.
Pour cela, cliquez sur le menu Outils Macro Nouvelle Macro. Nommez celle-ci Graphs. Cliquez ensuite sur l'onglet Feuil2 en bas d'Excel, gauche.
Arrtez l'enregistrement. Cliquez maintenant sur le menu Outils Macro Nouvelle Macro et nommez cette dernire Accueil. Cliquez sur l'onglet Feuil1 et arrtez l'enregistrement.
Affectez-lui la macro Graphs. Cliquez ensuite dessus et sur le bouton que j'ai dj plac, et affectez-lui la macro Accueil.
Sur la premire page, vous devez avoir 2 boutons ( Effacer et Graphs ) et sur la feuille 2, vous devez avoir 1 bouton retour permettant de revenir trs vite au premier onglet. Retour en haut
Retour en haut Ce ne sont pas les possibilits qui manquent. Il faut juste arriver comprendre le VBA et arriver ajuster les macros le plus simplement possible. Croyez-moi, quand on a une centaine de macros, on cherche les rduire au maximum.
Les macros ne doivent tre cres que pour excuter des actions rptitives et pnibles. Ne chargez pas trop vos fichiers avec des tonnes d'images, ils ont tendance devenir trs gros aprs.
J'espre que ce tuto aura aid les plus novices d'entre vous comprendre comment se prsente une macro complmentaire, quoi elle peut servir. Ce tutoriel n'est qu'une approche des macros. Si vous voulez poursuivre aprs a, je ne peux que vous suggrer de vous orienter sur des sites spcialiss en Visual Basic et dans Excel.
Web
Livre
eBook
Par
Desolation
Vous possdez un grand nombre de donnes contenues sur des supports tels que des fichiers issus dAccess ou dExcel et souhaitez les insrer dans une base de donnes MySQL sans avoir tout recopier ? Vous tes sur la bonne page !
Ce tutoriel a pour vocation daider un maximum de personnes qui rencontrent cette difficult. Ayant moi-mme t confront cette situation, jai pour vous plusieurs solutions : 1. avec un pilote ODBC, la plus complexe ; 2. avec le format CSV, la plus rapide.
Afin de mener bien nos manipulations, vous devez disposer dun certain nombre dlments :
un fichier source *.xls de test (tlcharger), que je vous fournis (il a t fait sous Excel 2010 mais enregistr pour une compatibilit Excel 2003 notez que vous avez tout de mme la possibilit, si vous tes utilisateur de la version 2003, de lire des fichiers issus des versions 2007 et suprieures en tlchargeant un petit utilitaire fourni par Microsoft) ; la suite Microsoft Office (2003 ou suprieure), principalement Access et Excel : jutiliserai la version 2010 ; la plateforme WAMP (ou similaire), que nous emploierons seulement pour le moteur MySQL : jutiliserai WAMP Server 2.2 avec MySQL 5.5.16.
Maintenant que vous avez tous les outils ncessaires, concentrons-nous sur la mise en uvre. Retour en haut Sommaire du tutoriel :
Solution n 1 : avec un pilote ODBC Rsolution du problme Solution n 2 : avec le format CSV
<p style="margin: 0;"> <a href="http://www4.smartadserver.com/call/pubjumpi/24617/166249/10602/S/1357597629050/?"> <img src="http://www4.smartadserver.com/call/pubi/24617/166249/10602/S/1357597629050/?" alt="" /> </a> </p> Retour en haut
Pour cette solution, il est ncessaire de passer par ces quelques tapes de prparation : 1. 2. 3. 4. analyser la structure du fichier ; mettre en place la base de donnes et la table qui recevra les donnes du ct de MySQL ; installer le pilote ODBC pour faire communiquer Access et MySQL ; crer la source de donnes.
Nous allons ici ouvrir le fichier qui contient les donnes, et ainsi prendre connaissance du nombre de champs (colonnes) et des types de valeurs que nous souhaiterions obtenir en sortie. Regardons notre exemple, frachement tlcharg et ouvert :
Dans la colonne A, nous avons des nombres (certes, pas stocks sous un type numrique dans notre champ, mais ce nest pas un problme) et, en colonne B, des prnoms. Cette situation est plus que classique : on peut dduire qu un identifiant unique correspond un prnom (certes, lui, pas forcment unique).
Nous avons donc deux champs. Le premier se nommera id et sera de type INT, le second se nommera prenom et sera de type VARCHAR(50). Voici le code SQL permettant de crer la base de donnes tuto et dajouter la table personnes contenant les deux champs cits prcdemment. Code : SQL - Slectionner
1 2 3 4 5 6 7 8 CREATE DATABASE tuto; USE tuto; CREATE TABLE personnes ( id int(11) NOT NULL AUTO_INCREMENT, prenom varchar(50) NOT NULL, PRIMARY KEY (id) );
Notre objectif est maintenant dinsrer nos donnes dans cette table !
Installation du pilote
Pour cette solution, vous devez installer un pilote ODBC pour MySQL. Tlchargez la version 32 bits ou 64 bits (cliquez sur No thanks, just take me to the downloads! si vous ne souhaitez pas crer de compte) selon votre configuration Windows et installez. Jutiliserai cette version qui est la 5.1.10 (64 bits).
Pour quAccess puisse communiquer avec MySQL, il a besoin dun pilote mais aussi dune source de donnes, habituellement appele DSN (Data Source Name) ; cest elle qui va indiquer sur quel serveur et quelle base se connecter. Lancez votre serveur MySQL et vrifiez quil est bien dmarr. Rendez-vous dans Panneau de configuration > Systme et scurit > Outils dadministration > Sources de donnes (ODBC). Lcran suivant saffiche alors :
Dans Source de donnes utilisateur , slectionnez Ajouter , aprs quoi vous obtenez ceci :
Vous avez la liste de tous les pilotes utiles pour les bases de donnes installs sur votre machine, slectionnez donc MySQL ODBC 5.1 Driver , le pilote que vous venez dinstaller, et faites Terminer .
Configurons prsent notre connexion MySQL. Il nous faut tout dabord donner un nom notre DSN, choisissez donc un nom qui vous permettra de la retrouver facilement par la suite. Indiquez ensuite le nom du serveur (localhost), le nom dutilisateur (par dfaut, root sans mot de passe) puis slectionnez dans la liste la base de donnes concerne (soit tuto). Cliquez ensuite sur Test pour tester la connexion. Vous devriez obtenir Connection successful . Cliquez sur OK . Notre DSN est dsormais cre : nous pouvons ouvrir Access !
Crez un nouveau fichier Access. tant sous 2010, jobtiens un fichier *.accdb sous 2003, vous devriez obtenir un *.mdb. Ouvrez le fichier si ce nest dj fait. Si vous utilisez Access 2007, cherchez Donnes externes > Plus > Base de donnes ODBC. Sous Access 2010, cherchez Donnes externes > Base de donnes ODBC.
Mais quest-ce que ce ODBC ? Tu nous as fait installer un truc dont on ne connat mme pas lutilit ?! Citation : Comment a Marche ODBC signifie Open DataBase Connectivity. Il s'agit d'un format dfini par Microsoft permettant la communication entre des clients bases de donnes fonctionnant sous Windows et les SGBD du march. Le gestionnaire ODBC est prsent sur les systmes Windows. Il existe toutefois des implmentations sur d'autres plates-formes, notamment des plates-formes UNIX/Linux.
Voil pour la dfinition. Seulement, le pilote pour MySQL nest pas natif Windows, cest pourquoi je vous lai fait tlcharger. Vous devriez obtenir cette fentre. Slectionnez le second choix car nous souhaitons nous synchroniser avec notre table personnes (pour ceux qui suivent ).
Ensuite, nous allons retrouver notre DSN dans Source de donnes machine .
Sont rpertories les tables appartenant la base de donnes slectionne (do lintrt de construire sa table auparavant), slectionnez donc la table personnes et cliquez sur OK .
Sur la liste, gauche, apparat lentre personnes : double-cliquez dessus pour louvrir ; nous retrouvons bien nos champs id et prenom.
Retournons prsent sur notre fichier Excel (ne fermez pas le fichier Access) rouvrez-le si vous laviez ferm. Il va maintenant sagir de slectionner toutes nos donnes par une combinaison que vous connaissez bien. Petite astuce : placez-vous en cellule A1 et appuyez sur les touches suivantes : Ctrl + Shift + Fin. Ainsi, toutes les donnes places entre la cellule de dpart en haut gauche (ici A1) et la cellule en bas droite seront slectionnes jusqu ce quExcel ne trouve plus de donnes (dans notre cas, en B18). Vous pouvez maintenant copier (Ctrl + C).
Retournez sur votre fichier Access puis slectionnez lensemble des donnes en cliquant sur la petite flche qui se situe gauche de id et au-dessus de ltoile * (cest trs important, sinon la copie ne fonctionnera pas) :
Si vous tes sous Windows XP, vous aurez peut-tre cette erreur. Si tel est le cas, reportez-vous au chapitre Rsolution du problme .
Bien sr, rpondez Oui . Cest termin, vos donnes sont insres ! Allez quand mme vrifier via phpMyAdmin si vous en doutez. Ou via la console MySQL (pour le fun ! ).
Retour en haut
Rsolution du problme
Jai rencontr ce problme sous Windows XP et avec Office 2007.
Premire solution
Allez dans Panneau de configuration > Ajout/Suppression de programmes > cochez Afficher les mises jour > slectionnez la mise jour pour Excel 2007 KB958437 et supprimez-la. Copiez nouveau la slection dans Excel et collez dans Access. Si le problme persiste ou si vous ne trouvez pas cette mise jour dans la liste, passez la seconde solution.
Seconde solution
Ouvrez un document Word vierge, collez avec Ctrl + V, slectionnez nouveau avec Ctrl + A, copiez avec Ctrl + C, collez dans Access avec Ctrl + V et a devrait fonctionner. Retour en haut
En mode graphique
phpMyAdmin, pour ceux qui en disposent, propose un import de donnes par fichier dont le poids nexcde pas 2 Mo. Choisissez votre base de donnes puis slectionnez loption Importer et remplissez le formulaire comme suit :
Pour que les accents soient correctement enregistrs dans la table de destination, il faut convertir le fichier *.csv en UTF-8. Pour cela, vous pouvez louvrir avec Notepad++ et utiliser le menu Encodage > Convertir en UTF-8.
phpMyAdmin vous a cr une table et des colonnes avec des noms gnriques.
En mode console
Par ce biais, vous naurez (normalement) pas de contrainte concernant le poids du fichier. Il faut dabord crer la base de donnes et la table, tout comme dans la solution no 1. Voici le code pour crer la base et la table : Code : SQL - Slectionner
1 2 3 4 5 6 7 8 CREATE DATABASE tuto; USE tuto; CREATE TABLE personnes ( id int(11) NOT NULL AUTO_INCREMENT, prenom varchar(50) NOT NULL, PRIMARY KEY (id) );
Ensuite, il faut utiliser cette commande pour intgrer le *.csv. Que ce soit sous UNIX/Linux ou Windows, le sparateur de rpertoire reste le slash (/). Code : SQL - Slectionner
1 2 3 4 LOAD DATA LOCAL INFILE 'C:/User/Syl/Desktop/tuto.csv' INTO TABLE tuto.personnes FIELDS TERMINATED BY ';' ENCLOSED BY ''
Voil, les donnes sont insres, vous pouvez vrifier comme je lai indiqu en fin de solution no 1.