IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

macro/fonction simple qui ne recalcule pas après modif [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 6
    Points
    6
    Par défaut macro/fonction simple qui ne recalcule pas après modif
    bonjour ---

    une macro (pour en faire une fonction) simple qui permet d'identifier la couleur de la police de caractère utilisée dans telle cellule (l'avais trouvée quelque part sur le net):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function FGCol(MyRef As Range) As Long
    FGCol = MyRef.Font.Color
    End Function
    (en modifiant le nom, FGCell par exemple, ainsi que la 2e ligne en MyRef.Interior.Color, on arrive à identifier la couleur de fond de telle cellule)

    je me suis rendu compte que, après que la fonction a été installée dans une cellule et qu'elle a donné un résultat, celui-ci n'est pas modifié si je change la couleur de la police de caractère de la cellule visée (et F9 ne fait rien non plus) ???!!!

    quelqu'un/e peut m'aider?! --- merci d'avance

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir.

    En début de fonction, tu ajoutes Cordialement,

    PGZ

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 981
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 981
    Points : 29 023
    Points
    29 023
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le changement de couleur de police ou la modification de la couleur intérieure d'une cellule malgré Application.volatile ne provoque pas un recalcul de la fonction.
    Il faut pour cela modifier la valeur de la cellule ou utiliser le pinceau.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    pgz, merci pour le "volatile"
    merci pour tous les commentaires en fait

    ce qui est intéressant, c'est qu'il faut ensuite actionner F9 pour que le résultat soit mis à jour
    alors qu'avec une formule simple du genre A1+A2 dans la cellule A3 est immédiatement corrigée si on change soit A1 soit A2 (des nombres)

    c'est dû à quoi?!

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 981
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 981
    Points : 29 023
    Points
    29 023
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Les fonctions volatiles font exceptions à la règle des autres fonctions d'excel qui ne mettent à jour leurs résultats que si la valeur d'un ou plusieurs de leurs paramètres est modifiés.
    Si en A11, on fait la somme de A2:A10 et que l'on modifie la valeur d'un de ces cellules alors la fonction SOMME refera le calcul.
    Les fonctions volatiles par contre recalculent leur valeur chaque fois que l'on modifie une valeur de n'importe quelle cellule, de n'importe quel classeur ouvert.
    Les fonctions volatiles sont : ALEA, ALEA.ENTRE.BORNES, AUJOURDHUI, CELLULE, DECALER, INDIRECT, INFO et MAINTENANT
    Dans le cas qui nous occupe, le fait de modifier un format ne provoque pas un recalcul parce-qu'il ne s'agit pas d'une modification de valeur mais d'un format.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function FGCol(MyRef As Range) As Long
     FGCol = MyRef.Font.Color
    End Function
    En faisant un Copier/Collage Spécial-Format ou en utilisant le pinceau cela provoque un recalcul automatique de la fonction si MyRef est égal à A3 et que le Copier/CollageSpecial a eu lieu sur A3.
    Par contre si on a mis Application.volatile dans la fonction et que l'on fait un Copier/CollageSpecial-Format sur une autre cellule le recalcul aura également lieu.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    merci corona
    Citation Envoyé par corona Voir le message
    Dans le cas qui nous occupe, le fait de modifier un format ne provoque pas un recalcul parce-qu'il ne s'agit pas d'une modification de valeur mais d'un format.
    ah oui, j'aurais dû savoir ça!

    j'ai une autre question :

    maintenant j'ai cette nouvelle fonction =FGCol() qui est utilisable uniquement dans le fichier où je l'ai installée

    comment fait-on déjà pour que cela devienne accessible dans n'importe quel nouveau fichier excel? (ç'a à voir avec "normal", non?!)

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 981
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 981
    Points : 29 023
    Points
    29 023
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Les macros Excel, en langage VBA, peuvent être contenues :
    1) Dans un fichier d’extension .XLS. Les macros sont attachées à ce fichier qui les contient et ne sont disponibles que lorsque celui-ci est ouvert.
    2) Dans un fichier d'extension .XLT (Modèle). Les macros sont attachées au modèle et à tous fichiers créé au départ de ce modèle .
    3) Dans le fichier de macros personnelles (PERSO.xls). Ce fichier étant lancé à l'ouverture d'excel les macros contenues dans celui-ci sont accessibles au départ de tous les fichiers ouverts. Le fichier PERSO.xls est caché mais peut-être rendu visible par le menu Fenêtre/afficher
    4) En tant que macros complémentaires ou compléments dans un fichier d’extension .XLA. Dans ce cas là, les macros sont chargées au lancement d’Excel si elles ont été sélectionnées par la commande Outils/Macros complémentaires... Le fichier .XLA est caché et ne peut être rendu visible par le menu Fenêtre/Afficher. De plus la ou les macros contenues dans ce fichier n’apparaissent pas dans la liste des macros disponibles (raccourci de commande ALT+F8). Par contre si un fichier macro complémentaire contient des fonctions elles sont accessibles directement par la commande fx qui se trouve sur la barre des formules.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    dans la page excel, j'ai bien "fenêtre" dans le menu mais "afficher" n'est pas activé...!?

    dans la page vba, j'ai bien "fenêtre" dans le menu mais il n'y a pas d'option "afficher"...?!

    gulp?!

    (par ailleurs, en cherchant avec google "créer xla" je suis tombé sur une procédure où il y a 33 étapes pour créer un xla (33! on croit rêver) ce qui est on ne peut plus décourageant! cela ne serait pas plus simple si dans la page vba, alors qu'une macro d'un fichier xls est ouverte, il y avait la possibilité en 1 SEUL CLICK de la faire passer dans les macros accessibles partout?!)

    - - - édité :
    bon j'ai trouvé le moyen simple de rendre une macro-liée-à-un-fichier-en-particulier accessible dans tout excel:
    - on a ouvert son fichier excel comprenant une macro particulière
    - fichier, enregistrer sous, sélectionner dans type "macro complémentaire"
    - sauver par exemple (pour l'exemple de ma macro) couleur.xla (le système gère le répertoire correctement)
    - tout fermer
    - ouvrir une nouvelle feuille
    - outils, macros complémentaires, parcourir, choisir couleur.xla
    - ça ajoute dans outils, macros complémentaires un élément "couleur"
    - hop ça fonctionne

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 981
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 981
    Points : 29 023
    Points
    29 023
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici un bon lien expliquant pas à pas comment créer un classeur XLA

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    merci bien pour tout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction simple qui ne marche pas
    Par ApocKalipsS dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/05/2010, 12h29
  2. Fonction simple qui ne marche pas
    Par Emotion dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/03/2009, 07h17
  3. Une fonction settimeout qui s'execute pas
    Par stepon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/08/2006, 12h55
  4. suivi de session simple qui ne marche pas
    Par mikebranque dans le forum Langage
    Réponses: 6
    Dernier message: 02/06/2006, 17h55
  5. Programme Perl tout simple qui ne fonctionne pas
    Par jejerome dans le forum Langage
    Réponses: 4
    Dernier message: 27/02/2006, 00h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo