« Macros-commandes VBA/Création de Tableau croisé » : différence entre les versions

Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (- qu'à + qu’à )
m Robot : Remplacement de texte automatisé (- l'opposition + l’opposition , - d'asile + d’asile , - s'adresser + s’adresser , - l'ensemble + l’ensemble , - d'argent + d’argent , - l'argent + l’argent , - l'augmentation + l’augmentat...
Ligne 14 :
De plus, c’est un outil totalement modulable et personnalisable. Sa particularité est qu’il est dynamique. On entend par dynamique, le fait que le tableau soit modulable en fonction des besoins d'analyse mais aussi par le fait qu’il prenne en compte toutes les modifications apportées au tableau brut, cela permet ainsi d’actualiser les données du TCD. En effet, on peut choisir les données que l’on veut faire apparaître en colonne et en ligne même après avoir généré un premier TCD. L'utilisateur a le choix de la fonction de regroupement, il peut également décider des champs à utiliser pour réaliser son analyse.
 
Grâce au TCD il est également possible d'afficher plusieurs fonctions (des moyennes, des sommes, etc.).
 
{{Exemple
Ligne 23 :
Au cours de l’année les salariés de l’entreprise X regroupent dans un tableau les différentes résiliations de la manière suivante :
 
[[FileFichier:Données de l'entreprise X.JPG|center|Base de données de l'entreprise X]]
 
En fin d’année, le chef de service veut analyser les motifs de résiliations les plus courants. Son but : comprendre la raisons de la résiliation des clients et mettre en oeuvre une solution pour y remédier. Les membres de son service réalisent alors le TCD suivant :
 
[[FileFichier:TCD de l'entrerprise X.JPG|center|TCD de l'entrerprise X]]
 
Ainsi, le chef de service peut en conclure que le motif de résiliation qui revient le plus souvent est le prix. Il pourra alors appliquer une solution pour réduire les prix et conserver ses clients.
Ligne 73 :
 
La démarche est alors simple :
* Sélectionner les données
* Cliquer sur l'onglet « insertion »
* Cliquer sur « tableau croisé dynamique »
* Une boîte de dialogue s'affiche (Annexe 1) [[FileFichier:Créer un TCD.JPG|thumb|Annexe 1 : Boîte de dialogue pour créer un TCD]]
* Sélectionner "nouvelle feuille de calcul" ou "feuille de calcul existante"
* Cliquer sur "Ok"
 
{{Conseil|contenu=Lors de la sélection des données, il est conseillé de sélectionner les colonnes afin que la sélection s'effectue jusqu'en bas. Cela évite de devoir redéfinir la source du TCD à chaque nouvelle saisie dans la base de données.}}
Ligne 92 :
'''1ère étape : L’enregistreur'''
* Cliquer sur l'onglet « Affichage » ou sur l'onglet "Développeur"
* Cliquer sur « enregistrer une macro », une boite de dialogue va alors s'ouvrir (annexe 2) avec les rubriques suivantes : [[FileFichier:Boîte de dialogue pour enregistrer une macro.JPG|thumb|Annexe 2 : Boîte de dialogue pour enregistrer une macro]]
** Nom de la macro, ex : « ActualiserTCD »
** Touche de raccourci
Ligne 103 :
 
'''2e étape : Analyse du langage Visual Basic'''
* Cliquer sur « Macro »
* Cliquer sur la macro crée : « ActualiserTCD » ;
* Cliquer sur « Modifier » ;
 
Ou passer par Visual Basic dans "outil"
Ligne 122 :
</source>
 
Il est important d’examiner les actions qui ont été enregistrées par Excel.
 
C’est d’autant plus important lorsque la macro ne s’exécute pas comme on le souhaite. On peut rapidement voir où se trouve l’erreur d’écriture.
 
De plus, analyser la macro permet également d’apporter des modifications. En effet, lors de l’enregistrement, on a tendance à vouloir aller trop vite, et on clique sur des boutons qu’il ne faut pas. Toutes ces manipulations inutiles peuvent être supprimées.
Ligne 154 :
 
La démarche est alors la suivante :
[[FileFichier:Boîte de dialogue pour affecter une macro.JPG|thumb|Annexe 3 : Affecter une macro à un bouton]]
* Insérer une forme ou une image en cliquant sur l'onglet insertion, ex : un rectangle
* Modifier la mise en forme et ajouter un texte s'il s'agit d'une forme, ex de texte : « Cliquer ici pour actualiser le TCD »
* Faire un clic droit sur la forme et cliquer sur « Affecter une macro »
* Une boîte de dialogue va s'ouvrir (Annexe 3), sélectionner la macro « ActualiserTCD » et cliquer sur OK
 
== Comment créer automatiquement un TCD à l’aide d’une macro ? ==
Ligne 164 :
==== Démarche ====
 
Pour automatiser la création du TCD, on peut passer par la méthode de l’enregistreur.
 
La démarche est la suivante :
Ligne 170 :
'''''1ere étape : Création de la macro'''''
 
* Activation de l’enregistreur
* Nommer la macro : « CREERTCD » ; « OK »
* Sélection des données : sélectionner les colonnes afin que cela prenne en compte toutes les lignes en cas d’ajout de données
* Insertion du TCD : « Insertion » ; « Tableau croisé dynamique »
* Choisir d’imposer ou non les champs du TCD à l’utilisateur :
** Si oui, choisir les rubriques à mettre dans « Etiquettes de colonnes » ; « Etiquettes de lignes » , « Filtre du rapport » ; « Valeurs »
** Si non, passer à l’étape suivante
* Actualiser le TCD : Clic droit ; « Actualiser » (cette étape permet de prendre en compte les lignes supplémentaires entre la saisie des données du tableau et la création du TCD)
* Choix des champs du TCD
* Arrêter l’enregistreur
 
'''''2e étape : Exécution de la macro'''''
 
Il y a une erreur qui survient lorsque l’on utilise l’enregistreur pour automatiser la création d’un TCD. En effet, si l’on exécute la macro, une boîte de dialogue s’ouvre (annexe 4). [[FileFichier:Annexe 4 Boîte de dialogue erreur macro.JPG|thumb|Annexe 4 : Boîte de dialogue lorsqu’il y a une erreur d'écriture]]
 
Cette dernière a pour rôle d’indiquer lorsqu’il y a une erreur d’écriture dans la macro.
Ligne 233 :
Pour résoudre le problème, il faut supprimer quelques lignes :
 
* Il faut effacer la valeur qui se trouvait dans : TableDestination
Cela revient à : TableDestination = ""
* Supprimer les lignes :
Sheets.add ;
Sheets (« sheetname »).Select ;
Ligne 243 :
'''''5e étape : L’écriture finale pour automatiser la création d’un TCD'''''
 
* Sans contrainte des champs :
<source lang=vb>
Sub CREERTCD()
Ligne 268 :
{{Remarque|contenu=Il est possible de modifier les intitulés des colonnes uniquement lorsque les champs ne sont pas définis dans la macro.}}
 
* Avec contrainte des champs :
<source lang=vb>
Sub CREERTCDCHAMPS()
Ligne 309 :
 
'''''6e étape : Création d'un bouton'''''
* Créer un bouton : Insertion d'une forme
* Ajouter un texte : clic droit ; "modifier le texte" ; exemple : "CREER UN TCD"
* Affecter la macro : clic droit ; "affecter une macro" ; choisir la macro ; "OK"
 
==== Avantages ====
 
* La macro est générée automatiquement par l’enregistreur
 
* Méthode simple lorsque l’on ne connaît pas le langage pour créer un TCD
 
* Permet de se familiariser avec le langage VBA
 
* Les champs en lignes et en colonnes ne sont pas imposés
 
==== Inconvénients ====
 
* La macro peut seulement faire les actions que l’on a enregistré
* Lorsqu’il y a une erreur, la macro ne fonctionne pas du tout
 
* Il faut parfois revenir sur l’écriture
* Il n’est pas évident de comprendre le problème de l’écriture lorsqu’il y a une erreur
 
=== Test avec langage Visual Basic ===
Ligne 351 :
*"N" pour non-réglé
 
[[FileFichier:Adhérents.PNG|thumb|Tableau de base "Adhérents"]]
La démarche de notre programmation est la suivante :
<br />
Ligne 369 :
<br />
Voici ci-dessous ce que nous obtenons :
[[FileFichier:TCD Adhérents vide.PNG|thumb|TCD Adhérents vide]]
<br />
5. Ajouter les champs, une fois le TCD crée. L'utilisateur programme les champs qu’il veut insérer dans son TCD : en ligne, en colonne et en valeur.
Ligne 422 :
 
Voici le résultat attendu :
[[FileFichier:TCD Adhérents.PNG|thumb|TCD Adhérents|left]]
}}
 
Ligne 430 :
 
==== Avantages ====
Les avantages de la création d'un TCD automatique avec le langage Visual Basic :
 
* Automatisation des tâches répétitives.
 
* Suppression des erreurs humaines dès lors que le programme est débogué et qu’il n'y a pas de modification de la structure des données de base.
 
* Une fois créé, c’est un gain de temps pour l'utilisateur.
 
* Simplification de la transmission des connaissances à d'autres utilisateurs.
 
* Harmonisation de la structure d'un TCD pour un ensemble d'utilisateurs. Le TCD "officiel" ne pourra pas prendre une autre forme que celui programmé.
 
==== Inconvénients ====
Les inconvénients de la création d'un TCD automatique avec le langage Visual Basic :
 
* Nécessite une connaissance technique d'Excel et VBA pour développer le programme et le déboguer.
 
* Demande un investissement en temps au départ pour mettre en oeuvre la solution finalisée.
 
* Demande une transmission des savoirs lors des changements d'organisation du travail.
 
== Comment peut-on paramétrer un TCD ? ==
Ligne 483 :
 
Voici les autres constantes disponibles pour la propriété Function, que l’on peut appliquer de la même manière que xlAverage ci-dessus :
* xlAverage - Moyenne
* xlCountNums - Nb
* xlMin - Min
* xlStDev - Ecartype
* xlSum - Somme
* xlVar - Var
* xlCount - Nombre
* xlMax - Max
* xlProduct - Produit
...
 
Ligne 512 :
Nous avons la possibilité de paramétrer les sous-totaux de notre TCD. Cela permettra à l'utilisateur de figer ce mode de calcul et de l'automatiser.
 
* Nous pouvons tout d’abord enlever les sous-totaux de l'ensemblel’ensemble des champs du TCD :
 
<source lang=vb>
'
' Cette procédure parcourt l'ensemblel’ensemble des champs d'un TCD afin de leur enlever les sous-totaux s'ils existent
'
Sub EnleverSousTotauxDuTCD()
Ligne 595 :
 
Voici ce que l’on obtient pour l'exemple 2 :
[[FileFichier:TCD - Extrait Valeur spécifique1.PNG|thumb|TCD - Extrait Valeur spécifique1]]
}}