Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Questions les plus fréquentes (FAQ) et didacticiels > [REF] Wiki Page 9 de MichelXld
Vous inscrire
S'inscrire FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus


Réponse
 
LinkBack Outils de la discussion
Vieux 08/03/2008, 21h51   #1 (permalink)
MichelXld
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 620
Post [REF] Wiki Page 9 de MichelXld

Les sujets abordés dans cette page :
  • Les mises en forme conditionnelles , Les Tableaux et graphiques Croisés Dynamiques , Gérer les fichiers XML depuis Excel , Piloter Open Office depuis Excel.
Lien vers la wiki page 1 :Les feuilles , Les graphiques , Les images , Les propriétés des classeurs , Les sauvegardes , Les formes automatiques , Aleatoire , Les barres d'outils et les barres de menus , Les boites de dialogues intégrées , Les classeurs .
Lien vers la wiki page 2 : Les userforms : Les Checkbox , Les Labels , Les combobox , Les Commandbutton , Les Listbox ,Les Multipages , Les Frames , Les Textbox , Les imagesList , Les Treeview , Les Listview , Les Images , Les Webbrowser , Les calendriers , Les progressbar , Les Spreadsheet , Les Chartspaces , Les commonDialog , Les MSFlexGrid.
Lien vers la wiki page 3 :Piloter d'autres applications depuis Excel , Piloter ( Word , Outlook , Power Point ) , Les fichiers texte
Lien vers la wiki page 4 : Les fonctions mathématiques et trigonométriques , Les impressions , Les temporisations , Les fonctions , Les evenements , Excel , Les cellules , Copier & Coller , Les dates et les calendriers , Les spécificités Macintosh, Générer des fichiers Flash , Open Office
Lien vers la wiki page 5 : Les formules Excel , Les audits de formules , Les répertoires et les fichiers .
Lien vers la wiki page 6 : Les doublons , Les tris et les filtres , Les variables , Piloter les fichiers fermés (Excel , Access ,les fichiers DBF) .
Lien vers la wiki page 7 : Les commentaires , La gestion des erreurs , L'aide en ligne Excel , Les recherches dans un classeur, Les tableaux , Les pages html et internet , Windows Media Player , Le PC et le systême d'exploitation ,Piloter Flash , les types de boucles.
Lien vers la wiki page 8 : Piloter MSN Messenger et Windows Messenger , Les objets dans le feuille , Les liens hypertextes , Les formats , Visual basic editor , Les chaines de caractères , Les modules de classe.
Lien vers la wiki page 9 : Les mises en forme conditionnelles , Les Tableaux et graphiques Croisés Dynamiques , Gérer les fichiers XML depuis Excel , Piloter Open Office depuis Excel.
Lien vers la wiki page 10 : Le Publipostage Word / Excel.
Lien vers la wiki page 11 : Utiliser la librairie Windows Image Acquisition Automation Library v2.0 depuis Excel.
Les mises en forme conditionnelles

La mise en forme conditionnelle (MEFC) permet d'appliquer une mise en forme ( ombrage de cellule , couleur de police...) automatiquement si une condition particulière est remplie.
Il est possible de définir le format de la cellule en fonction de la valeur de celle ci. La MEFC permet ainsi de mettre en évidence certaines données mais aussi de les masquer (en appliquant par exemple la meme couleur au texte et au fond de la cellule)
Vous pouvez accéder à cette fonction dans le Menu Format , Mise en forme conditionnelle .
  • Un mémo sur la MEFC ( par Brigitte )
    Le lien vers la zone de téléchargement du forum
  • Quelques informations générales
    La mise en forme conditionnelle ne peut se référer à un autre classeur .
    La mise en forme conditionnelle peut se référer à une autre feuille (du meme classeur) en nommant les cellules qui seront utilisées dans la formule :
    Menu Insertion
    Nom
    Définir
    Il n'est pas posssible d'appliquer une mise en forme conditionnelle en fonction d'un format de cellule .
    Il n'est pas possible de compter les cellules coloriées à l'aide d'une MFC. Une solution de substitution consiste à recréer une formule qui utilise les mêmes critères que la mise en forme conditionnelle .
    3 conditions maximum peuvent etre appliquées dans une mise en forme conditionnelle .
    Il est possible d'appliquer une mise en forme conditionnelle à une plage de cellules :
    Sélectionnez la plage sur laquelle vous souhaitez créer la mise en forme conditionnelle.
    Appliquez la MEFC pour la cellule supérieure gauche. Excel va automatiquement adapter la mise en forme pour les autres cellules de la plage .
    En fonction de votre projet, il est possible d'utiliser des références absolues , relatives ou mixtes dans les formules de MEFC : consultez la MichelXldPageCinq pour plus d'informations.
  • Rechercher les cellules dotées de mises en forme conditionnelles .
    Pour rechercher toutes les cellules contenant des mises en forme conditionnelles , clique sur n'importe quelle cellule.
    Ensuite ,
    Menu Edition
    Atteindre
    Clique sur le bouton Cellules
    Selectionne l'option Formats conditionnels
    Selectionne l'option "Toutes" pour rechercher l'ensemble des cellules contenant des mises en forme conditionnelles
    Remarque : Selectionne l'option "Identiques" pour rechercher uniquement les cellules contenant des mises en forme conditionnelles identiques à ceux de la cellule selectionnée
    Clique sur OK
  • Colorier la valeur maximale d'une plage
    =A1=MAX($A$1:$C$10)
  • Quelle MFC utiliser pour que #N/A n'apparaisse pas dans la cellule A1
    =ESTNA(A1)
    et applique le format couleur de police identique au fond de la cellule .
  • Appliquer une mise en forme conditionnelle sur les cellules qui contiennent une erreur
    =ESTERREUR(A1)
  • Appliquer une mise en forme conditionnelle si la cellule A1 est non vide
    =NON(ESTVIDE(A1))
  • Colorier une ligne complete si la cellule A1 = 10
    Sélectionnes la ligne à colorier
    Dans la mise en forme conditionnelle , inseres "la formule est " =$A$1=10
    Ensuite sélectionnes le motif à appliquer
  • Colorier les cellules en fonction d'une Date
    Le lien sur le forum XLD
  • Une MEFC qui indique la date du plus proche (une démo de Monique)
    Le lien sur le forum XLD
    Le fichier zippé
  • Appliquer une MEFC en fonction d'une date de début et une date de fin ( une démo de Gérard )
    Le lien sur le forum XLD
    Le fichier zippé
  • Identifier les doublons dans la colonne A
    =NB.SI(A:A;A1)>1
  • Appliquer une mise en forme conditionnelle par macro
    Exemple pour colorier la cellule A1 si elle n'est non vide
    With Range("A1")
    .formatConditions.Delete
    .formatConditions.Add Type:=xlExpression, Operator:=xlGreater, Formula1:="=NON(ESTVIDE(A1))"
    .formatConditions(1).Interior.colorIndex = 3
    End With
    L'argument xlExpression permet d'insérer une formule dans la MFC . Utilisez l'argument xlCellValue pour que la mise en forme conditionnelle soit basée sur la valeur d'une cellule .

