Professional Documents
Culture Documents
Tous les modules présents dans ce classeur sont des modules objet (c'est à dire associés à des
objets particuliers, ou permettant de définir un nouvel objet dans le cas du module Class1), à
l'exception du module standard Module1, qui n'est associé à aucun objet.
Le module ThisWorkbook contient, par définition, les procédures événementielles
associées au classeur.
Selon l'objet concerné par l'événement auquel on veut associer une procédure, on utilisera le
module approprié :
Type de module Evénements associés à...
Module de feuille feuille de calcul particulière et objets placés sur cette feuille
Module graphique feuille graphique particulière et objets placés sur cette feuille
Classeur (ThisWorkbook) classeur, collection de toutes les feuilles et fenêtres du classeur
UserForm boîte de dialogue (UserForm) et contrôles inclus
Module de classe application, collection de toutes les feuilles, fenêtres et classeurs
Comme on le voit dans ce tableau, un module objet permet de gérer non seulement les
événements de l'objet associé au module lui-même (feuille, classeur ou UserForm), mais aussi les
objets qu'il contient, par exemple l'ensemble des feuilles contenues par un classeur, ou encore les
contrôles (boutons, cases à cocher...) placés dans une feuille de calcul.
3. Création d'une procédure événementielle
La liste des événements que l'on peut intercepter par des procédures VBA est prédéterminée. Les
feuilles de calcul disposent par exemple de 7 événements et les classeurs de 19 événements
prédéfinis. Il n'est pas possible de créer des procédures pour des événements qui ne sont pas
prédéterminés par l'application.
- Evénements de feuilles de calcul, de classeur ou de UserForm
Supposons que l'on veuille créer une procédure qui se déclenche automatiquement dès que
l'utilisateur modifie manuellement la valeur inscrite dans la cellule A1 de la feuille "Feuil1". La
procédure est la même que celle indiquée en introduction :
- Sous VBE, double-cliquer sur l'icône 'Feuil1' du classeur dans l'explorateur de projets, afin
d'ouvrir sa feuille de code.
- Comme tout module de code, celui-ci comporte deux listes déroulantes.
La liste de gauche permet de sélectionner la section du module que l'on veut atteindre : la
section Général est destinée aux déclarations de variables globales et aux fonctions ou
procédures non-événementielles. Les autres sections concernent les procédures événementielles
associées aux objets. Ici, comme la feuille ne contient pas de contrôles, un seul objet apparaît
dans cette liste, l'objet Worksheet représentant la feuille de calcul elle-même.
Après sélection de Worksheet dans cette liste déroulante, les événements concernant la feuille
de calcul apparaissent dans la fenêtre de droite.
Il est possible de définir tout type de variable WithEvents dans n'importe quel module objet, et non
pas seulement dans les modules de classe.
- Affectation d'objets aux variables WithEvents
Les variables déclarées WithEvents sont à l'origine non initialisées, et ne référencent aucun objet
particulier. Pour que leurs procédures événementielles soient activées, il faut d'abord leur affecter
un objet. Cette affectation peut se faire n'importe où dans le code, ou alors dans la procédure
Workbook_Open si l'on veut que la procédure événementielle soit active dès l'ouverture du
classeur.
A partir du moment où la variable est initialisée et qu'elle référence un objet particulier, la ou les
procédures événementielles attachées à cette variable se "connectent" à l'objet concerné et
deviennent opérationnelles. Pour annuler cette connexion, il suffit de détruire la référence à l'objet
en affectant Nothing à la variable.
L'intérêt des variables WithEvents est relativement limité pour les objets dont on peut programmer
directement les procédures événementielles. En revanche, ces variables sont nécessaires pour
intercepter les événements des graphiques incorporés et de l'application Excel, qui ne disposent
d'aucun module objet.
3. Les événements de graphiques incorporés
Contrairement aux feuilles graphiques autonomes, les graphiques incorporés aux feuilles de calcul
ne disposent d'aucun module objet. En revanche, on peut leur associer les mêmes procédures
événementielles, à condition de passer par des variables WithEvents.
Dans l'exemple suivant, la variable "Graph" sert à intercepter l'événement Calculate d'un
graphique incorporé dans une feuille de calcul. A chaque changement d'une ou plusieurs valeurs
dans la plage de données, la procédure Graph_Calculate ajuste automatiquement les extrémités
de l'axe des ordonnées en fonction des valeurs minimale et maximale représentées sur le
graphique (avec une marge de 5% par rapport à l'intervalle entre ces deux valeurs).
Dim WithEvents Graph As Chart
Application.ScreenUpdating = False
' Recherche des ordonnées minimale et maximale
With Graph.SeriesCollection
ReDim Valeurs(1 To .Count)
For I = 1 To .Count
Valeurs(I) = .Item(I).Values
Next I
End With
Min = Application.Min(Valeurs)
Max = Application.Max(Valeurs)
ReDim Valeurs(0)
' Redimensionnement de l'axe des ordonnées
Marge = (Max - Min) * 0.05
Min = IIf(Min >= 0 And Min - Marge < 0, 0, Min - Marge)
Max = Max + Marge
With Graph.Axes(xlValue)
If .MinimumScale <> Min Then .MinimumScale = Min
If .MaximumScale <> Max Then .MaximumScale = Max
End With
End Sub
Ce code peut être placé dans n'importe quel objet du classeur, mais il est préférable de le mettre
dans le module de la feuille de calcul contenant le graphique. Pour que la procédure
Graph_Calculate soit opérationnelle, il faut encore connecter la variable Graph au graphique
concerné. Cette affectation peut se faire dans la procédure Workbook_Open du classeur pour que
la procédure soit activable dès son ouverture.
Par exemple, pour connecter la variable au premier graphique de Feuil1 :
Private Sub Workbook_Open()
Set Feuil1.Graph = Feuil1.ChartObjects(1).Chart
End Sub
Pour désactiver notre procédure événementielle, il suffit de "déconnecter" la variable Graph de
l'objet graphique :
Set Feuil1.Graph = Nothing
Si nous avons défini par ailleurs une autre variable "Graph2" de type Chart disposant de sa propre
procédure Graph2_Calculate, il est possible d'affecter l'objet graphique à cette deuxième variable :
Set Feuil1.Graph = Feuil1.ChartObjects(1).Chart
Set Feuil1.Graph2 = Feuil1.ChartObjects(1).Chart
De cette manière, le graphique disposera de deux procédures événementielles Calculate, celle de
la variable Graph et celle de la variable Graph2. Quand des données sources du graphique
changeront de valeur, ces deux procédures se déclencheront successivement. En affectant
Nothing à l'une des variables ou aux deux, on peut désactiver chacune de ces procédures
événementielles.
Cette méthode permettant d'enchaîner plusieurs procédures événementielles n'est pas spécifique
aux objets Chart, mais peut s'appliquer à tout objet pouvant être connecté à des variables
WithEvents.
4. Les événements de niveau Application
Tout comme les procédures événementielles de graphiques incorporés, celles de l'objet
Application ne peuvent être programmées qu'à l'aide de variables WithEvents, l'application Excel
ne disposant pas de son propre module objet.
Ces procédures permettent d'intercepter des événements de niveau Application, c'est à dire se
déclenchant indépendamment de toute feuille ou classeur ouvert. Elles ont toutes leurs
équivalents de niveau feuille de calcul et classeur. Pour intercepter des saisies de l'utilisateur
dans des cellules, on dispose ainsi de trois niveaux de procédures :
- Worksheet_Change (module objet d'une feuille) : intercepte les saisies faites dans une feuille de
calcul particulière.
- Workbook_SheetChange (module objet ThisWorkbook) : intercepte les saisies faites dans
n'importe quelle feuille du classeur.
- App_SheetChange (liée à la variable WithEvents "App", de type Application) : intercepte les
saisies faites dans n'importe quelle feuille de tout classeur ouvert.
Pour illustrer la différence entre ces trois niveaux, supposons que l'on veuille mettre en place une
procédure événementielle qui mette automatiquement en majuscule toute saisie de texte dans
une cellule. La procédure à utiliser et son module objet ne sont pas les mêmes selon la portée que
l'on veut attribuer à cette procédure (feuille de calcul particulière, classeur entier ou toute feuille de
calcul ouverte dans l'application).
- Feuille de calcul particulière
Dans le module objet de la feuille concernée :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Count > 1 Or VarType(Target) <> vbString _
Or Target.HasFormula Then Exit Sub
Application.EnableEvents = False
Target = UCase(Target)
Application.EnableEvents = True
End Sub
- Toute feuille du classeur
Dans le module ThisWorkbook du classeur :
Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Target As Excel.Range)
If Target.Count > 1 Or VarType(Target) <> vbString _
Or Target.HasFormula Then Exit Sub
Application.EnableEvents = False
Target = UCase(Target)
Application.EnableEvents = True
End Sub
- Toutes les feuilles de tous les classeurs ouverts
Dans le module ThisWorkbook ou tout autre module objet :
Dim WithEvents App As Application
Sub ActiverWord()
With ThisWorkbook
' Connexion de la variable WRD du module ThisWorkbook
' avec une nouvelle instance de Word,
' Affichage et activation de la fenêtre Word
Set .WRD = New Word.Application
.WRD.Visible = True
.WRD.Activate
End With
Set Wksht = Worksheets.Add
Wksht.Visible = False
I = 0
End Sub
De la même manière, il est possible de piloter les événements de toute autre application
supportant la déclaration WithEvents à partir d'une macro Excel.
IV. Evénements dynamiques et modules de classe
La documentation existante sur les procédures événementielles dynamiques, en particulier celles
de l'application, présente très souvent celles-ci comme une caractéristique réservée aux modules
de classe. En réalité, du moment que tous les modules objet (par exemple un module de feuille de
calcul ou le module ThisWorkbook) acceptent la déclaration de variables WithEvents, tous
peuvent servir à créer des événements dynamiques, quel que soit le type d'objet rattaché à ces
événements.
Toutefois, les modules de classe présentent des avantages indéniables. Au lieu de définir des
procédures événementielles de l'application à l'intérieur du module ThisWorkbook, par exemple,
on peut regrouper ces procédures dans un module de classe que l'on nommerait "Application". De
cette manière, les procédures événementielles sont clairement réparties dans des modules objet
distincts selon les objets auxquels elles se rattachent (module ThisWorkbook pour le classeur,
modules de feuille pour les feuilles de calcul et modules de classe particuliers pour l'application ou
d'autres objets éventuels).
En plus d'un code mieux structuré, les modules de classe permettent surtout, indirectement,
d'attacher des procédures événementielles dynamiques à des tableaux ou collections d'objets,
ce qui n'est normalement pas possible compte tenu du fait que le mot-clé WithEvents ne peut pas
servir à définir des variables de type tableau.
1. Exemple : événements de l'application et modules de classe
Les modules de classe représentent également un espace de stockage bien adapté aux
procédures événementielles de niveau Application. Ils permettent de regrouper toutes ces
procédures dans un module unique distinct des procédures liées au classeur. De cette manière, la
gestion des événements de niveau classeur peut être réservée au module ThisWorkbook, les
événements de niveau Application étant réservés au module de classe. Le code est ainsi mieux
structuré et plus lisible.
La technique pour créer des procédures événementielle dans un module de classe est la même
que pour tout autre module objet, à quelques différences près :
- La variable "App" du module de classe doit être déclarée Public pour que l'on puisse lui affecter
l'objet Application à partir d'un autre module.
- Un module de classe servant en principe à définir une nouvelle classe d'objet, et non l'objet lui-
même, il est nécessaire de l'instancier en créant un objet fondé sur cette classe. Pour cela, il faut
déclarer dans un autre module une variable ayant cette classe comme type, et affecter à cette
variable un nouvel objet (une nouvelle instance de la classe). Il faudra donc prévoir, d'une part,
dans le module de classe, une variable "App" destinée à connecter les procédures
événementielles à l'objet Application :
Public WithEvents App As Application
Et dans un autre module :
. La déclaration de la variable destinée à instancier la classe :
Dim MonApplication As Nom_du_module_de_classe
. L'instanciation de la classe à l'intérieur de cette variable :
Set MonApplication = New Nom_du_module_de_classe
. Enfin, l'affectation de l'application Excel en cours à la "propriété" App de notre instance de
classe :
Set MonApplication.App = Application
Si l'on reprend l'exemple du paragraphe III.4 en utilisant un module de classe
nommé "Evts_Application" à la place de ThisWorkbook, le code à utiliser dans le module de
classe est similaire au précédent, à la différence près que la variable WithEvents est déclarée ici
Public:
Public WithEvents App As Application
End Sub
Ce genre de code est beaucoup plus simple à gérer si l'on utilise une variable de
type Collection à la place d'une variable tableau, comme le montre l' exemple suivant:
Dim Obj_Graph As Collection
End Sub
Dans les deux cas (tableau ou collection), autant d'instances de Classe_Graph qu'il y a de
graphiques incorporés dans le classeur seront automatiquement créées, donc autant d'instances
de la variable Graph. Les événements attachés à cette variable (Graph_Activate,
Graph_Calculate...) seront déclenchés dès que l'utilisateur effectuera des manipulations sur
n'importe lequel des graphiques incorporés dans le classeur.
Avec cette méthode, il est possible d'élargir les procédures événementielles à d'autres objets en
redimensionnant le tableau (ou en ajoutant un élément à la collection), en affectant au nouvel
élément une nouvelle instance de la classe puis en affectant à la variable Graph de cette instance
une référence vers l'objet concerné. De même, pour annuler les procédures événementielles pour
un objet particulier, il suffit d'affecter Nothing à l'élément du tableau correspondant (ou à sa
variable Graph), ou encore de détruire l'élément de la collection par 'Obj_Graph.Remove
Num_Index'.
V. Quelques procédures événementielles courantes
Avec les feuilles de calcul, les UserForms et leurs contrôles respectifs, les feuilles graphiques, les
classeurs, l'objet Application, Excel dispose d'un nombre important de procédures
événementielles prédéfinies. Commenter toutes ces procédures dépasserait de très loin le cadre
de cette page.
Les procédures événementielles commentées ci-dessous sont des procédures fréquemment
employées et dont l'utilisation réclame quelques précautions particulières.
1. Evénements de feuilles de calcul
Ces événements peuvent être gérés au niveau d'une feuille de calcul particulière, du classeur ou
de l'application.
Procédure Evénement associé
Activate Activation de la feuille
BeforeDoubleClick Double-clic sur la feuille par l'utilisateur
BeforeRightClick Clic droit sur la feuille
Calculate Calcul d'une formule ou recalcul automatique de la feuille
Change Entrée de valeur(s) dans une plage
Deactivate Désactivation de la feuille
SelectionChange Changement de la plage sélectionnée
- L'événement Change
Cet événement se produit dès qu'une ou plusieurs valeurs sont modifiées ou saisies dans une
feuille de calcul. Dans les modules de feuilles, l'en-tête est :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
La variable Target transmet à la procédure la cellule ou la plage dont le contenu a été modifié. Il
est important de noter qu'il peut s'agir d'une cellule unique, d'une plage de plusieurs cellules,
ou encore d'uneunion de plages discontinues.
Si l'utilisateur change le contenu de la cellule A1, le paramètre Target contiendra la référence
d'une cellule unique. S'il modifie en bloc la plage A1:A10 par Ctrl-Entrée ou par recopie
incrémentée, ce paramètre référencera la plage A1:A10. S'il sélectionne la plage A1:A10 et la
plage B1:B10 avant d'en modifier la valeur par Ctrl-Entrée, le paramètre Target contiendra une
union de plages.
Pour éviter toute erreur à l'exécution, la procédure Worksheet_Change doit donc prendre en
compte le fait que Target peut contenir plusieurs cellules, et modifier celles-ci par l'intermédiaire
d'une boucle.
Voici par exemple comment compléter l'exemple mentionné plus haut (mise automatique en
majuscules) en tenant compte de cette possibilité et en optimisant le code :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Fin:
' Rétablissement des paramètres de l'application
Application.Calculation = ModeCalcul
Application.EnableEvents = True
End Sub
Il est recommandé d'intégrer un gestionnaire d'erreur et de désactiver la touche Echap pour
pouvoir rétablir les paramètres de l'application en cas d'interruption prématurée de la procédure.
Si l'exécution était par exemple interrompue avant le rétablissement de la propriété EnableEvents
sur True, cette procédure événementielle ainsi que toutes les autres seraient ensuite désactivées.
Comme le paramètre Target peut contenir une référence à plusieurs cellules, il est également
nécessaire de passer par la fonction Intersect pour tester la modification d'une cellule particulière.
Par exemple, le code suivant empêche l'utilisateur d'effacer le contenu de la cellule A1 :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If Not IsEmpty(Range("A1")) Then Exit Sub
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End Sub
La première ligne sort de la procédure si la cellule concernée (A1) ne fait pas partie de la plage
modifiée. Si elle en fait partie et si son contenu a été effacé, l'action de l'utilisateur est annulée afin
de replacer dans la cellule son contenu précédent.
- L'événement Calculate
Cet événement se produit après tout recalcul de la feuille.
L'événement Calculate complète l'événement Change en ce sens qu'il permet de détecter des
changements de valeur par calcul dans des cellules contenant des formules.
Contrairement à Change, la procédure Calculate ne dispose pas de paramètre Target. Il n'est
donc pas possible de détecter quelles sont les cellules dont le contenu a été modifié à l'issue du
recalcul. pour cela il est nécessaire de passer par une ou plusieurs variables stockant le contenu
antérieur de la ou des cellules dont on veut intercepter le changement de valeur.
Dans le code suivant, un message est affiché à chaque fois que la cellule A1 de la feuille Feuil1
change de valeur, que ce soit par saisie manuelle (Worksheet_Change) ou calcul de formule
(Worksheet_Calculate). La variable ValPrec sert à vérifier si cette valeur a changé en stockant la
valeur précédente de la cellule et en la comparant à sa nouvelle valeur.
' Dans le module objet de Feuil1 :
Public ValPrec
End Sub
Si l'utilisateur annule la fermeture en cliquant sur Annuler, le paramètre Cancel est mis sur True,
ce qui désactive la fermeture du classeur (voir annulation d'événement) et 'Exit Sub' sort de la
procédure. Le classeur est donc toujours ouvert, mais la barre d'outils n'a pas été supprimée.
Cette technique peut être utilisée dans toutes les situations où la procédure
Workbook_BeforeClose doit nettoyer l'environnement de la fenêtre Excel avant la fermeture du
classeur.
Les macros complémentaires XLA ne posent pas ce genre de problème, car elles ne demandent
pas de confirmation à la fermeture. En principe, les procédures AddinInstall et AddinUninstall sont
nettement mieux adaptées à ce type d'application que Workbook_Open et
Workbook_BeforeClose.
3. Evénements de l'application
Les événements de niveau Application reprennent tous ceux liés aux feuilles de calcul
(SheetActivate, SheetCalculate...) et aux classeurs (WorkbookOpen etc.). Le seul événement
nouveau est NewWorkbook, qui se déclenche à la création d'un nouveau classeur.
Pour finir, voici un exemple très simple de procédure Workbook_Open de niveau Application.
Cette procédure de macro XLA change le répertoire courant par celui du dernier classeur ouvert.
Par exemple, si on ouvre le classeur "C:\Temp\Test.xls" en le sélectionnant directement dans la
liste des derniers classeurs ouverts du menu Fichier, le répertoire courant (celui de la boîte de
dialogue "Ouvrir") devient "C:\Temp\". Ce n'est pas le comportement par défaut sous Excel 97.
Dim WithEvents XL As Application
Présentation
Morefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel, conçue
et développée par Laurent Longre.
Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que
Windows, ni sur d'autres tableurs.
Ce complément est écrit en C++ et contenu dans un fichier XLL, c'est à dire une DLL capable de s'interfacer avec
Excel. La rapidité du code compilé permet d'obtenir une vitesse de calcul souvent comparable à celle des fonctions
intégrées d'Excel.
Morefunc est distribué en tant que Freeware. L'installation est entièrement automatisée.
Il est utilisable en deux langues, français ou anglais, et est accompagné d'une aide en ligne détaillée.
Photo d'écran
Démo
Cliquez ici pour visionner une petite démo de Morefunc (3,3 Mo, nécessite Macromedia Flash Player).
Installation et utilisation
Installation et déploiement
Incorporer Morefunc dans un classeur (Excel 2003 et antérieur)
Utilisation des fonctions
Nouvelles fonctions
Dernière modification (5.06) : ajout de la fonction REGION.
Pour l'historique et plus de détails, voir le Changelog.
Date et heure
DIFFDATE Renvoie la durée écoulée entre deux dates en nombre d'années, mois et jours
Information
EVAL Evalue une expression donnée sous forme de texte
INDIRECT.EXT Renvoie le contenu d'une cellule ou d'une plage contenue dans un classeur fermé
XLM.LIRE.CELLULE Renvoie des informations sur la mise en forme, la position ou le contenu d'une cellule
Mathématiques
ALEAS Renvoie une série d'entiers à partir de 0 ou 1 arrangés aléatoirement sans répétition
NP.SUIVANT Renvoie le plus petit nombre premier supérieur ou égal au nombre indiqué
Statistiques
ECARTYPE.GROUPE Evalue l'écart-type d'une population groupée en classes
Texte
ANSI128 Enlève les accents d'une chaîne de caractères
REGEX.NBCAR Renvoie le nombre de caractères d'une expression régulière trouvée dans un texte
REGEX.SUBSTITUE Remplace des caractères dans un texte en utilisant une expression régulière
STEXTE Renvoie un mot ou groupe de mots situé à une certaine position dans un texte
Tri automatique
TRIH Trie les colonnes d'une plage ou un tableau (jusqu'à 14 clés de tri)
TRIV Trie les lignes d'une plage ou un tableau (jusqu'à 14 clés de tri)
Autres fonctions
DECALERFEUILLE Renvoie une plage décalée d'une ou plusieurs feuilles
Support
Vous souhaitez poser des questions, faire des suggestions, signaler des problèmes ou des bugs ? Visitez le forum.
Exemples de formules
Un classeur contenant un certain nombre d'exemples est fourni avec Morefunc. Pour ouvrir ce classeur, cliquez sur
Exemples dans le menu Outils => Morefunc (Excel 97-2003) ou dans le menu Morefunc => Support de l'onglet
Formules (Excel 2007).
Installation et déploiement
Déployer Morefunc
Les classeurs utilisant Morefunc nécessitent la présence de ce complément pour bien fonctionner.
Pour diffuser Morefunc, vous pouvez évidemment utiliser le programme d'installation. Si vous voulez opter pour
une solution moins lourde, vous pouvez procéder ainsi :
1. Ouvrez l'Editeur VBA (Alt+F11) et double-cliquez sur le module ThisWorkbook du classeur utilisant
Morefunc,
2. Copiez cette procédure dans la fenêtre de code (ou complétez-la si elle est déjà présente) :
Private Sub Workbook_Open()
Workbooks.Open ThisWorkbook.Path & "\Morefunc.xll"
End Sub
Il suffit ensuite de joindre les fichiers Morefunc.xll et Morefunc.ini (à chercher dans le répertoire d'installation du
programme) au classeur concerné. Ces trois fichiers doivent se trouver dans le même répertoire pour que le
complément fonctionne.
Si vous ne souhaitez pas charger automatiquement Morefunc par macro, donnez la consigne au destinataire du
classeur d'ouvrir Morefunc.xll (par le menu Fichier) avant d'ouvrir le classeur.
Cliquez sur le bouton VBAXL pour voir un tas d'exemples de macros!!! VBAXL
NETIQUETTE DU FORUM.
A l'intention des personnes qui viennent pour la première fois sur le forum Microsoft.Public.Fr.Excel
A lire: La Netiquette du Forum MPFE
Vous pourrez en savoir plus sur La Netiquette en consultant notamment ce document :
La Netiquette et Usenet.fr
Index des Questions/Réponses. Mise à jour du samedi 11 Septembre 2010 à 13h19 [top]
GENERALITES
Quel est le site archive du forum MPFE?
Le forum sur "Le site du Support Microsoft France"
Où trouver un lexique donnant la correspondance
des termes VBA et Fonctions anglais en français?
Normalisation de l'écriture de code
Quels sont les paramètres de lancement d'Excel?
Glossaire des termes et abréviations utilisés sur le forum
Peut-on joindre des pièces à une question ?
Peut-on répondre par une pièce jointe ?
Les tableurs: origine
Excel: Les logos
QUESTIONS RITUELLES
Combien y a t-il de colonnes disponibles dans Excel?
Les limitations d'Excel 2000
Conversion de nombre en lettre
Où trouver un logiciel pour récupérer et /ou réparer un fichier Excel97 endommagé.
Comment récupérer des données d'un fichier endommagé?
Comment figer l'écran pendant l'execution d'une macro ?
Comment supprimer l'apparition du message de confirmation lors de la suppression
d'une feuille ?
Comment remplacer le point par une virgule ?
Comment faire des calculs avec les heures négatives ?
Comment supprimer une liaison vers un autre fichier, sachant que ce fichier a été
supprimé ....?
Est-il possible de coloriser les onglets sous Excel comme on peut le faire sous
Quattro ?
Comment faire pour incrémenter un numéro de facture à chaque ouverture d'un
modèle?
Comment supprimer un module nommé Toto du classeur test.xls?
Comment Activer Le Num(ou Caps) Lock À Chaque Lancement D' Excel?
Comment récupérer le nom d'utilisateur d'un poste ?
Comment utiliser les fonctions Excel dans une procédure Visual Basic?
Comment supprimer le message "Voulez-vous activer les macros ... ?" au démarrage
d'Excel ?
Comment changer le logo Excel ?
Traduction des fonctions Français-Anglais
Comment utiliser Msmap d'excel 97 avec xl 2003 ?
Comment utiliser Microsoft Note-It d'Excel 5 avec Excel 2003 ?
Comment vider le Presse-Papier?
CELLULES ET PLAGES
Comment trouver la première cellule vide?
Comment déplacer une sélection?
Comment remplacer G178 par la valeur de ma variable Ligne dans:
For Each Cell In Range("G2:G178")?
Je voudrais créer une macro me permettant d'aller à la dernière ligne + 1
d'une colonne X et d'y faire un total ?
Peut-on paramètrer la police du commentaire avant la création de ce dernier? ?
Comment enregistrer une plage en fichier html ?
Comment enregistrer une plage en fichier texte ?
Existe-il un moyen pour parcourir toutes les cellules de la zone d'impression ?
Comment masquer toutes les lignes pour lesquelles une cellule particulière est vide ?
Comment trouver l'adresse de la cellule qui contient la plus grande valeur ?
Comment connaître la lettre de la colonne et le n° de la ligne ?
Comment multiplier les éléments d'un tableau et renvoyer ce tableau ?
Comment utiliser "ReDim" dans un tableau ?
Comment supprimer certains caractères dans toutes les cellules ?
Comment rechercher un mot dans toutes les feuilles ?
Comment rechercher un mot et le remplacer par un autre?
Comment faire pour insérer une ligne sur deux?
Comment déplacer ou détruire les lignes contenant une occurence?
Comment faire clignoter une cellule?
Quelle est la différence entre UsedRange et CurrentRegion? Denis Martin
Comment limiter la zone de scroll ?
Un fond transparent pour une plage de cellule. Daniel.j
DATES
Comment avoir les dates avant 1900?
Comment avoir le numéro de la semaine?
Je recherche à afficher automatiquement le 1er jour du mois d'une cellule...
"LA" fonction VBA de conversion de date dans le calendrier républicain de Laurent
Longre.
Comment vérifier si la date inscrite est bien un lundi?
et comment donner le lundi suivant et précédent?
Comment insérer la date de modification du classeur automatiquement ?
Comment convertir des données en dates ?
Astuce facilitant le report de dates entre classeurs n'utilisant pas le même
calendrier ?
Installer un chronomètre. Papou
FICHIER - FEUILLE
Comment compter le nombre de feuilles dans un classeur ?
Comment activer la feuille suivante d'un classeur ?
Comment copier un classeur complet?
Comment supprimer tous les fichiers d'un répertoire?
Puis comment supprimer ce répertoire ?
Comment protéger et déprotéger une feuille par mot de passe ?
Comment protéger toutes les feuilles du classeur?
Comment supprimer tous les noms d'une feuille ou d'un classeur ?
Comment ignorer les espaces pour transformer les noms de feuilles en hyperliens ?
Comment fermer tous mes classeurs Excel ouverts à l'exception de 3 ?
Est-il possible de partager un classeur et de pouvoir aussi utiliser les macros de ce
classeur?
Comment faire faire une rotation à 90° à un tableau Excel, en conservant les formules
?
Comment connaître la taille en octet du classeur ?
Sauvegarde automatique de Thomas Corvaisier
Comment classer les onglets?
Comment supprimer les feuilles 1, 2 et celle nommée zaza?
Comment empêcher l'affichage de la boite de dialogue
"Voulez vous sauvegarder le document?" à la fermeture du fichier ?
Comment sélectionner les feuilles de l'onglet "Début" à l'onglet "Fin" ?
Comment se débarrasser d'un fichier?
Comment supprimer tous les noms définis qui contiennent "Fact"? Daniel.J
Comment avoir le nom du serveur ? Laurent DAURES
Comment zipper des fichiers automatiquement? Sébastien KRECKE
Comment récuperer des données d'un classeur fermé?
Comment déplacer un fichier?
Comment fermer un classeur Excel après 15 minutes d'inactivité?
GRAPHIQUES
Comment juxtaposer histogramme et ligne horizontale? Serge Garneau
Les droites de régression de Serge Garneau
Un paquet d'échantillon de Serge Garneau
Comment tracer une ellipse avec excel ? de Serge Garneau
Triangle de Pascal à la sauce fractale de Serge Garneau
Patente triangulaire avec coordonnées 3D quelconques. de Serge Garneau
Un peu d'arpentage... de Serge Garneau
Graphique à données variables... de Daniel.J
Planche de Galton....pour épater !!! de Serge Garneau (Réussi... :O) Dj)
Graphique et calcul intégral de Serge Garneau
Créer des courbes le plus facilement du monde de Serge Garneau
Compilations de notes avec affichage des maudites étiquettes de Serge Garneau
Ce document permet de miser sur les résultats d'une élection de Serge Garneau
introduction aux applications possibles d'Excel pour le calcul différentiel et intégral.
de Serge Garneau
Comment inserer un logo dans tous les graphiques du classeur?
IMPRESSION
Comment récupérer le nom de l'imprimante active?
Comment imprimer le fond de page ?
Comment imprimer des plages discontinues?
OUTIL
Comment ajouter une fonction au petit menu de la barre d'état
(en bas à droite qui s'affiche sur un clique droit)?
Comment créer une entrée "Ouvrir avec XL 97" dans le menu contextuel Windows?
Bouton1 et CommandButton1: DIFFERENCE
Minimiser toutes les fenêtres
Comment désinstaller Excel ou un autre logiciel d'Office proprement?
Une série de boutons "exemples" dans une barre d'outil
Comment insérer un module et construire une macro dans ce module?
Comment créer un bouton et y affecter une macro ?
Comment créer un raccourci Internet par VBA?
Comment créer un raccourci d'un fichier xls par VBA?
Comment lister les polices?
Comment supprimer la barre de tâche Windows?
Comment exécuter une macro dont le nom est dans une cellule?
Comment exécuter 2 actions sur un même bouton par alternance?
Comment réorganiser les fenêtres de l'éditeur VB?
Comment protéger un classeur à l'ouverture?
Un menu paramètrable à partir d'une feuille de calcul ! John Walkenbach
USERFORM
Comment empêcher la fermeture d'un userform avec la croix?
Pourquoi mettre Load UserForm1 avant la commande UserForm1.Show?
Comment installer une barre de progression lors de l'exécution d'une macro?
Comment imprimer une Userform telle qu'elle apparaît à l'écran?
Comment insérer un gif animé dans un Userform ?
Comment récupérer la première ligne de texte d'une zone de texte ? MichDenis
Comment faire pour activer un userform et avoir accès aux feuilles de calcul?
Attaquer un objet par son nom - John Fuss
Test
Teste si une touche a été tapée pendant l'éxecution d'une macro. Daniel (VBAXL)
TELECHARGEMENT.
Sauvegarde automatique de Thomas Corvaisier
Des trucs et astuces issus du forum - Une DOC de J@C
Construction d'un arbre généalogique. Une macro de JF Campion
Formules et fonctions par l'exemple. Un classeur de JJ. Hinet
Plus de 3500 boutons proposés sous forme de macros complémentaires!
Une simulation d'emprunt!
Un classeur spécial dates de Frédéric Sigonneau.MAJ du 24/08/01
Un tableau de couleurs nom et code,très pratique pour les macros. de J.Thiernesse
Un exemple de barre de progression de John Walkenbach
Un petit classeur exemple de conversion Francs/Euros
Une macro complémentaire Francs/Euros de Pascal Robin.MAJ 26/12/01
Macro de conversion Francs/Euros de Daniel FIEUX
Des exemples simples de procédures événementielles
Graphique 3D
Fonctions EXCEL V.1.0 de Jean Pierre Costa
Multiplication musulmane
Le Bouromètre (Mesure du taux d'alcool dans le sang)
Affichage dynamique des fichiers récents de Patrick Penet
Graphique: Echantillonnage de Serge Garneau
Statistiques: Fonctions de base de Serge Garneau
Un ensemble de procédures et de fonctions complémentaires de Philippe Noss
Des exemples des propriétés TextBox de Benoît Cornille
Elucubration arithmétique et boîte de boutons de Serge Garneau
FunCustomize: Permet de personnaliser les fonctions VBA dans l'assistant fonctions.
Laurent Longre
Haut du formulaire
Rechercher
Web dj.joss.free.fr
xcell05.free.fr
Bas du formulaire
GENERALITES
Quel est le site archive du forum MPFE?
Site archive du forum MPFE
Deja.com a rendu l'âme et vendu ses fichiers à google!
http://groups.google.com/advanced_group_search
Le forum sur "Le site du Support Microsoft France"
http://www.microsoft.com/france/excel/newsgroup/default.asp
Où trouver un lexique donnant la correspondance
des termes VBA et Fonctions anglais en français?
Pour Excel 97 : ..\Office\listevba.xls
Pour Excel 2000 : ..\Office\1036\vbalist.xls
Pour Excel 2002 (XP) : ..\Office10\1036\vbalist.xls
Normalisation de l'écriture de code
1- Les pièces jointes ne sont pas souhaitées par un grand nombre d'internautes car elles sont
rapidement volumineuses (surtout si c'est un classeur Excel) et reçues par des centaines de personnes
qui n'en ont rien à faire et ne l'ouvriront même pas en raison du risque de virus ou parce que la
question ne les intéresse pas. Les tarifs des opérateurs de télécoms tiennent forcément compte des
volumes (certains services "illimités" ont fermé pour avoir ignoré cette loi du marché) quoi qu'on en
dise.
2- Une question doit être expliquée, on ne peut se contenter d'envoyer un classeur en disant "corrigez-
moi ça", le lecteur peut se sentir agressé qu'on lui balance ce "devoir à faire" sans même s'être donné
la peine d'exposer le pb. Ceux qui ne chargent pas les pièces jointes n'ont d'ailleurs même pas la
question.
3- Un texte de macro recopié dans le message occupe peu de place, c'est la solution idéale. Si la
macro est entière et que son texte soit long (ou pour éviter que les lignes ne soient saucissonnées en
raison de la limitation des longueurs de lignes) l'exporter en .bas. Il occupe alors peu de volume et
sera alors toléré par les abonnés au forum. De plus il ne comporte pas de risque de virus tant qu'on ne
l'a pas exécuté.
4- On ne transmet un classeur qu'aux personnes qui l'ont sollicité (et accepté de prendre ce risque), il
est souhaitable dans ce cas d'utiliser les logiciels de compression; le format zip est quasi universel
maintenant.
Quand il s'agit d'une réponse, on la fait directement à la personne concernée et on met un message
sur le forum pour indiquer que la réponse a été donnée en bal. Si une autre personne est intéressée
elle sollicitera aussi la réponse.
Les tableurs: Origine
Au début était Visicalc de Dan Bricklin et Bob Frankston. En 1979 !!!
Ensuite Lotus 1.2.3
Et puis en 1988 Excel pour PC qui supplanta 1.2.3.
Les differentes versions d'excel
A l'origine, Microsoft a commercialisé un tableur appelé Multiplan en 1982.
Il n'y a pas eu de version 1.0 pour éviter la confusion avec la version d'Apple.
1987 - Excel 2.0 for Windows
1990 - Excel 3.0
1992 - Excel 4.0
1993 - Excel 5.0
1995 - Excel pour Windows 95 (version 7.0) – inclut aussi dans Microsoft Office 95
1997 - Excel 97 (version 8.0) - inclut aussi dans Microsoft Office 97
1999 - Excel 2000 (version 9.0) inclut aussi dans Office 2000
2001 - Excel 2002 (version 10) inclut aussi dans Office XP
2003 - Excel 2003 (version 11) inclut aussi dans Office 2003
2007 - Excel 2007 (version 12) inclut aussi dans Office 2007
[index]
QUESTIONS RITUELLES
Combien y a t-il de colonnes disponibles dans Excel?
256 colonnes et c'est tout !!!
Mais 65536 lignes.
Comment supprimer une liaison vers un autre fichier, sachant que ce fichier a été
supprimé ....?
Téléchargez FinLink.zip qui ce trouve sur le site de Stephen Bullen à l'adresse:
http://www.oaltd.co.uk/MVP/Default.htm
Ou à la main :
Dans le classeur lié :Edition/Liaisons/Modifier la source
Donner le chemin du classeur (celui qui contient les formules avec liaison)
Cela supprimera la liaison avec l'autre classeur.
Est-il possible de coloriser les onglets sous Excel comme on peut le faire sous Quattro ?
NON...Impossible pour l'instant! ni avec 97 ni avec 2000
Excel 2010..vous dites ?! Ah Bon ?
C'est maintenant possible avec la version "XP" ou 2002 (v. 10)...
Comment faire pour incrémenter un numéro de facture à chaque ouverture d'un modèle?
Ci-dessous une solution qui suppose que ton modèle ("Fact.xlt" dans le code
ci-dessous) contienne une cellule nommée (Insertion\Nom\Définir) "numFact", cellule
où s'inscrira le numéro incrémenté.
Frédéric S.
Sub TestLock()
Dim KeyState(0 To 255) As Byte
GetKeyboardState KeyState(0)
KeyState(&H90) = 1 'Num Lock
'KeyState(&H14) = 1 'Caps Lock
SetKeyboardState KeyState(0)
End Sub
Function UserName()
Dim S As String
Dim N As Long
Dim Res As Long
S = String$(200, 0)
N = 199
Res = GetUserName(S, N)
UserName = Left(S, N - 1)
End Function
Comment utiliser les fonctions Excel dans une procédure Visual Basic ?
Il faut passer par l'objet WorksheetFunction.
Par exemple, l'utilisation de la fonction MIN:
Sub UseFunction()
Dim maPlage As Range
Set maPlage = Worksheets("Feuil1").Range("A1:C10")
réponse = Application.WorksheetFunction.Min(maPlage)
MsgBox réponse
End Sub
Comment supprimer le message "Voulez-vous activer les macros ... ?" au démarrage
d'Excel ?
Menu "outils"-"macro"-"sécurité"-"niveau de sécurité"-niveau bas
Comment utiliser Msmap d'excel 97 avec xl 2003 ? Fonctionne aussi avec Excel 2007
Microsoft Note-It est un petit utilitaire fonctionnant avec Excel 5 et Windows 3.1
servant à ajouter des commentaires (des notes) dans une feuille de calcul.
L'ancêtre des commentaires et annotations en quelques sortes.
Le petit avantage réside dans le fait qu'une image est associée au commentaire
(ce qui peut agrémenter de manière sympathique votre feuille de calcul)
et qu'un double clique sur cette image affiche le commentaire, il est aussi possible d'affecter une
macro à cette image.
1) Téléchargez l'archive ci-dessous composée des 3 fichiers: note-it.exe, note-it.help et note-it.reg.
noteit.zip 37 ko
3) Ouvrez le fichier de registre "note-it.reg" avec le bloc-note et vérifiez que la portion de ligne en
italique corresponde bien avec l'emplacement du fichier note-it.exe. :
HKEY_CLASSES_ROOT\Note-It\protocol\StdFileEditing\server = C:\Program Files\Fichiers
communs\Microsoft Shared\Note-It\NOTE-IT.EXE
Fermez et enregistrez.
4) Double-cliquez sur le fichier "note-it.reg" pour le fusionner avec votre base de registre.
Sauvegardez par prudence votre base de registre si vous le désirez.
Les manipulations décrites ci-dessus sont sans risque.
Ou bien
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Sub VidePP()
OpenClipboard 0
EmptyClipboard
CloseClipboard
End Sub
[index]
CELLULES ET PLAGES
Méthode 2:
[A65536].Select
Selection.End(xlUp)(2).Select
Méthode 3:
Range("A1").Select
While IsEmpty(ActiveCell) = False
ActiveCell.Offset(1, 0).Activate
Wend
Sub ModifCommentaires()
Dim Wksht As Worksheet, C As Comment
For Each Wksht In Worksheets
For Each C In Wksht.Comments
C.Shape.OLEFormat.Object.Font.Size = 12
Next C
Next Wksht
End Sub
Des infos:
http://touareg.citeweb.net/aideinformatique/actioncellule.htm
Une petite contribution à la recherche de la lettre de colonne, histoire de varier les plaisirs !
sub cherchCOL()
MsgBox Mid(ActiveCell.Address, 2, InStr(2, ActiveCell.Address, "$") - 2)
end sub
AV
Sub Tabx2()
Dim myTab As Variant
Dim y As Integer
Dim x As Integer
myTab = Selection.Value
'Boucle pour chaque colonne
For y = LBound(myTab, 2) To UBound(myTab, 2)
'Boucle pour chaque ligne
For x = LBound(myTab, 1) To UBound(myTab, 1)
'Multiplie chaque élément de la sélection par 2
myTab(x, y) = myTab(x, y) * 2
Next x
Next y
'Renvoie le tableau dans la sélection
Selection.Value = myTab
End Sub
Sub InputTab()
Dim NbValeur As Integer
Dim Item As Variant
Dim myTab() As Integer
ReDim myTab(0) 'Initialisation du tableau
Do
NbValeur = Application.InputBox("Tapez un nombre", Type:=1)
myTab(UBound(myTab)) = NbValeur
ReDim Preserve myTab(UBound(myTab) + 1)
Loop Until NbValeur = False
'Annulation de l'initialisation
ReDim Preserve myTab(UBound(myTab) - 1)
Sub InsererLignes()
For compteur = 1 To 20
With Selection.Font
.Name = "Arial"
.Size = 14
.ColorIndex = 2
End With
Application.Wait Now + TimeValue("00:00:01")
'Pour augmenter la vitesse du clignotement
'Application.Wait Now + (TimeValue("00:00:01")) / 2
With Selection.Font
.Name = "Arial"
.Size = 14
.ColorIndex = 0
End With
Application.Wait Now + TimeValue("00:00:01")
Next
End Sub
'If you define a new Style (Format / Style / Flash/ Add ) and apply
'that style to the cells you want to flash, paste the following code
'into a module sheet and run the procedure Flash from Auto-Open if
'desired you will get the text flashing alternately white and red.
Sub Flash()
NextTime = Now + TimeValue("00:00:01")
With ActiveWorkbook.Styles("Flash").Font
If .ColorIndex = 2 Then .ColorIndex = 3 Else .ColorIndex = 2
End With
Application.OnTime NextTime, "Flash"
End Sub
Sub StopIt()
Application.OnTime NextTime, "Flash", schedule:=False
ActiveWorkbook.Styles("Flash").Font.ColorIndex = xlAutomatic
End Sub
Quelle est la différence entre UsedRange et CurrentRegion? Denis Martin
Voyons la différence entre UsedRange et CurrentRegion
en posant l'hypothèse que la feuille "Feuil1" contient 4 plages de cellules différentes, à savoir:
A1:D9
B12:D14
E18:G24
H14:J16
UsedRange
UsedRange permet de sélectionner une plage de cellules qui comporte des plages de cellules
discontinues.
Précision de AV:
Il serait peut-être bon d'ajouter que le "UsedRange" délimite la plage en
incluant les cellules vides si celles-ci ont été formatées d'une façon
quelconque (même si ont les remet au format standard ensuite...), ce qui, dans
certaines manips sur les plages, ne manque pas de réserver qques surprises ;-)
AV
Sub testUsedRange()
Worksheets("Feuil1").Activate
ActiveSheet.UsedRange.Select
'// Permet de sélectionner la plage de cellules A1:J24
'// qui inclut nos 4 plages de cellules discontinues contenues dans la feuille Feuil1..
End Sub
CurrentRegion
CurrentRegion permet de sélectionner la plage de cellules où se trouve le pointeur de cellule
si celui-ci est situé dans cette plage de cellules.
Si le pointeur de cellule est situé sur une cellule contigüe à la plage de cellules,
alors la plage de cellules et les cellules contigües aux rangées ou aux colonnes de cette plage
qui sont situées sur la même rangée ou colonne du pointeur de cellule sont sélectionnées.
Si le pointeur de cellule est situé à l'intersection d'une colonne et d'une rangée contigües à la plage de
cellules,
alors la plage de cellules, la colonne et la rangée situées sur la même rangée ou colonne du pointeur
de cellule sont sélectionnées.
sheets("Feuil1").Activate
eCell.CurrentRegion.Select '// Ici, ActiveCell fait référence au pointeur de cellules.
ur rétablir:
ActiveSheet.ScrollArea = ""
Une image transparente pour une plage de cellule. Daniel.j
Excel 2003 - L'astuce consiste à insérer une image vide et transparente
(un gif transparent créer avec Photoshop par exemple)
et de la remplir avec l'image qui servira de toile de fond à la plage de cellule.
Il est en plus tout a fait possible de modifier par la suite les cellules de la plage
en les sélectionnant avec les touches de direction du clavier.
Téléchargez le fichier, vous y trouverez la marche à suivre et un exemple.
fondtransparent.zip 32 ko
DATES
Plus court
Pour trouver le 1er jour du mois:
=A1-JOUR(A1)+1
Un appel de fonction au lieu de trois avec =DATE(ANNEE(A1);MOIS(A1);1)
Daniel M.
"LA" fonction VBA de conversion de date dans le calendrier républicain de Laurent Longre.
http://xcell05.free.fr/pages/form/dateheure.htm
Précision de Daniel M.
Dans TestJour(), les algos pour trouver les Lundi suivant/précédent ne
fontionnent pas avec une date de départ le dimanche.
Il vaut mieux:
Sub TestJour2()
Dim DateDuJour As Date, LundiNext As Date, LundiPrev As Date
DateDuJour = CDate(Range("A1").Value)
If Weekday(DateDuJour) = 2 Then
MsgBox "Le " & DateDuJour & " est bien un lundi."
Else
LundiPrev = DateDuJour - Weekday(DateDuJour - 2)
LundiNext = DateDuJour + 7 - Weekday(DateDuJour - 2)
MsgBox "Le " & DateDuJour & " n'est pas un lundi." & vbNewLine &
vbNewLine & _
"Le lundi précédent est le: " & LundiPrev & vbNewLine & _
"Le lundi suivant est le: " & LundiNext, vbOKOnly, "Test du Jour"
End If
End Sub
Règle 2 – Dans la première ligne : uniquement et seulement les titres de colonnes retour
La première ligne de la feuille contient toujours et uniquement les titres et doit se trouver en ligne 1 :
Si vous voulez ajouter des boutons, des grands titres ou d’autres informations, augmentez la hauteur de la
première ligne et ajoutez un cadre blanc au dessus (outils de dessin) pour améliorer la lisibilité et la navigation
dans le fichier. On se trouve alors sur un autre plan que les données et ceci fonctionne correctement :
Encore une fois, l’idée est de n’avoir que les données sur la feuille au niveau des cellules, et rien d’autre.
Règle 3 – Pas de cellules vides dans les titres de colonnes. retour
En effet, vous perdez l’information concernant le contenu de la colonne et en plus, vous ne pourrez pas utiliser
correctement les tableaux croisés dynamiques.
Un corollaire de cette règle est de ne JAMAIS utiliser de cellules fusionnées, que ce soit pour les titres de
colonnes ou à l’intérieur de la table.
Aucune cellule vide dans cette colonne ne doit exister, en d’autres termes, chaque ligne doit avoir une clef. Ceci
permettra d’effectuer un comptage du nombre de lignes (fonction nombre dans les tableaux croisés
dynamiques), ou encore de retrouver rapidement une fiche papier si la base a été saisie à partir de données
papier.
Dans le cas où vous utilisez des noms dynamiques, cela permet aussi de définir la hauteur d’une table de
données (plus d’information sur les noms dynamiques
ici :http://www.polykromy.com/html/poly_main_cours_decaler.html).
Règle 6 – Pas de lignes et colonnes vides retour
En laissant une ligne ou une colonne vide, vous risquez de ne travailler que sur une partie de la table
(reconnaissance automatique de la table par Excel).
Règle 10 – Positionner les données numériques et les calculs dans la partie droite de la tableretour
De manière générale, on met les données numériques et les calculs à droite de la table de données. Ceci
permet de localiser rapidement les calculs, mais aussi de respecter une certaine logique dans la lecture des
informations. Finalement, lors de la construction d’un tableau croisé dynamique, cela permet de plus facilement
créer des tableaux complexes.
De manière assez logique, on essaiera aussi de faire en sorte que l’enchainement des formules se fasse de
gauche à droite. Ceci permet d’améliorer la vitesse d’exécution ainsi que la lisibilité des formules (et donc
d’éviter des erreurs).
Règle 11 – Utiliser les tableaux d’Excel retour
Introduit et enrichit progressivement au fur et à mesure des versions d’Excel, l’utilisation des tableaux (autrefois
appelés Liste sous 2003) s’avère relativement efficace notamment pour saisir des données directement dans le
tableau. Voici comment les mettre en place :
- 2003 : Menu données, puis Liste
- 2007 : Sélectionnez votre plage de données, puis dans l’onglet Accueil, choisir Mettre sous forme de tableau
Puis sélectionnez la colonne de la ville dans votre table de données et choisissez Données – Validation, puis
dans le menu déroulant, Liste. Finalement, ajouter = liste_villes dans la zone “Source”.
Il ne reste plus qu’à utiliser la zone de liste déroulante disponible lorsqu’on se trouve sur la cellule :
En respectant ces 13 règles vous pourrez construire des tables/listes/tableaux de données faciles à utiliser,
rigoureux et solides.
Si vous en voyez d’autres n’hésitez pas à laisser un commentaire ci-dessous…
L’étape suivante consistera à analyser vos données… Je viens de finir la v2 d’un outil très puissant pour cela
que vous invite à essayer : http://www.xltab.com/?q=node/2 (vidéo de présentation du produit)
A bientôt
Gaetan
PS : Il y a beaucoup de débats sur la sémantique autour des tables/listes/tableaux de données. Au final, on
parle globalement de plus ou moins de la même chose : une structure avec des titres de colonnes et des lignes
reprenant les données.
Vidéos
Bonjour à tous,
Suite à la question de Danielle, voici une adaptation de la macro créée ici pour rapatrier les cellules contenant
un mot dans une seule feuille.
Pré-requis : ce post
Objectif : rapatrier toutes les cellules contenant une chaîne de texte
Fichier final : ici
Vous pouvez trouver ici une présentation vidéo des fonctionnalités de ce fichier, puis en dessous une
description détaillée du code utilisé. (note : Pour ne pas voir la barre de contrôle de la vidéo, positionnez votre
curseur en dehors de la vidéo)
Et voici la description détaillée du code :
N’hésitez pas à laisser vos commentaires si besoin.
A bientôt.
Gaëtan
L’outil espion
Posted in Formules et fonctions, Vidéos on March 9th, 2010 by site admin – Be the first to comment
Lorque vous construisez des feuilles de calculs un peu complexes, il est parfois très utile de pouvoir revenir sur
des formules ou encore de situer la provenance d’un chiffre spécifique.
Voici une courte démonstration de cet outil sous 2007:
Sous Excel 2003, vous pouvez l’afficher via le menu Affichage – Barres d’outils – Espions
Bonjour à tous,
Il y a maintenant très longtemps (glups ), j’avais posté une astuce pour afficher des images que l’on modifie
en fonction du contenu d’une cellule :
http://www.polykromy.com/html/poly_main_cours_decaler.html
En faisant une recherche sur internet, je suis tombé sur une application de simulation de table de montage vidéo
qui utilise ce cours et le combine à la gestion du temps sur Excel pour simuler un petit film d’animation.
Bien sur, ca n’a rien à voir avec une table de montage professionnelle, mais je trouve l’idée intéressante d’un
point de vue pédagogique; aussi bien pour comprendre les bases de la création de vidéos/dessins animés, que
pour comprendre les fonctionnalités avancées d’excel.
Voici le lien du fichier :
http://excelsciences.site.voila.fr/Mentrard/filmexcel.xls
A bientôt
Gaëtan Mourmant
Et une autre vidéo qui explique comment ajouter une image dans un userform et ensuite comment la modifier
par du code VBA.
Ca se passe ici :
http://www.polykromy.com/vba-2007/1_charge_image_fr.html
Pour les utilisateurs d’excel 2003, vous accédez au VBE par ALT+F11, ou encore Outils – Macros.
La sécurité des macros se gère au même endroit.
Bon amusement
Gaëtan Mourmant
Tout d’abord pour ceux qui passent à Excel 2007 et veulent continuer à utiliser le VBA, voici 4 mn de vidéos qui
pourront vous faire gagner 1 heure de recherche et potentiellement beaucoup beaucoup plus (si vous
sauvegardez votre fichier sous le mauvais format, et perdez tout votre code VBA, par exemple).
Au programme :
– afficher le menu développeur
– modifier rapidement les paramètres de sécurité
– Ne jamais sauvegarder en format *.xlsx
La vidéo est ici (n’hésitez pas à agrandir votre navigateur, en général, la touche F11) :
http://www.polykromy.com/vba-2007/1_param_vba_2007_fr.html
Cordialement
Gaëtan