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 :

écrire dans une cellule sans écraser son contenu [XL-2000]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Points : 7
    Points
    7
    Par défaut écrire dans une cellule sans écraser son contenu
    Bonjour à tous

    J’ai un petit problème.
    J’aimerai savoir s’il était possible d’écrire une valeur dans une cellule sans pour autant écraser la formule de cette même cellule…
    Je m’explique :
    Je dispose d’une cellule "A1" qui effectue un calcul avec une formule.
    La majorité du temps le calcul s’effectue normalement sur la feuille excel, mais lors d’un événement je voudrai shunter la formule par une fonction VBA et rentrer une autre valeur.
    Mon problème est que lorsque que j’écris dans la cellule, la formule est écrasée.

    J’ai déjà pensé à écraser la formule puis la réécrire mais cela devient très vite compliqué car cette valeur est utilisée dans une boucle for et est appelée dans d’autres fonctions…

    Enfin bref je ne sais pas si vous comprenez mon problème mais le plus simple pour moi serait de trouver une fonction capable d’écrire sans détruire la formule existante.

    En vous remerciant

  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 907
    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 907
    Points : 28 882
    Points
    28 882
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une cellule contient soit une constante (Valeur numérique, alphanumérique, logique) soit une formule.
    Que ce soit à la main ou par VBA, il n'est donc pas possible de placer à la fois, une formule et une constante.
    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
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Bonjour Corona
    Mais n'est il pas possible de modifier la valeur que renvoie cette cellule?
    Par exemple:
    A1 = 2
    A2 = 3
    A3 = A1 + A2 = 5 <-- formule exacte
    et
    A3 = A1 +A2 = 12 <-- Valeur forcée mais formule toujours existante

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Bonjour,

    S tu ne peux pas écrire 2 formules, tu peux quand même en écrire une te permettant de faire 2 calculs différents en fonction d'une valeur :

    Par exemple:
    =si(A1>A2;A1*2;A2*2)

    En espèrent que cela résout ton problème,
    Cordialement
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  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 907
    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 907
    Points : 28 882
    Points
    28 882
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si A1 = 2 et A2 = 3 et que tu places en A3 la formule A1+A2 cela donnera toujours 5.
    Ce que tu peux faire c'est placer en A3 une formule avec condition comme par exemple, SI(A1<5;12;A1+A2) autrement dit si la valeur contenue dans A1 est plus petit que 5 alors en A3 tu auras 12 sinon ce sera A1+A2 soit 5
    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

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2011
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 212
    Points : 334
    Points
    334
    Par défaut
    Bonjour Philippe,

    Je vois que l'on a pensé à la même chose

    A bientôt,
    Cordialement.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses.

    J’avais déjà pensé à passer par un si dans la cellule mais cela n’est pas possible pour mon application. En effet l’application doit garder un effet hystérésis pendant quelques tours de ma boucle for , mais c’est plutôt compliqué à expliquer comme sa…

    Alors je me suis débrouillé différemment.
    Ma solution pourrait intéresser quelques personnes alors je vais l’expliquer.

    Dans une boucle for
    En marche normale je passe par une fonction qui écrit directement la formule dans la cellule. Ensuite lorsque l’événement perturbateur arrive, la formule est écrasée en écrivant la valeur voulue dans la cellule. Puis lorsque c’est le moment de repasser en marche normale la formule est réécrite dans la cellule.

    Je n’ai pas encore fini de coder cette fonction mais cela me parait juste…
    Questions ou remarques je tout ouvert…

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 07/02/2013, 10h22
  2. Réponses: 2
    Dernier message: 27/09/2011, 15h24
  3. Réponses: 1
    Dernier message: 01/06/2009, 05h12
  4. [JDOM] comment écrire dans un fichier xml sans écraser son contenu
    Par solawe dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 25/03/2008, 14h11
  5. [VBA-E] Ecrire dans une cellule sans écraser son contenu
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/02/2007, 15h43

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