Les tableaux et graphiques croisés dynamiques

Un Tableau Croisé Dynamique (TCD) est la présentation d'une source de données sous forme de tableau. Il est dynamique car toute modification de la source entraine la mise à jour du tableau ( l'actualisation des données) .Il permet de combiner et comparer rapidement un grand nombre de données .
Dans un rapport de tableau croisé dynamique, chaque colonne ou champ de données sources devient un champ de tableau croisé dynamique qui synthétise plusieurs lignes d'informations .La présentation du tableau peut être paramétrée en personnalisant la position des champs de données , en fonction des résultats à visualiser.
Cet outil permet d'effectuer des calculs (somme, nombre ,produit , max ,ecart type ... ) et d'analyser de facon Dynamique la source de données. Il est possible de faire pivoter les lignes et colonnes pour afficher différentes synthèses des données sources.
Le TCD est un outil statistique qui repose avant tout sur une base de données bien structurée .
  • Généralités
    Evitez de placer le TCD dans la feuille contenant la base de données
    Il ne faut pas laisser de lignes ou colonnes vides entre les données de la base
  • Visualiser ou modifier la disposition des champs dans un TCD existant
    Clic droit dans le TCD
    Assistant
    bouton Disposition
  • Renommer un champ ou un élément d'un tableau croisé dynamique
    ( Informations issues de l'aide en ligne Excel)
    Cliquez sur le champ ou l'élément que vous voulez renommer.
    Tapez un nouveau nom.
    Appuyez sur ENTRÉE.
    Remarques :
    Si vous masquez, puis réaffichez des niveaux dans des rapports de tableau croisé dynamique basés sur des données sources OLAP, tous les champs ou éléments renommés reprennent leur nom d'origine.
    Renommer un élément numérique le transforme en texte, qui est alors trié séparément des valeurs numériques et ne peut pas être groupé avec des éléments numériques
  • Réaliser un TCD à partir de données dans plusieurs feuilles ( une démo de Celeda)
    Dans la première étape de l'assistant , cochez l'option "Plage de feuilles de calcul avec étiquettes."
    Le fichier zippé
  • Consolidation de données issues de plusieurs feuilles (ou des plages distinctes sur une même feuille)
    Objectif : visualiser le montant total d'un Chiffre d'affaire de trois années , par client
    Les 3 feuilles Feuil1 (An1) ,Feuil2 (An2) , Feuil3 (An3) , doivent comporter les mêmes champs :
    Par exemple "Clients" et "CA"
    Dans le menu de création du TCD , Choisir "Plages de feuilles de calcul avec étiquettes"
    A l'étape 2, choisir le nombre de champ ou laisser en automatique .
    A l'étape 3, ajouter les plages dans leur totalité
    La boite de dialogue affiche quatre noms de champs :
    Le champ page1 regroupe toutes les pages des données
    il apparaît Item 1, Item 2,.. ( possibilité de renommer les items et filtrer sur un des éléments )
    Le champ Ligne reporte toutes les valeurs du champ de sa propre ligne
    Le champ Colonne reporte toutes les valeurs du champ dans sa propre colonne
    Le champ Données reporte par défaut la somme de toutes les valeurs du champ que l'on veut afficher et pour du texte, compte le nombre de valeurs.
    Ligne correspond à Client
    Colonne correspond au CA
    Page1 correspond à AN1,AN2,An3
    Données correspond au total des trois feuilles
  • Regrouper des dates dans un TCD
    Menu "Grouper et afficher détail"
    Grouper
    Déterminez la période et le type de regroupement dans la boite de dialogue (jour , mois , trimestre , année ...)
    Il est possible d'afficher le résultat par nombre de jours
  • Ne conserver que mois-année dans un TCD
    Le lien sur le forum XLD
    Le fichier zippé
  • Regrouper des dates et des montants triés par mois ( une démo de Celeda)
    Le lien sur le forum XLD
    Le fichier zippé
  • Grouper des dates malgré les vides
    La principale source d'erreur dans le groupement de dates se trouve dans la colonne des dates comportant des vides.
    Une parade pour faire quand même ce regroupement consiste à insérer dans chaque cellule, une date bidon et unique qui permettra de décocher cette date pour obtenir l'affichage d'un résultat cohérent .
  • Les champs Calculés
    Il s'agit d'un champ créé par l'utilisateur pour l'utilisation d'une formule à partir d'un autre champ .
    Sélectionne le TCD
    Choisis "Formules" dans la barre de menu TCD
    Sélectionne "Champ calculé"
    Dans le champ "nom", saisie le nom que tu souhaites attribuer à ce nouveau champ
    Dans la rubrique "Formules", tu paramètres ta formule en sélectionnant les données disponibles dans la rubrique "Champs" et en utilisant le bouton "Insérer un champ"
    (Par exemple =colonne_x/colonne_total)
    Clique sur OK pour valider
    Le TCD va s'adapter automatiquement avec cette nouvelle donnée.
    Une démo de Celeda
    Le lien sur le forum XLD
    Le fichier zippé
    Remarque :
    Parfois il est plus simple d'ajouter une colonne supplémentaire dans la base de données et d'y déposer la formule adéquate. En effet, les champs calculés acceptent les opérateurs et des constantes mais n'acceptent pas de noms de cellules, de plages de cellules, de formules qui font appel à des matrices ou des fonctions.
  • Conserver une mise en forme personnalisée dans un graphique croisé dynamique, après la mise à jour des données
    Excel ne permet pas de conserver les mises en forme personnalisées lors des réactualisations de données
    Il est cependant , possible d'utiliser l'evenement "Private Sub Chart_Calculate()" pour forcer une mise en forme
    Un exemple pour que la 1ere série du graphique soit toujours de couleur rouge :
    Private Sub Chart_Calculate()
    activeChart.seriesCollection(1).Interior.colorInde x = 3
    End Sub
  • Masquer les sous totaux du champ "Noms" dans un TCD nommé "MonTCD"
    Sub cacheSousTotal()
    activeSheet.pivotTables("monTCD").pivotFields("Nom s").Subtotals(1) = False
    End Sub
  • Créer un TCD par macro
    Les données sont dans la feuille "BD" et les étiquettes de colonne en A1.Le TCD est construit dans la cellule A1 de la Feuil1
    Sub CreerTCD()
    activeWorkbook.pivotTableWizard xlDatabase, ?[BD!A1].currentRegion _
    .Address(, , xlR1C1, True), "Feuil1!r1c1", "Mon tableau"
    End Sub
  • Détruire les anciennes étiquettes dans un TCD
    Suite à des modifications des étiquettes dans la base de données, le TCD ne s'actualise pas et les étiquettes de colonne persistent dans les filtres des champs.
    Pour les supprimer , utilisez cette macro de Debra Dalgleish ,à placer dans un module de la feuille
    Sub deleteOldItemsWB()
    'gets rid of unused items in pivotTable
    'Debra Dalgleish - based on MSKB (202232)
    Dim ws As Worksheet
    Dim pt As pivotTable
    Dim pf As pivotField
    Dim pi As pivotItem
    Dim i As Integer
    On Error Resume Next
    For Each ws In activeWorkbook.Worksheets
    For Each pt In ws.pivotTables
    pt.refreshTable
    For Each pf In pt.pivotFields
    For Each pi In pf.pivotItems
    If pi.recordCount = 0 And _
    Not pi.isCalculated Then
    pi.Delete
    End If
    Next
    Next
    Next
    Next
    End Sub
    Et un autre solution , à partir d'excel 2002 uniquement :
    Sub deleteMissingItems2002()
    'prevents unused items in XL 2002 pivotTable
    Dim pt As pivotTable
    Set pt = activeSheet.pivotTables.Item(1)
    pt.pivotCache.missingItemsLimit = xlMissingItemsNone
    End Sub
  • Les Filtres dans le TCD
    Peut-on supprimer des lignes ou des colonnes dans un TCD ?
    Non, mais en se servant des filtres on décoche dans la liste déroulante les éléménts à ne pas afficher
    Le lien sur le forum XLD
  • Actualiser par macro tous les TCDs du classeur
    Sub ActualiserTCD()
    Dim Tcd As pivotTable
    Dim Feuille As Worksheet
    Application.screenUpdating = False
    For Each Feuille In Worksheets
    For Each Tcd In Feuille.pivotTables
    Tcd.refreshTable
    Next
    Next
    Application.screenUpdating = True
    End Sub
  • Nommer une base de données ( Plage de cellules) dynamiquement
    Menu Insertion
    Nom
    Définir
    Dans le champ "Noms dans le classeur" , nommez la plage de cellules
    Dans le champ "Fait référence à:" , indiquez la formule :
    Clic sur OK pour valider
    =DECALER($A$1;;;NBVAL($A$1:$A$2000);NBVAL($A$1:$X$ 1))
    IMPORTANT : Il doit impérativement y avoir des étiquettes dans toutes les colonnes
    Cet exemple limite les colonnes jusqu'à X et les lignes jusqu'à 2000 .
    Pour utiliser la meme formule sans limite de lignes et de colonnes :
    =DECALER($A$1;;;NBVAL(Feuil2!$A:$A);NBVAL(Feuil2!$ 1:$1))
  • Créer un TCD par macro, à partir d'une plage de cellules variable
    Le lien sur le forum XLD
  • Ne pas afficher les zéro tout en conservant l'affichage de l'élement dans le TCD
    Sélectionnez la plage des cellules à l'intérieur du TCD (dans colonne TOTAL)
    Clic droit sur le bouton du tableau croisé dynamique
    Format de cellule
    Personnalisé
    Saisissez le format 0,0;-0,0;""
  • Afficher à la fois le total et le pourcentage dans un TCD
    Lors de la création du TCD , à l'étape 3, il est possible d'ajouter une deuxième fois un champ dans la zone de données , et de le demander en pourcentage
    Glissez une 2eme fois le champ dans la zone "données" (CA dans l'exemple ci-dessous)
    Ensuite double cliquez sur le champ "Somme de CA2"
    Cliquez sur le bouton "Options" dans la boite de dialogue "Champ pivotTable"
    Dans le champ "Afficher les données:" , selectionnez "% du total"
    Il est aussi possible de changer le nom de ce champ à cette étape
    Cliquez sur OK pour valider
  • Extraire la totalité des informations concernant les éléments du TCD
    En double cliquant sur le total d'un élément du TCD, on obtient dans un nouvel onglet la totalité des informations concernant cet élément
  • Les Tris dans un TCD
    Pour définir un ordre d'affichage , il suffit de double cliquer sur l'entête d'un champ
    Dans la boîte de dialogue "Champ dynamique", cliquez sur le bouton "Avancé"
    Dans nouvelle boite de dialogue qui s'affiche ("Options avancées de champ dynamique") sélectionnez une des options de tri :
    Manuel , Croissant ou Décroissant
    Ensuite précisez si le tri du champ doit etre effectué par rapport à lui-même ou par rapport à un autre champ ( dans la liste déroulante "Sur le champ")
  • Afficher le Top 10 d'une colonne
    Double cliquez sur l'entête d'un champ
    Dans la boîte de dialogue "Champ dynamique", cliquez sur le bouton "Avancé"
    Sélectionnez l'option de Top 10 dans la boite de dialogue "Options avancées de champ dynamique"
    (Voir la partie droite de l'image précédente)
  • Regrouper des éléments du TCD
    Sélectionnez les lignes à grouper dans le tableau croisé dynamique
    Clic droit
    Choisissez l'option "Grouper et afficher le détail"
    Grouper
    Une nouvelle colonne de regroupement est alors créée dans le TCD
  • Compter le nombre de lignes dans le TCD
    Sub compterNombreLignesTCD()
    Dim Pvt As pivotTable
    Set Pvt = Worksheets("Feuil1").pivotTables("Tableau croisé dynamique1")
    'tableRange1: plage contenant l'intégralité du rapport de tableau croisé dynamique, à l'exclusion des champs de page
    msgBox Pvt.tableRange1.Rows.Count
    'tableRange2 : plage contenant l'intégralité du rapport de tableau croisé dynamique,y compris les champs de page
    msgBox Pvt.tableRange2.Rows.Count
    End Sub
  • Afficher la boite de dialogue de mise à jour du TCD et créer une copie du résultat dans une nouvelle feuille
    Sub updatePivot()
    ' John Lacher
    'http://www.lacher.com/examples/lacher36.htm
    Application.screenUpdating = False
    With Worksheets("TCD")
    .pivotTables(1).tableRange2.Select
    Application.Dialogs(xlDialogPivotTableWizard).Show
    .pivotTables(1).tableRange2.Select
    End With
    With Worksheets("Feuil1")
    Selection.Copy
    .Activate
    .Range("A4").pasteSpecial Paste:=xlValues
    .usedRange.autoFormat xlColor2
    End With
    End Sub
  • Actualiser 2 TCD en meme temps ( des solutions proposées par Dan )
    Vous pouvez créer le deuxième TCD à partir du premier - L'assistant propose cette option au début. Quand vous actualisez le premier, le deuxième s'actualisera également.
    Vous pouvez aussi utiliser cette macro ( dans cet exemple , les 2 TCD sont dans la meme feuille )
    with Activesheet
    .pivotTables("Tableau croisé dynamique1").refreshTable
    .pivotTables("Tableau croisé dynamique2").refreshTable
    End with
  • Boucler sur tous les TCD de la feuille active et afficher leur nom
    Dim Pvt As pivotTable
    For Each Pvt In activeSheet.pivotTables
    msgBox Pvt.Name
    Next
  • Mettre à jour un TCD dans une feuille protégée (un exemple proposé par Dan)
    Le lien sur le forum XLD
  • Comment modifier des champs dans un TCD , sans refaire le TCD : une démo de Myta
    Le lien sur le forum XLD
    Le fichier zippé
  • Vérifier si un Graphique est issu d'un TCD ( renvoie Vrai ou Faux )
    msgBox Sheets("Graph1").hasPivotFields
  • Vérifier si une cellule fait partie d'un TCD
    Dim Pvt As pivotTable
    On Error Resume Next
    Set Pvt = Range("E5").pivotTable
    If Err.Number = 0 Then msgBox "La cellule fait partie du TCD : " & Pvt.Name
  • Réafficher tous les éléments du champ "Pays"
    Dim x As Integer
    With Worksheets("Feuil4").pivotTables("Tableau croisé dynamique1")
    For x = 1 To .pivotFields("Pays").pivotItems.Count
    .pivotFields("Pays").pivotItems.Item(x).Visible = True
    Next
    End With
  • Appliquer la fonction Somme au champ "Clients" du premier TCD de la feuille active.
    activeSheet.pivotTables(1).pivotFields("Nombre de Clients").Function = xlSum
    Les autres constantes disponibles pour la propriété Function :
    xlAverage - Moyenne
    xlCountNums - Nb
    xlMin - Min
    xlStDev - Ecartype
    xlSum - Somme
    xlVar - Var
    xlCount - Nombre
    xlMax - Max
    xlProduct - Produit
    xlStDevP - Ecartypep
    xlUnknown -
    xlVarP - Varp
  • Modifier la mise en forme des cellules contenant les résultats, dans le premier TCD de la feuille active.
    With activeSheet.pivotTables(1).dataBodyRange
    .pivotField.numberFormat = "# ##0.00"
    .Interior.colorIndex = 4
    End With
  • Déclencher les liens hypertextes contenus dans les champs d'un TCD .
    Private Sub Worksheet_selectionChange(byVal Target As Range)
    Dim Pvt As pivotTable
    On Error Resume Next
    Set Pvt = Target.pivotTable
    If Err.Number = 0 And Target.Hyperlinks.Count = 1 Then Target.Hyperlinks(1).Follow
    End Sub
  • Masquer tous les champs dans le 1er TCD de la feuille active.
    Dim Pvt As pivotTable
    Dim Pvf As pivotField
    Set Pvt = activeSheet.pivotTables(1)
    For Each Pvf In Pvt.pivotFields
    Pvf.Orientation = xlHidden
    Next Pvf
  • Afficher le détail de tous les éléments d'un champ .
    Dim Pvt As pivotItem
    For Each Pvt In activeSheet.pivotTables(1).pivotFields("Cible").pi votItems
    Pvt.showDetail = True
    Next
  • Récupérer les éléments d'un champ
    Dim Pvt As pivotItem
    For Each Pvt In activeSheet.pivotTables(1).pivotFields("Client").p ivotItems
    Debug.Print Pvt.Caption
    Next
  • Récupérer une valeur dans un TCD
    Exemple : Afficher le total des revenus provenant des ventes de pommes en janvier (Champ de données = Revenu, Produit = Pommes, Mois = Janvier)
    msgbox activeSheet.pivotTables(1).getData("'Somme de Revenus' Pommes Janvier")
  • Afficher le résultat d'un TCD dans une listbox
    Private Sub userForm_Initialize()
    Dim Cell As Range
    Dim Pvt As pivotTable
    Dim Pvf As pivotField
    listBox1.columnCount = 2
    listBox1.columnWidths = "70;40"
    Set Pvt = Sheets("Feuil4").pivotTables(1)
    Set Pvf = Pvt.pivotFields(1)
    For Each Cell In Pvf.dataRange
    listBox1.addItem Cell
    listBox1.List(listBox1.listCount - 1, 1) = _
    Sheets("Feuil4").pivotTables(1).getData("'" & Pvt.dataFields(1).Name & "' " & Pvf.Name & " " & Cell)
    Next Cell
    End Sub
  • Utiliser la fonction LIREDONNEESTABCROISDYNAMIQUE :Une démo de Dan
    Le lien dans la zone de téléchargement
  • TCD_EXTRACTOR : Extraire les résultats d'un TCD
    Cet exemple permet d'extraire le résultat d'un champ spécifique dans un tableau croisé dynamique .
    Un userForm liste les TCD contenus dans tous les classeurs ouverts
    Tous les paramètres du TCD sélectionné sont listés dans la boite de dialogue . L'utilisateur paramètre ses données puis lance la requète Afin de visualiser le résultat .
    Option pour les utilisateurs de macros :
    La procédure "Fabrique" un exemple de macro correspondant à la requete effectuée .
    Il ne reste plus qu'a faire un copier/coller du Textbox vers un module du classeur contenant le TCD cible .
    Une option permet de créer un module dans le classeur contenant le TCD , puis d'y ajouter la macro "Fabriquée"
    Option pour les utilisateurs de formules :
    La procédure "Fabrique" un exemple de fonction LIREDONNEESTABCROISDYNAMIQUE(tableau_croisé_dyn;no m) correspondant à la requete effectuée .
    Il ne reste plus qu'a faire un copier/coller du Textbox vers la feuille contenant le TCD .
    Le lien sur le forum XLD
    Le fichier zippé
    Le fichier zippé, version xla
  • Trier les données d'un champ par ordre croissant
    Clic droit sur le champ
    Option "Paramètres de Champ"
    Bouton "Avancé"
    Sélectionne l'option "Croissant" dans la zone "Tri automatique"
    Clique sur OK pour valider (pour les 2 boites de dialogue)
  • Modifier la source d'un TCD
    Dim objCellule As Range
    Dim Pvt As pivotTable
    Set objCellule = thisWorkbook.Sheets("Feuil1").Range("A1:B20")
    Set Pvt = Sheets("Feuil4").pivotTables("Tableau croisé dynamique1")
    Pvt.pivotTableWizard sourceType:=xlDatabase, _
    sourceData:=objCellule.Address(, , xlR1C1, True)

Gérer les fichiers XML depuis Excel

Les fichiers XML (Extensible Markup Language) servent à stocker des données .Celles si sont écrites entre balises ou sous forme d'attributs. L'ensemble est rédigé sous forme d'arborescence.
XML permet de stocker tous types d'informations et surtout de séparer les données et leur présentation .
XML permet un échange entre des systèmes informatiques ,et un transfert des données ( le fond ) et de leurs structures( la forme)
Ainsi, une balise destinée à accueillir une date sera définie comme telle dans le schéma et par la suite sera en mesure de délivrer sa valeur à un programme sans soucis de conversion d'une chaîne de caractères en date.
XML est un dérivé du HTML. Le HTML est le langage de balisage des pages Web. Il décrit seulement l’apparence du contenu :Le HTML ne peut pas identifier que ces données désignent par exemple un titre ou une date..., contrairement au XML dont les balises se rapportent à la signification et à la structure.
  • Comment utiliser un fichier XML au sein d'Excel 2003
    Un exemple sur le site Microsoft
  • Créer un fichier XML
    Remarque : si un fichier XML portant le meme nom existe dans le répertoire , celui-ci sera écrasé
    Sub creerFichierXML()
    'Source : http://www.c2i.fr/code.asp?IDCode=21
    Dim objDOM As DOMDocument
    Dim XNodeRoot As IXMLDOMElement, Xnode As IXMLDOMElement
    Dim oPi As IXMLDOMProcessingInstruction
    Set objDOM = New DOMDocument
    objDOM.resolveExternals = True
    Set oPi = objDOM.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
    Set oPi = objDOM.insertBefore(oPi, objDOM.childNodes.Item(0))
    Set XNodeRoot = objDOM.createElement("noeudRacine")
    objDOM.appendChild XNodeRoot
    Set Xnode = objDOM.createElement("Balise1")
    Xnode.setAttribute "At1", "Attribut1"
    Xnode.Text = "la Texte 1"
    XNodeRoot.appendChild Xnode
    Set Xnode = objDOM.createElement("Balise1")
    Xnode.setAttribute "At2", "Attribut2"
    Xnode.Text = "Le texte 2"
    XNodeRoot.appendChild Xnode
    Set Xnode = objDOM.createElement("Balise1")
    Xnode.setAttribute "At3", "Attribut3"
    Xnode.Text = "Le texte 3"
    XNodeRoot.appendChild Xnode
    objDOM.Save thisWorkbook.Path & "\leFichier.xml"
    Set XNodeRoot = Nothing
    Set Xnode = Nothing
    Set objDOM = Nothing
    End Sub
  • Insérer un commentaire dans un fichier XML
    Dim Cmt As IXMLDOMComment
    Set Cmt = objDOM.createComment("mon commentaire")
    Set Cmt = objDOM.insertBefore(Cmt, objDOM.childNodes.Item(0))
  • Ajouter un élément dans le fichier XML
    Sub ajouterElementFichierXML()
    Dim objElem As IXMLDOMElement
    Dim xmlDoc As DOMDocument
    Set xmlDoc = New DOMDocument
    xmlDoc.async = False
    xmlDoc.Load (thisWorkbook.Path & "\leDocument.xml")
    Set objElem = xmlDoc.createElement("Balise1")
    objElem.setAttribute "At4", "Attribut4"
    objElem.Text = "le Texte 4"
    xmlDoc.documentElement.appendChild objElem
    xmlDoc.Save thisWorkbook.Path & "\leDocument.xml"
    End Sub
  • Attendre que le document soit totalement chargé en mémoire avant de travailler dessus
    xmlDoc.async = False
  • Lire le contenu d'un fichier XML
    Option Explicit
    Dim j As Long
    Sub Test()
    Dim xmlDoc As DOMDocument
    Dim root As IXMLDOMElement
    Set xmlDoc = New DOMDocument
    xmlDoc.async = False
    xmlDoc.Load thisWorkbook.Path & "\leFichier.xml"
    Set root = xmlDoc.documentElement
    Cells(1, 1) = root.baseName
    j = 1
    browseChildNodes root
    j = 0
    End Sub
    Private Sub browseChildNodes(root_node As IXMLDOMNode)
    'Source : http://vb.developpez.com/faq/?page=Routines
    Dim i As Long
    For i = 0 To root_node.childNodes.Length - 1
    If root_node.childNodes.Item(i).nodeType <> 3 Then
    j = j + 1
    Cells(j, 1) = root_node.childNodes.Item(i).baseName & "/" & root_node.childNodes.Item(i).Text
    End If
    browseChildNodes root_node.childNodes(i)
    Next
    End Sub
  • Modifier un fichier XML par macro
    Sub modifierFichierXML()
    Dim xmlDoc As DOMDocument
    Dim Rt As IXMLDOMElement
    Set xmlDoc = New DOMDocument
    xmlDoc.async = False
    xmlDoc.Load thisWorkbook.Path & "\leDocument.xml"
    Set Rt = xmlDoc.documentElement
    parseNodes Rt
    xmlDoc.Save thisWorkbook.Path & "\leDocument.xml"
    End Sub
    Private Sub parseNodes(Rt_node As IXMLDOMNode)
    Dim i As Long
    For i = 0 To Rt_node.childNodes.Length - 1
    If Rt_node.childNodes.Item(i).Text = "Le texte 2" Then _
    Rt_node.childNodes.Item(i).Text = "la nouvelle donnée"
    parseNodes Rt_node.childNodes(i)
    Next
    End Sub
  • Remplacer un nœud dans un fichier XML .
    Sub remplacerNoeud()
    Dim xmlDoc As New DOMDocument
    Dim nodeRoot As IXMLDOMNode, Ancien As IXMLDOMNode, Nouveau As IXMLDOMNode
    Dim nodeTemp As IXMLDOMNode, Anciens As IXMLDOMNodeList
    Dim i As Integer
    xmlDoc.async = False
    With xmlDoc
    .Load "C:\monFichier.xml"
    Set nodeRoot = .documentElement
    Set Anciens = nodeRoot.selectNodes("//noeud_Actuel") 'remplacement du noeud nommé "noeud_Actuel"
    For Each Ancien In Anciens
    Set Nouveau = .createElement("mise_A_Jour") 'le noeud de remplacement sera nommé "mise_A_Jour"
    For Each nodeTemp In Ancien.Attributes 'Copie des attributs
    Nouveau.Attributes.setNamedItem (nodeTemp.cloneNode(True))
    Next
    For Each nodeTemp In Ancien.childNodes 'Copie des attributs et mise à jour données
    i = i + 1
    nodeTemp.Text = "nouvelle donnée " & i
    Nouveau.appendChild nodeTemp
    Next
    Ancien.parentNode.replaceChild Nouveau, Ancien
    Next
    .Save "C:\monFichier.xml"
    End With
    End Sub
  • Suivre les statuts de chargement et d'analyse d'un fichier XML : une démo de Gizmo
    Le lien sur le forum XLD
    Le fichier zippé
  • Exporter une table Access au format XML
    Sub exportTableAccess_XML()
    Dim Cn As ADODB.Connection
    Dim Rs As ADODB.Recordset
    Dim Fichier As String
    Fichier = "C:\Documents and Settings\michel\dossier\general\excel\dataBase.mdb "
    Set Cn = New ADODB.Connection
    Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
    Fichier & ";"
    Set Rs = New ADODB.Recordset
    With Rs
    .activeConnection = Cn
    .Open "SELECT * FROM Table1", , adOpenStatic, adLockOptimistic, adCmdText
    End With
    Rs.Save "C:\exportTableTemporaire.xml", adPersistXML
    'autre possibilité
    'Rs.Save "C:\tableTemporaire.xls", adPersistXML
    Cn.Close
    End Sub
  • Réimporter le fichier XML dans la table Access
    Sub reimportXML_versBaseAccess()
    Dim Rst As ADODB.Recordset
    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Fichier = "C:\Documents and Settings\michel\dossier\general\excel\dataBase.mdb "
    Set Rst = New ADODB.Recordset
    Rst.Open "C:\tableTemporaire.xml", , adOpenStatic, adLockBatchOptimistic, adCmdFile
    'Rst.Open "C:\tableTemporaire.xls", , adOpenStatic, adLockBatchOptimistic, adCmdFile
    Set Cn = New ADODB.Connection
    With Cn
    .Provider = "Microsoft.JET.OLEDB.4.0"
    .Open Fichier
    End With
    Set Rst.activeConnection = Cn
    Rst.updateBatch
    Rst.Close
    End Sub
  • Les recommandations pour l'utilisation du langage XML
    Le lien Internet
  • Gérer les erreurs liées à la manipulation des fichiers XML
    Cet exemple affiche un message lorsque le fichier XML ne peut pas etre chargé
    Sub gestionnaireErreurs_MSXML()
    Dim xmlDoc As MSXML2.DOMDocument
    Dim parseErr As MSXML2.IXMLDOMParseError
    Dim messageErreur As String
    Set xmlDoc = New DOMDocument
    xmlDoc.async = False
    xmlDoc.Load thisWorkbook.Path & "\test.xml"
    Set parseErr = xmlDoc.parseError
    With parseErr
    messageErreur = "Le fichier " & .URL & " ne peut pas etre chargé " & _
    vbCrLf & .reason & "Code erreur : " & Hex(.errorCode)
    End With
    msgBox messageErreur
    End Sub
  • Boucler sur les différents attributs(nom, type, date, taille) d'un fichier XML
    Le format du fichier XML à parcourir :
    <FICHIERS>
    <FICHIER nom="fichier.bmp" type="bmp" date="05/12/05 11:12" taille="12457" />
    <FICHIER nom="test124.txt" type="txt" date="15/02/06 19:42" taille="454" />
    <FICHIER nom="nouveau.ico" type="ico" date="14/01/06 00:54" taille="74714" />
    <FICHIER nom="presentation.swf" type="swf" date="27/09/05 17:18" taille="5467207" />
    </FICHIERS>
    Sub bouclerSurAttributs_V01()
    Dim xmlDoc As DOMDocument
    Dim xmlElem As IXMLDOMElement
    Set xmlDoc = New DOMDocument
    xmlDoc.async = False
    xmlDoc.Load "C:\Documents and Settings\michel\dossier\general\excel\leFichier.xm l"
    For Each xmlElem In xmlDoc.getElementsByTagName("FICHIER")
    msgBox xmlElem.getAttribute("nom")
    msgBox xmlElem.getAttribute("type")
    'msgBox xmlElem.getAttribute("date")
    'msgBox xmlElem.getAttribute("taille")
    Next
    End Sub
    Une autre possibilité
    Sub bouclerSurAttributs_V02()
    Dim xmlDoc As DOMDocument
    Dim i As Integer
    Set xmlDoc = New DOMDocument
    xmlDoc.async = False
    xmlDoc.Load "C:\Documents and Settings\michel\dossier\general\excel\leFichier.xm l"
    For i = 0 To xmlDoc.getElementsByTagName("FICHIER").Length - 1
    msgBox xmlDoc.getElementsByTagName("FICHIER").Item(i).Att ributes.getNamedItem("nom").Text & " / " & _
    xmlDoc.getElementsByTagName("FICHIER").Item(i).Att ributes.getNamedItem("taille").Text
    Next i
    End Sub
  • Extraire les données d'un fichier XML en appliquant un tri croissant sur un des attributs
    Voir le message du 15/02/2006 14:25:36
    Le lien Internet
  • Créer un fichier XML à partir d'un tableau Excel (La plage de cellules A1:F20)
    Option Explicit
    Option Base 1
    Sub tableauExcel_XML_V01()
    Dim xmlDoc As MSXML2.DOMDocument
    Dim xmLstring As String, Fichier As String, strQuote As String
    Dim Lig As Integer, Col As Integer
    Dim Attribut As Variant
    strQuote = """"
    Set xmlDoc = createObject("Microsoft.XMLDOM")
    xmLstring = "<?xml version=""1.0"" encoding=""ISO-8859-1"" ?> "
    xmLstring = xmLstring & "<FORM Name=" & strQuote _
    & "Test Tableau Excel vers xml" & strQuote & "> "
    Attribut = Array("Id", "Nom", "Date", "Type", "Url", "Adresse")
    For Lig = 1 To 20 ' le tableau Excel contient 20 lignes (1 à 20)
    xmLstring = xmLstring & "<CATEGORIE "
    For Col = 1 To 6 'le Tableau Excel contient 6 colonnes (A à F)
    xmLstring = xmLstring & Attribut(Col) & "=" & strQuote & Cells(Lig, Col) & strQuote & " "
    Next
    xmLstring = xmLstring & "></CATEGORIE>"
    Next Lig
    xmLstring = xmLstring & "</FORM>"
    xmlDoc.loadXML xmLstring 'charger le fichier pour pouvoir l'enregistrer
    Fichier = "C:\testExcel_XML.xml"
    xmlDoc.Save (Fichier) 'Sauvegarder le fichier xml
    End Sub
  • Afficher le contenu d'un fichier XML dans la fenêtre d'éxécution VBE :
    Sub contenuFichierXML_dansFenetreExecution()
    Dim xmlDoc As MSXML2.DOMDocument
    Dim XMLRoot As Object
    Set xmlDoc = New DOMDocument
    xmlDoc.async = False
    xmlDoc.Load thisWorkbook.Path & "\base xml\monFichier.xml"
    Set XMLRoot = xmlDoc.documentElement
    Debug.Print XMLRoot.XML
    Set XMLRoot = Nothing
    End Sub
  • Afficher le contenu d'un fichier XML dans un Treeview
    Option Explicit
    Dim oDoc As MSXML2.DOMDocument
    Private Sub commandButton1_Click()
    'La source :
    'http://www.vbcode.com/Asp/showzip.asp?ZipFile=http://www.vbcode.com%2Fcode%2FDOMTree.zip&theID=2683
    'Auteur : Bnaya Eshet
    Set oDoc = New DOMDocument
    oDoc.async = False
    oDoc.Load "C:\Documents and Settings\michel\dossier\general\excel\gerer fichiers XML\base xml\leDocument.xml"
    treeView1.Nodes.Clear
    addNode oDoc.documentElement
    End Sub
    Private Function addNode(byRef oElem As MSXML2.IXMLDOMNode, _
    Optional byRef oTreeNode As MSComctlLib.Node)
    Dim oNewNode As MSComctlLib.Node
    Dim oNodeList As MSXML2.IXMLDOMNodeList
    Dim i As Long
    If oTreeNode Is Nothing Then
    Set oNewNode = treeView1.Nodes.Add 'Creation du noeud racine
    oNewNode.Expanded = True
    Else
    Set oNewNode = treeView1.Nodes.Add(oTreeNode, tvwChild) 'Ajout d'un noeud enfant
    oNewNode.Expanded = True
    End If
    Select Case oElem.nodeType
    Case MSXML2.NODE_ELEMENT 'type Element
    oNewNode.Text = oElem.nodeName & " (" & getAttributes(oElem) & ")"
    Set oNewNode.Tag = oElem
    Case MSXML2.NODE_TEXT
    oNewNode.Text = "Text: " & oElem.nodeValue
    Set oNewNode.Tag = oElem
    Case MSXML2.NODE_CDATA_SECTION
    oNewNode.Text = "CDATA: " & oElem.nodeValue
    Set oNewNode.Tag = oElem
    Case Else
    oNewNode.Text = oElem.nodeType & ": " & oElem.nodeName
    Set oNewNode.Tag = oElem
    End Select
    Set oNodeList = oElem.childNodes 'boucle récursive pour ajouter tous les noeuds enfants
    For i = 0 To oNodeList.Length - 1
    addNode oNodeList.Item(i), oNewNode
    Next i
    End Function
    Private Function getAttributes(byRef oElm As MSXML2.IXMLDOMNode) As String
    Dim sAttr As String
    Dim i As Long
    sAttr = ""
    For i = 0 To oElm.Attributes.Length - 1 'boucle sur tous les attributs
    sAttr = sAttr & oElm.Attributes.Item(i).nodeName & "='" & oElm.Attributes.Item(i).nodeValue & "' "
    Next i
    getAttributes = sAttr
    End Function
  • Supprimer le noeud nommé "status" dans un fichier xml
    Sub supprimerNoeudConditionnel()
    Dim xmlDoc As DOMDocument
    Dim Nd As IXMLDOMNode
    Set xmlDoc = New DOMDocument
    xmlDoc.async = False
    xmlDoc.Load thisWorkbook.Path & "\base xml\monFichier.xml"
    For Each Nd In xmlDoc.documentElement.childNodes
    'Debug.Print Nd.baseName
    If Nd.baseName = "status" Then xmlDoc.documentElement.removeChild Nd
    Next Nd
    xmlDoc.Save thisWorkbook.Path & "\base xml\monFichier.xml"
    End Sub
  • Sauvegarder une feuille Excel au format XML
    Feuil1.saveAs Filename:="C:\maSauvegarde.xml", fileFormat:=xlXMLSpreadsheet
  • Utiliser un fichier XML pour sauvegarder (et recharger) les paramètres d'objets créés dynamiquement dans un Userform
    Cet exemple permet :
    D'ajouter et manipuler plusieurs Labels dynamiquement dans un Frame
    Sauvegarder les parametres des labels dans un fichier XML , afin de pouvoir y revenir plus tard sans perdre la mise en forme (Nom , Position , Dimension , Texte, Couleur de texte, Taille des caracteres) .Le fichier xml est enregistré dans le meme répertoire que ce classeur .
    Charger dans l'USF les parametres contenus dans le fichier xml .
    Le lien sur le forum XLD
    Le fichier zippé

Piloter Open Office à partir d'Excel
Afficher la page
Si vous constatez des erreurs dans la page n'hesitez pas à m'en faire part .
Toutes vos idees sont les bienvenues .
Michel , Mise à jour le 15 Septembre 2006

Dernière modification par MichelXld 08/03/2008 à 23h17.
MichelXld est déconnecté   Réponse avec citation
ANNONCES
Réponse



Outils de la discussion

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Discussions similaires
Discussion Auteur Forum Réponses Dernier message
[REF] Wiki Page 7 de MichelXld MichelXld Questions les plus fréquentes (FAQ) et didacticiels 0 08/03/2008 21h41
[REF] Wiki Page 6 de MichelXld MichelXld Questions les plus fréquentes (FAQ) et didacticiels 0 08/03/2008 21h36
[REF] Wiki Page 3 de MichelXld MichelXld Questions les plus fréquentes (FAQ) et didacticiels 0 08/03/2008 17h27
[REF] Wiki Page 2 de MichelXld MichelXld Questions les plus fréquentes (FAQ) et didacticiels 0 08/03/2008 17h15
[REF] Wiki Page 1 de MichelXld MichelXld Questions les plus fréquentes (FAQ) et didacticiels 0 08/03/2008 17h07


Fuseau horaire GMT +2. Il est actuellement 14h30.


(C) 2006 Excel Downloads