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

  1. #1
    Nouveau membre du Club
    Comment Effacer des valeurs mais pas les formule dans une feuille XLS en VBA
    Bonjour à tous,

    J'ai un fichier XLS avec des formules et de Validations de données.
    Toutefois, quand j'appui sur le bouton Suppr toutes les valeurs s'effacent ainsi que les formules.

    Je vous serais reconnaissant de m'aider à remédier à ce problème.

    Merci d'avance.
    JemaCodeur


    Version : Excel 2010

  2. #2
    Expert éminent sénior
    Bonjour

    La solution passe par F5 (que tu peux automatiser) une fois la logique comprise et testée avec l'enregistreur

    Sélection des constantes...

    http://www.excel-formations.fr/Trucs...s/ToucheF5.php
    Chris

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Expert éminent sénior
    Je ne comprends pas ce que tu demandes.
    Tu voudrais qu'une cellule contienne une formule mais n'affiche pas son résultat ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Expert éminent
    Bonjour à vous, Bonjour le Forum,

    C'est peut-être là où veut en venir Chris que je salue au passage.

    La méthode SpecialCells décrites dans cet espace te serait utile pour supprimer ces cellules d'un bloc.

    Bien Cordialement.
    Marcel

    Dernière contribution:
    Envoyer des mails différenciés par gestion de tableaux structurés

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.



  5. #5
    Nouveau membre du Club
    Citation Envoyé par Menhir Voir le message
    Je ne comprends pas ce que tu demandes.
    Tu voudrais qu'une cellule contienne une formule mais n'affiche pas son résultat ?
    Salut Menhir,

    Ce que je veux concrètement c'est quand je mets une formule qui génère un valeur, quand j'appuie sur Suppr pour effacer la valeur générée que la forme ne s'efface pas.

  6. #6
    Nouveau membre du Club
    Citation Envoyé par MarcelG Voir le message
    Bonjour à vous, Bonjour le Forum,

    C'est peut-être là où veut en venir Chris que je salue au passage.

    La méthode SpecialCells décrites dans cet espace te serait utile pour supprimer ces cellules d'un bloc.
    Salut MarcelG,

    J'avoue c'est pas exactement ce que je veux faire ou bien c'est moi qui ai mal compris ta réponse.

  7. #7
    Expert éminent sénior
    Citation Envoyé par JemaCodeur Voir le message
    Ce que je veux concrètement c'est quand je mets une formule qui génère un valeur, quand j'appuie sur Suppr pour effacer la valeur générée que la forme ne s'efface pas.
    Ca n'est pas possible.
    Quand on met une formule dans une cellule, c'est généralement pour afficher son résultat.
    La seule chose que tu peux éventuellement faire, c'est rendre ce résultat invisible en mettant une couleur de police identique à la couleur de remplissage de la cellule.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Nouveau membre du Club
    Citation Envoyé par Menhir Voir le message
    Ca n'est pas possible.
    Quand on met une formule dans une cellule, c'est généralement pour afficher son résultat.
    La seule chose que tu peux éventuellement faire, c'est rendre ce résultat invisible en mettant une couleur de police identique à la couleur de remplissage de la cellule.
    Ah oui vous êtes sûre ? Car j'ai cherché dans le et j'ai trouvé ce bout de code qui correspond à ce que je veux faire.
    Par contre comme je suis Novice en VBA je ne sais pas comment m'y prendre.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Range("A1:A10").SpecialCells(xlCellTypeConstants, 3).ClearContents

  9. #9
    Expert confirmé
    Bonjour,
    Citation Envoyé par JemaCodeur Voir le message
    Ah oui vous êtes sûre ? Car j'ai cherché dans le et j'ai trouvé ce bout de code qui correspond à ce que je veux faire.
    Je pense que tu as du mal exprimé ta demande, peut être que des captures d'écran avant/après sur un exemple simple pourrait aider.


    Par contre comme je suis Novice en VBA je ne sais pas comment m'y prendre.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Range("A1:A10").SpecialCells(xlCellTypeConstants, 3).ClearContents
    Je ne comprend pas ton problème, si tu as trouvé un code qui correspond qu'Est-ce qui t'empêche de t'en servir ? un message d'erreur ?
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  10. #10
    Responsable
    Office & Excel

    Salut.

    Perso, je suis d'accord avec Menhir. Tu ne peux pas "supprimer le résultat des formules"

    Citation Envoyé par JemaCodeur Voir le message
    Salut Menhir,

    Ce que je veux concrètement c'est quand je mets une formule qui génère un valeur, quand j'appuie sur Suppr pour effacer la valeur générée que la forme ne s'efface pas.
    Dans la mesure où une formule génère toujours une valeur (c'est un peu le but, en fait), je ne comprends pas bien ce que tu veux dire, car tu ne peux pas "effacer la valeur générée".

    Tu peux effectivement effacer (pas supprimer) les constantes qui alimentent les formules, au moyen de SpecialCells, mais tes formules renverront TOUJOURS un résultat, quoi qu'il arrive au niveau des constantes saisies dans les cellules. Du coup, si tu effaces les constantes (que tu vides les cellules qui les contiennent), tu risques d'avoir des résultats "rigolos" comme réponses à tes formules...




    Je suis curieux de savoir ce que tu souhaites réaliser


    Au passage, je me demande comment tu peux affirmer que le code que tu as trouvé dans la faq te convient si tu ne sais pas l'implémenter... re
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Nouveau membre du Club
    Citation Envoyé par halaster08 Voir le message
    Bonjour,

    Je pense que tu as du mal exprimé ta demande, peut être que des captures d'écran avant/après sur un exemple simple pourrait aider.


    Je ne comprend pas ton problème, si tu as trouvé un code qui correspond qu'Est-ce qui t'empêche de t'en servir ? un message d'erreur ?
    salut halaster08,

    Voici un exemple de tableau avec des listes déroulantes dépendantes.



    Dans les colonnes grises on y trouve la formule ci-contre :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =SI(ESTERREUR(RECHERCHEV($F17;Tableau_Lancer_la_requête_à_partir_de_axsql4[#Tout];2;FAUX));"";RECHERCHEV($F17;Tableau_Lancer_la_requête_à_partir_de_axsql4[#Tout];2;FAUX))


    Donc ce je veux faire c'est d'effacer les valeurs des cellules grises tout en maintenant les formules.

  12. #12
    Nouveau membre du Club
    Grâce à vos explication, je me suis rendu compte que cela n'est pas possible.
    Cependant, avez vous une idée de comment faire pour charger la formule en VBA de ce fait même si on efface la valeur générée la formule n'est pas supprimer.

    Merci pour l'attention portée à ma demande.

  13. #13
    Expert confirmé
    Pour mettre ta formule dans la cellule A1:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Range("A1").FormulaLocal = "=SI(ESTERREUR(RECHERCHEV($F17;Tableau_Lancer_la_requête_à_partir_de_axsql4[#Tout];2;FAUX));"""";RECHERCHEV($F17;Tableau_Lancer_la_requête_à_partir_de_axsql4[#Tout];2;FAUX))"

    Remplace A1 par n'importe quel plage où tu souhaite mettre ta formule
    ATTENTION, la formule est identique a celle que tu as posté à un détail près le doublement des " pour ne pas que VBA les considère comme un séparateur de texte
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  14. #14
    Expert éminent sénior
    Citation Envoyé par JemaCodeur Voir le message
    Ah oui vous êtes sûre ? Car j'ai cherché dans le et j'ai trouvé ce bout de code qui correspond à ce que je veux faire.
    Par contre comme je suis Novice en VBA je ne sais pas comment m'y prendre.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Range("A1:A10").SpecialCells(xlCellTypeConstants, 3).ClearContents
    Cette ligne de code supprimera les cellule contenant des valeurs saisies.
    Par contre, pour les cellules contenant une formule, elle laissera affiché le résultat.

    Citation Envoyé par JemaCodeur Voir le message
    Cependant, avez vous une idée de comment faire pour charger la formule en VBA de ce fait même si on efface la valeur générée la formule n'est pas supprimer.
    Il serait beaucoup plus simple de modifier la formule en lui demandant d'afficher "" s'il n'y a rien à chercher, donc si la cellule correspondante dans la colonne des listes déroulantes est vide.
    Un simple SI() suffirait.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Responsable
    Office & Excel

    En ajoutant un test à test formules, tu pourrais "effacer" les résultats...

    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  16. #16
    Expert éminent sénior
    Citation Envoyé par JemaCodeur Voir le message
    Dans les colonnes grises on y trouve la formule ci-contre :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =SI(ESTERREUR(RECHERCHEV($F17;Tableau_Lancer_la_requête_à_partir_de_axsql4[#Tout];2;FAUX));"";RECHERCHEV($F17;Tableau_Lancer_la_requête_à_partir_de_axsql4[#Tout];2;FAUX))
    Ta formule en plus simple :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    =SIERREUR(RECHERCHEV($F17;Tableau_Lancer_la_requête_à_partir_de_axsql4[#Tout];2;FAUX));"")
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  17. #17
    Responsable
    Office & Excel

    Renomme tes tableaux issus d'une requête, également. Ca simplifiera ta lecture...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  18. #18
    Nouveau membre du Club
    Vraiment merci à vous pour ces explication très instructive qui m'ont permis de régler mon problème.


###raw>template_hook.ano_emploi###