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 :

Formule conditionnelle: soit le contenu de la cellule d'à coté soit le contenu de la cellule courante [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 629
    Par défaut Formule conditionnelle: soit le contenu de la cellule d'à coté soit le contenu de la cellule courante
    Bonjour,

    Je ne sais pas si ce que je cherche à faire est possible...

    J'ai une colonne A qui prend valeur1 ou valeur2 (menu déroulant).
    J'ai une colonne B qui est une date à saisir à la main.
    J'ai une colonne C qui est une date conditionnelle:
    - si dans la colonne A il y a valeur1 alors colonne C prend la meme valeur que colonne B
    - si dans la colonne A il y a valeur2 alors colonne C est une date à saisir à la main

    Voici ma formule en C2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(A2="valeur1";B2;"")
    ça marche dans le sens où:
    - si dans la colonne A il y a valeur1 alors dans la colonne C il y a la meme valeur que dans la colonne B
    - si dans la colonne A il y a autre chose que la valeur1 alors la colonne C est vide et l'utilisateur doit la remplir, d'où mon problème ...

    Si l'utilisateur remplit à la main la colonne C, alors il écrase la formule => si finalement, dans la colonne A, on met valeur1, alors dans la colonne C, vu que je n'ai plus ma formule dedans, ça reste vide, ça ne se met pas à jour.

    Donc ma question est: comment avoir une formule dans une case qui dit "soit tu prends la valeur d'à coté soit tu prends la valeur saisie dans toi meme" sans supprimer la formule ?

    Merci pour votre aide !

  2. #2
    Membre très actif Avatar de gourmand
    Homme Profil pro
    dessinateur projeteur mécanique
    Inscrit en
    Avril 2011
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur mécanique

    Informations forums :
    Inscription : Avril 2011
    Messages : 153
    Par défaut
    tu peux d'ajouté une colonne ou l'utilisateur pourra rentré la date à saisir

    et tu mais dans ta cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(A2="valeur1";B2;SI(ESTVIDE(D2);"entré une date";D2))

  3. #3
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Par défaut
    Ça doit pouvoir se faire avec une macro mais ce serait très bourrin pour quelque chose qui se résout très bien avec la réponse de Gourmand...

  4. #4
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Par défaut
    Bonjour DebDev,

    Je te propose de régler on problème avec un petit peu de VBA. En effet, tu ne pourra, à la fois avoir une formule et une donnée en même temps dans une cellule !
    Par contre on peut faire réagir spécifiquement Excel en fonction de la valeur d'une cellule en utilisant la gestion des événements (Worksheet_Change(ByVal Target As Range).

    Active l'éditeur Visual Basic et recopie le bout de code (que j'ai fait un peu rapidement ...) en l'adaptant à ton application :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    rivate Sub Worksheet_Change(ByVal Target As Range)
    Dim inCol1 As Long
    Dim inRow1 As Long
    Dim inCol2 As Long
    Dim inRow2 As Long
    Dim inCol3 As Long
    Dim inRow3 As Long
     
    inCol1 = 1
    inRow1 = 3
    inCol2 = 2
    inRow2 = 3
    inCol3 = 3
    inRow3 = 3
     
    If Target.Row = inRow1 And Target.Column = inCol1 Then
        If Target = "valeur1" Then
            Cells(inRow3, inCol3) = Cells(inRow2, inCol2)
        Else
            Cells(inRow3, inCol3) = ""
            Cells(inRow3, inCol3).Select
        End If
     
    End If
    End Sub
    Target est un objet Range. J'identifie dans le 1° if la cellule qui m'intéresse (inRow1,inCol1) et dans le 1° if je mets la condition que je veux vérifier ...
    Si tu as un problème avec dis-le.

  5. #5
    Membre très actif Avatar de gourmand
    Homme Profil pro
    dessinateur projeteur mécanique
    Inscrit en
    Avril 2011
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : dessinateur projeteur mécanique

    Informations forums :
    Inscription : Avril 2011
    Messages : 153
    Par défaut
    triton972, tu t'y connais bien en vba sur excel ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Par défaut
    Bonjour Gourmand,

    Je n'ai pas la prétention de connaitre aussi bien que toi Vba excel mais en tout cas ma solution fonctionne comme tu as pu le vérifier non ?
    Cordialement,

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    629
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 629
    Par défaut
    Merci à tous pour votre aide.

    @gourmand et FLB: la solution proposée ne correspond pas totalement à ce que je souhaite car d'une part, il faut ajouter une colonne (si j'ai bien compris) et d'autre part, si l'utilisateur modifie la valeur de la 1ère colonne, ça ne se met pas à jour. Peut être que c'est moi qui ai mal fait

    @Triton972: ta solution fonctionne parfaitement . mais j'ai encore une demande à te faire car je suis loin de maitriser le vba. le code proposé fait référence à une cellule. comment faire pour appliquer ce code à toutes les cellules ?

    Merci.

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

Discussions similaires

  1. [XL-2003] insérer un formule conditionnelle dans la cellule active
    Par BtjpsspgrW dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/10/2014, 20h28
  2. [XL-2010] Formule conditionnelle changement de couleur de cellules
    Par chocoaccroc dans le forum Excel
    Réponses: 2
    Dernier message: 27/12/2012, 16h29
  3. Réponses: 6
    Dernier message: 21/03/2012, 14h29
  4. Formule conditionnelle cellule
    Par lmarti dans le forum Excel
    Réponses: 2
    Dernier message: 23/10/2011, 13h19
  5. une formule conditionnelle "si" sur ACCESS est ce
    Par amandine2910 dans le forum Access
    Réponses: 3
    Dernier message: 29/11/2005, 00h09

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