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

Excel Discussion :

EXCEL ne reconnaît pas toujours un contenu comme étant une formule malgré le signe =


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut EXCEL ne reconnaît pas toujours un contenu comme étant une formule malgré le signe =
    Bonjour à tous,

    Je me trouve devant le problème suivant pour créer une macro sur Excel 2016.

    Dans une cellule X10 (appelons la comme ça), les macros précédente ont inscrit sous forme de texte l'adresse d'une cellule d'une autre feuille. Ce contenu change chaque fois que les macros en amont ont tourné.

    Dans une autre cellule (disons Y10), je veux inscrire cette adresse et en faire une formule de lien en faisant précéder le contenu par le signe =.

    Dans la macro obtenue par le méthode automatique, j'obtiens le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Range("X10").Select
        Selection.Copy
        Range("Y10").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = _
            "='chemin_de_la_feuille_liée'!R[-x]C[-y]"
    Et ça marche!

    MAIS, lorsque cette macro vient s'activer après un nouveau travail en amont, elle lie encore ma cellule Y à la même feuille, et le résultat est toujours le même!
    Ma cellule Y10 aura toujours le même contenu et Excel ne le considèrera pas comme une formule, bien qu'il commence par le signe =.

    D'où la question: quel est le code, ou la manip à faire lors la création de la macro, pour que EXCEL reconnaisse le contenu de Y10 comme une formule?

    Grand merci à qui m'apportera la solution, qui est peut-être toute bête, évidemment ….

  2. #2
    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 773
    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 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avant tout, en lieu et place d'un Copier/CollageSpecial-Valeur comme le code ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("X10").Select
    Selection.Copy
    Range("Y10").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Application.CutCopyMode = False
    Il est nettement plus simple d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("Y10").Value = Range("X10").Value
    Il est aussi impératif afin d'éviter de mauvaises surprises d'indiquer les parents des cellules source et cible comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     With ThisWorkbook.Worksheets("Feuil2")
     .Range("Y10").Value = .Range("X10").Value
     End With
    Quant à la suite du code soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "='chemin_de_la_feuille_liée'!R[-x]C[-y]"
    En première réponse, je te dirais d'effacer tout simplement la cellule par la méthode Clear avant de lancer la macro ou encore plus simplement d'effacer la feuille entière mais Il est difficile d'apporter une réponse pertinente sans en savoir plus
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour Philippe,

    Grand merci pour ta réponse qui améliore ma macro mais qui malheureusement me laisse avec le même problème.

    L'instruction. ActiveCell.FormulaR1C1 = "='chemin_de_la_feuille_liée'!R[-x]C[-y]"

    met bien dans la cellule Y20 un contenu de la forme ='chemin_de_la_feuille_liée'
    mais EXCEL ne le reconnaît pas comme une formule! Le contenu de la cellule visée par le dit chemin n'est donc pas renvoyé.

    De plus, Le contenu de la cellule X10, qui est ledit chemin, est différent à chaque session.
    Mais la macro restant la même, le chemin renvoyé est toujours le même, celui inscrit lors de la création de la macro.

    Il y a alors 2 questions.

    1) quelle peut être la syntaxe de l'instruction ActiveCell. etc. pour que le contenu mis dans Y10 soit reconnu comme une formule, est non comme un texte, et qu'apparaisse bien, en valeur, la cellule visée par ledit chemin. Bizarrement, il n'est reconnu comme formule que si je mets le = à la main, et le rôle de cette macro est justement de m'éviter cette corvée.

    2) et aussi que ce qui suit le signe = soit lu à chaque session dans X10, donc chaque fois renouvelé par les calculs en amont.

    J'espère que ce n'est pas trop tordu, car j'opère plutôt en mode bidouilleur.

    Merci d'avance!

  4. #4
    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 773
    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 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Grand merci pour ta réponse qui améliore ma macro mais qui malheureusement me laisse avec le même problème
    Je n'ai pas écrit autre chose. J'ai simplement indiqué que c'était mieux d'écrire la ligne de code telle que je l'ai proposée en lieu et place des Select et ActiveCell qui ne font que ralentir l'exécution d'une procédure.

    ActiveCell est un objet Range qui comme son nom l'indique représente la cellule active.
    Pour écrire une formule dans une cellule il faut employer une des propriétés Formula, FormulaR1C1 ou leur équivalent local que personnellement je déconseille fortement (FormulaLocal et FormulaR1C1Local).
    Dans le code ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With ThisWorkbook.Worksheets("Feuil3")
    .Range("C1").Formula = "='Page 1'!B1"
    .Range("C1").FormulaR1C1 = "='Page 1'!RC[-1]"
    End With
    l'instruction de la ligne 2 écrit exactement la même formule que celle de la ligne 3 soit
    A toi de voir ce qui cloche.
    Ce que tu affiches est incomplet car si x et y sont des variables VBA, évidemment la chaîne de caractères ainsi écrite est incorrecte.
    Si l'adresse de la cellule où tu écris cette formule change, comme je l'ai écrit dans ma première réponse je passerais par l'effacement de la cellule ou de la feuille entière avant d'enclencher la procédure.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Les cellules où tu inscris les formules ne seraient pas en format texte? Ça pourrait peut-être (je n'ai pas testé) expliquer le phénomène.
    [Edit]J'ai fais le test, ça provoque bien l'effet d'écrit.[/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

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Merci QWAZERTY et Philippe
    Je pense que c'est tout à fait ça.
    Voici mon problème exposé le plus simplement possible.
    1 Le contenu de la cellule A1 est "'USER/.../.../"
    2 La cellule A2 concatène "=" et le contenu texte de A1 par CONTATENER("=";A1)
    3 Je copie A2 dans A3 en collage spécial Valeur
    Le contenu de A3 est le texte: "='USER/.../.../"
    Mais EXCEL ne le lit que comme un texte et non comme une formule qui me renverrait le contenu de la cellule visée par User/.../...

    Comment faire pour que Excel le lise comme une formule et me renvoie le contenu de USER/.../...?

    Je note que si je ne fais pas une concaténation en 2 mais si je place à la main "=" avant le contenu de A1, EXCEL renvoie bien le contenu de la cellule USER/.../...
    C'est justement ce que je voudrais que fasse une macro!

    Il me manque probablement un truc très élémentaire ...
    Merci de me mettre sur la voie!

  7. #7
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    C'est la fonction Indirect() que tu recherches mais ceci étant, tu devrais à mon avis expliqué plus généralement ce que tu souhaites faire, ça éviterait peut-être une usine à gaz

    ++
    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

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    retraité
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai oublié de préciser que le contenu de A1 dépend du résultat obtenu en amont par d'autres macros, et est donc variable d'une session à l'autre.

  9. #9
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Points : 367
    Points
    367
    Par défaut
    Bonjour

    de tête j'ai eu un soucis récement par ce qu'il perd le "'"
    essaie de modifier avec qqchose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    = indirect("'"&user)

  10. #10
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Citation Envoyé par sogedic Voir le message
    Bonjour

    de tête j'ai eu un soucis récement par ce qu'il perd le "'"
    Dans une cellule c'est possible car le ' est utilisé comme caractère d'échappement, excel n’interprète pas le contenu de la cellule lorsqu'elle commence par un apostrophe. Utile pour commencer une phrase par =, +, -, ... sans qu'excel ne voit ça comme une formule et sans devoir passer le cellule en format texte (ce qui, pour mon compte, pose souvent des problème).
    Il est donc plausible qu'en prenant en charge le contenu de la cellule dans du code, Excel puisse ignorer l'apostrophe (non vérifié).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT("'Feuil1'!B27")
    ++
    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

Discussions similaires

  1. [XL-2010] Excel ne reconnaît pas ses propres feuilles : Problème occasionnel
    Par Free94 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/01/2016, 18h10
  2. Réponses: 4
    Dernier message: 18/04/2011, 10h39
  3. [XL-2007] Excel ne reconnaît pas des chiffres
    Par Runsh63 dans le forum Excel
    Réponses: 6
    Dernier message: 25/03/2011, 10h38
  4. Réponses: 1
    Dernier message: 20/08/2010, 17h40
  5. déclarer une classe comme étant une classe fille
    Par dancingmad dans le forum Langage
    Réponses: 9
    Dernier message: 30/07/2009, 09h44

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