Assistant Excel – Powerpoint

Vous créez souvent des slides Powerpoint à partir d’Excel alors cet assistant est fait pour vous.

L’assistant Graphics Extractor vous permet de créer d’un simple clic des slides Powerpoint à partir de zones contenues dans des feuilles Excel.

Sélectionnez les zones Excel que vous souhaitez inclure dans vos slides.

  1. Sélectionnez votre modèle
  2. Sélectionnez la première page d’insertion
  3. Créer votre balise d’extraction
  4. Sélectionnez vos zones à extraire
  5. Cliquez sur Extraire
  6. Le fichier Powerpoint s’ouvre avec les zones Excel extraites.

Une fois les balises incluses dans le fichier Excel vous pourrez recréer les slides Powerpoint à l’infini, en supprimer ou en ajouter.

Vous pouvez envoyer vos slides sans avoir à joindre le fichier Excel, cela garantie la sécurité et la confidentialité des données.

Le gain de temps est notable.

Excel n’est pas une base de données.

Combien d’entrepreneurs assurent toutes ou partie de la gestion de leur entreprise avec Excel ?
Combien osent affirmer qu’ils sont dans une impasse après quelques temps d’utilisation ?

Au premier abord c’est génial, bluffant, les résultats rapidement obtenus par un néophyte s’affichent et comparés au temps passé et aux sommes investies l’entrepreneur reste gagnant.
Les problèmes apparaissent à l’utilisation et lors de l’évolution des besoins.

Les carences d’un produit dévoyé ne peuvent être totalement gommées d’un simple agencement de formules ou de code. Le contournement devient alors un véritable casse-tête et ce qui semblait démarrer comme une belle aventure tourne au cauchemar chronophage et fonctionnel.

Un peu comme si vous utilisiez une pompe à vélo pour gonfler la roue de votre voiture.

Cependant il ne faut pas se méprendre, quelques formules entre feuilles ou workbooks ou quelques procédures VBA n’en feront jamais un système de gestion de base de données relationnel.

Voici les erreurs les plus récurrentes observées dans ces solutions empiriques :

  • Duplication de données
  • Absence ou lourdeur des contrôles de saisie
  • Absence d’un langage de traitement de masse
  • Incohérence des chaines de données
  • Limitation de la quantité de données
  • Lenteur généralisée avec des volumes de données moyens
  • Aucune notion de multi-utilisateur

Excel reste le meilleur tableur sur le marché mais ce n’est pas parce qu’on maitrise un produit qu’il est le plus adapté au but recherché.

Si on ne peut pas tenir rigueur de l’entrepreneur néophyte, son seul objectif étant la gestion à meilleur coût, on est en droit de se poser des questions sur l’éthique des « expert » qui conseillent encore Excel pour ce genre de besoin.

comparatif Excel et Base de données

Si après la lecture du comparatif suivant vous n’êtes toujours pas convaincu, n’hésitez pas à exposer vos arguments.

ACCESS : Champ mémo tronqué lors d’un Export Excel

Si vous avez un jour tenté de lier un source de données MS Access, requête ou table, à Excel, vous avez sûrement été confronté à l’interprétation aléatoire des champs mémo.

Aléatoire ? Pas tant que ça. Il faut savoir que pour réaliser un export à partir du menu DONNEES EXTERNES / Exporter Excel, MS Access ne se base non pas sur la structure du champ mais sur le contenu des premières lignes. Si dans ces premières lignes il rencontre un contenu de plus de 255 caractères il considère ce champ comme mémo (texte long)… et là tout va bien.

Dans le cas contraire, il tronquera tout le reste à 255 caractères qui est la limite du format Texte Court, anciennement Texte. Adieu vos 32 000 caractères suivant !

Info : Un champ Texte Long, anciennement  Mémo, de la base de données 
Jet (Ms ACCESS) et d'une capacité de 65 535 caractères exactement.
Une cellule MS EXCEL en contient tout au plus 32 767.
Il en manquera toujours un peu.

On peut donc oublier l’export CSV ou depuis la commande MS Access, à part faire un tri sur le nombre de caractères de votre champ mémo, si techniquement cela ne pose aucun problème fonctionnellement cela peut ne pas convenir. On ne sera jamais sûr d’avoir la totalité du contenu.

Heureusement, il existe un méthode, certes un peu plus complexe mais également plus efficace. Il s’agit de l’automation. Autrement dit, piloter Excel depuis Access. Il existe une méthode de copie de recordset disponible avec VBA Excel.

CopyFromRecordset

Cette méthode est disponible dans Excel sans ajout de bibliothèque (Références) car il faut le savoir, Excel est un consommateur de Recordset à ses heures.

Voici le code commenté :

Function fInsertInSheet(ByVal strPath As String, ByVal strFeuille As String, rst As Recordset2) As Boolean 
'----------------------------------------------------------------- 
' Procedure : fInsertInSheet 
' Author : Fabrice CONSTANS (MVP) 
' Date : 21/01/2014 
' Purpose : Insère un ou plusieurs enregistrements issu de RST 
' dans la feuille excel strFeuille du fichier strPath 
' utilise fFieldFormated() et ADODB 
' Parameters: strPath = chemin+nom du fichier Xls au format 12.0 
' strFeuille = la feuille dans laquelle insérer l'enrg 
' rst = le recordset contenant les données à insérer 
' Return : Boolean renvoi vrai si insertion réussie 
'----------------------------------------------------------------- 

'Ecrit le recordset transmis dans la feuille indiquée 

Dim strSql As String 
Dim i As Long 
Dim l As Long
 
'Late Binding 
Dim oExcel As Object ' Excel application 
Dim oFeuille As Object ' la feuille 
Dim oWork As Object ' le workbook 
Dim boolStateDisplayAlerts As Boolean 
Dim boolStateAskToUpdateLinks As Boolean 

On Error GoTo Errsub 
Set oExcel = CreateObject("Excel.Application") 
oExcel.Visible = False 
'enregistre l'état 
boolStateDisplayAlerts = oExcel.DisplayAlerts 
boolStateAskToUpdateLinks = oExcel.AskToUpdateLinks 
'met en mode silentieux 
oExcel.AskToUpdateLinks = False
oExcel.DisplayAlerts = False 

Set oWork = oExcel.Workbooks.Open(strPath) ' ouvre le classeur 
Set oFeuille = oWork.Sheets(strFeuille) ' active la feuille 
'xlByRows, xlPrevious l = 1 

'insertion en ligne 1 
oFeuille.Cells(l, 1).CopyFromRecordset rst 'copie recordset 
oExcel.Windows(1).Visible = True 
oWork.Save 'on le sauve 

'remet à l'état d'origine 
oExcel.DisplayAlerts = boolStateDisplayAlerts 
oExcel.AskToUpdateLinks = boolStateAskToUpdateLinks 
oExcel.Visible = True 
oExcel.Quit 

Set oFeuille = Nothing ' vide les objets xls 
Set oWork = Nothing 
Set oExcel = Nothing 
fInsertInSheet = True 'ça c'est bien passé ! 

Exitsub: 
On Error GoTo 0 Exit Function 

Errsub: 
fInsertInSheet = False 'il y a un problème 
'mettre ici une gestion d'erreur ou un msg 
End Function

Conclusion

Voilà un code pas si mystérieux où l’on ouvre un recordset coté Access pour le copier dans la feuille Excel. Plus d’informations sur le LateBinding.

Bonne utilisation !