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 :

Fonction VBA qui revoit #VALEUR! [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut Fonction VBA qui revoit #VALEUR!
    Bonjour,

    J'ai certaines cellules dans une feuille Excel qui font appelle à une fonction VBA.
    Lorsque je passe sur un autre classeur et que j'y lance un code VBA puis que je reviens sur le classeur avec la fonction, celle-ci revoit #VALEUR!

    Exemple: cellule "A1" =Get_Val()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function Get_Val() As String
        Get_Val = "Pour test"
    End Function
    la cellule "A1" affiche #VALEUR!

    Mon classeur est en calcule automatique.
    Dans le "Centre de gestion de la confidentialité" d'Excel, les macros VBA sont activées.
    "Accès approuvé au modèle d’objet du projet VBA" est coché.

    J'arrive à résoudre ce problème:
    -en cliquant dans la barre de formule puis en validant (entrée) chaque cellule
    -en convertissant chaque colonne de ma feuille (onglet Donnée/Convertir/Terminer)

    Mes classeurs on un nombre important de cellules remplies (5000/feuille) , le nombre de cellules affichant #VALEUR! est 100.
    J'ai beaucoup de cellules fusionnées, donc "Convertir" ne fonctionne pas/mal.

    J'observe ce problème sur plusieurs classeurs, même à partir d'un nouveau.

    Connaissez-vous une option à cocher ou autre qui me permettrais de résoudre ce problème ?

    Merci

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Salut

    Essaie d'ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.volatile True
    au début du code de ta fonction.

    Ça force le recalcule des cellules qui contiennent cette fonction... par contre ça le force à chaque modification d'une cellule de la feuille... et donc s'il y a beaucoup de cellules avec cette fonction, ça peut provoquer des lenteurs.

    Essaie déjà pour voir si ça résout ton problème

    [Edit]
    J'ai testé chez moi (Office 365) mais même sans Volatile, je n'ai pas de problème, tu n'aurais pas une macro dans ton 2ème fichier qui mettrait le bazars?
    [/Edit]

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, ajoute ceci dans ThisWorkbook:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Activate()
        Application.CalculateFullRebuild
    End Sub
    Cela force un recalcul complet de toutes les cellules à chaque activation du classeur.
    Les cellules fusionnées posent souvent problème, utilise plutôt Format > Alignement > Centrer sur plusieurs colonnes

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 113
    Par défaut
    Citation Envoyé par Franc Voir le message
    Les cellules fusionnées posent souvent problème, utilise plutôt Format > Alignement > Centrer sur plusieurs colonnes
    Ah ben je connaissais pas cette fonction! Je te remercie

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut
    Cette solution fonctionne parfaitement:
    Citation Envoyé par Franc Voir le message
    Salut, ajoute ceci dans ThisWorkbook:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Activate()
        Application.CalculateFullRebuild
    End Sub
    celle là ne fonctionne pas dans mon cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.volatile True
    Merci de vos aides.

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2024
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2024
    Messages : 43
    Par défaut
    Bonjour lucasgaetan

    Avant de dire "ça ne fonctionne pas", il faudrait commencer par comprendre ce que font les instructions

    "Application.Volatile" recalcule la fonction à chaques modifications dans le classeur

    "Application.CalculateFullRebuild" force le classeur entier à recalculer ces formules,
    mais attention, placé dans l'évènement "Activate", cela ne se fera qu'à l'activation du classeur... après plus rien

    Donc pour moi, l'instruction la plus sûre reste la 1ère

  7. #7
    Membre expérimenté Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 175
    Par défaut
    Bonjour ExcelTastic,

    Je n'ai pas dis que ça ne fonctionnait pas, j'ai dis "celle là ne fonctionne pas dans mon cas".
    La nuance est que quand j'arrive d'un 2eme classeur, puis que je reviens sur mon 1er, les cellules ne sont plus valide.
    D'où l'intérêt de la procédure Workbook_Activate.

    Mais j'ai bien noté ta fonction et j'ai même commencé à la déployer.

    Merci encore.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/01/2023, 03h49
  2. Fonction VBA et lire valeur workbook fermé
    Par tamtam64 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/05/2016, 14h15
  3. [XL-2010] Fonction VBA qui ne fonctionne plus sous excel 2010
    Par Outinet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2012, 13h49
  4. [Toutes versions] fonction VBA qui renvoie le premier nombre d'une chaîne texte
    Par Benoit Schwob dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2012, 12h24
  5. [XL-2000] Fonction VBA qui renvoie le caractère ascii d'un nombre
    Par franky7 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/09/2011, 08h31

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