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 :

Syntaxe d'une formule dans tableau structuré


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Inscrit en
    août 2009
    Messages
    810
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 810
    Points : 292
    Points
    292
    Par défaut Syntaxe d'une formule dans tableau structuré
    Bonjour,

    J'ai un classeur qui à l'ouverture chaque matin ajoute des lignes et met en place des calculs.
    Pour des raisons de performances, je suis contraint de désactiver le calcul puis de le réactiver.

    J'ai un souci cependant dans un cas, en effet ma formule copie la valeur de la cellule et n'applique pas la formule.

    malgré plusieurs tentatives je n'arrive pas à formuler correctement ma syntaxe.
    merci de votre aide

    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    With ThisWorkbook.Worksheets("FNC")
    Maligne = .Range("A1048576").End(xlUp).Row
        While .ListObjects("Tab_FNC").ListColumns("Défaut Révisé").DataBodyRange(Maligne) = ""
        .ListObjects("Tab_FNC").ListColumns("Défaut Révisé").DataBodyRange(Maligne).Formula = .ListObjects("Tab_FNC").ListColumns("Défaut machine").DataBodyRange(Maligne)
        Maligne = Maligne - 1
        Wend
    End With
    Denis

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    juillet 2014
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2014
    Messages : 2 477
    Points : 5 361
    Points
    5 361
    Par défaut
    Bonjour,

    Tu ne lui dit pas ce que tu souhaites copier du coup VBA fait comme il veut parfois c'est ce que tu voulais, parfois non.

    Essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        .ListObjects("Tab_FNC").ListColumns("Défaut Révisé").DataBodyRange(Maligne).Formula = .ListObjects("Tab_FNC").ListColumns("Défaut machine").DataBodyRange(Maligne).Formula
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  3. #3
    Membre actif
    Inscrit en
    août 2009
    Messages
    810
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 810
    Points : 292
    Points
    292
    Par défaut
    Merci pour la réponse rapide mais qui ne fait pas ce que je pensais.

    je voulais avoir dans ListColumns("Défaut Révisé") = .ListColumns("Défaut machine") .

    là il me copie la formule qui est dans .ListColumns("Défaut machine").
    Denis

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    juillet 2014
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2014
    Messages : 2 477
    Points : 5 361
    Points
    5 361
    Par défaut
    Citation Envoyé par Denis_67 Voir le message
    J'ai un souci cependant dans un cas, en effet ma formule copie la valeur de la cellule et n'applique pas la formule.
    Citation Envoyé par Denis_67 Voir le message
    je voulais avoir dans ListColumns("Défaut Révisé") = .ListColumns("Défaut machine").
    là il me copie la formule qui est dans .ListColumns("Défaut machine").
    C'est peut être moi qui suit mal réveillé mais j'ai l'impression que tes deux messages se contredisent.
    Dans le premier tu dis avoir la valeur mais souhaite la formule, dans le second tu as la formule mais souhaite la valeur ?
    Si c'est la valeur que tu souhaite remplace le .formula par .value dans ma proposition précédente

    Quand tu écris ceci ListColumns("Défaut Révisé") = .ListColumns("Défaut machine") en gros tu écris cellule1 = cellule2 mais c'est pas clair du tout, car une cellule a plusieurs propriété, la valeur, la formule, le format ... c'est important de préciser ce que tu souhaites sinon VBA ou qqn comme moi qui te lis DOIT interpréter et donc peut se tromper
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  5. #5
    Membre actif
    Inscrit en
    août 2009
    Messages
    810
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 810
    Points : 292
    Points
    292
    Par défaut
    Eh oui, pas facile toujours d'expliquer.
    Une bonne explication c'est déjà la moitié de la réponse.
    Désolé pour la confusion.

    à un instant T, j'ai désactivé les calculs automatiques (problème de perf).
    Dans la cellule .ListColumns("Défaut machine") j'ai une valeur (temporaire) puisque calcul désactivé.
    Si je recopie la valeur de la cellule je recopie la valeur temporaire qui est présente au moment de la copie (donc fausse).D'où ma question initiale.

    Si je copie formule il me copie la formule de la cellule d'origine. (Dans ce cas, je suis d'accord le résultat est juste) c'est comme si j'écrivais la même formule deux fois dans deux cellules.

    Ce que je souhaite c'est écrire dans la seconde cellule = cellule précédente (que cette cellule présente ou non une formule. (C'est aussi pour apprendre à manipuler dans les tableaux structurés.)

    Merci pour votre patience à essayer de comprendre ma question.
    Denis

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    juillet 2014
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2014
    Messages : 2 477
    Points : 5 361
    Points
    5 361
    Par défaut
    Un point qui m'interroge quand je lis ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Maligne = Maligne - 1
        Wend
    J'ai l'impression que tu fais une boucle pour mettre la formule dans toutes les cellules de ton tableau structuré, or l'avantage de passer par un tel tableau c'est justement d'avoir a entrer une formule une seule fois pour qu'elle s'applique sur tout le tableau.

    Ce que je souhaite c'est écrire dans la seconde cellule = cellule précédente
    Encore une fois je trouve pas ça très clair, peut être qu'un exemple avec des captures d'écran aiderai a comprendre
    Du coup désolé si je répond a coté de la plaque, dans un structuré tu peux récupérer la valeur d'une autre colonne sur la même ligne avec le @: =[@[nom de la colonne]]
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  7. #7
    Membre actif
    Inscrit en
    août 2009
    Messages
    810
    Détails du profil
    Informations forums :
    Inscription : août 2009
    Messages : 810
    Points : 292
    Points
    292
    Par défaut
    Bonjour Halister,

    Oui les formules des tableaux suivent (en général ) toutes seules, ave le risque que l'utilisateur ne brise au milieu de sa colonne par une validation en dur.

    Cependant dans mon cas, une des colonnes est corrigée manuellement par l'utilisateur.
    Donc après ajout de nouvelles lignes en fin de feuille d'abord je charge la valeur présente dans une colonne précédente, et l'utilisateur ecrase si besoin le contenu.
    c'est pour cela que je remonte depuis la fin de la feuille vers le haut jusqu'à ce qu'il y ait une valeur.
    JE vais essayer la syntaxe toute simple je mettrai à jour le post semaine pro.

    en tout cas encore merci
    Denis

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/11/2017, 09h46
  2. Réponses: 1
    Dernier message: 13/03/2017, 09h20
  3. Inputer une formule dans la colonne d'un tableau importé via une macro
    Par Arone77 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 17/09/2016, 21h34
  4. [XL-2002] Problème de syntaxe sur une formule dans VBA
    Par beber_le_stagiaire dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/06/2009, 15h32
  5. Réponses: 1
    Dernier message: 29/07/2008, 22h40

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