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 :

[debutant] Probleme de SI


Sujet :

Excel

  1. #1
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut [debutant] Probleme de SI
    Bonjour,

    mon problème va peut-etre sembler ridicule aux expérimentés de Excel , je m'en excuse si tel est le cas.
    J'ai une cellule avec un liste déroulante.
    Quand je choisis une valeur dans cette liste, une autre cellule doit changer en conséquence. Par contre si la première cellule prend certaines valeurs, c'est a l'utilisateur de modifier manuellement la valeur de la 2eme cellule.

    Par exemple :
    La cellule 1 eut prendre les valeurs A,B, C, D

    Quand cellule 1 vaut : La cellule 2 doit valoir
    A 1
    B 2
    C 3
    D l'utilsateur doit modifier manuellement

    J'ai donc mis ceci dans la cellule 2 :

    Code :
    =SI(OU(B14="Semi-détaché";B14="Imbriqué");0;SI(B14="Organique";1))
    Ca marche marche sauf le cas "D" ( ici, B14 différent de "Semi-détaché", "Imbriqué", "Organique") : dans ce cas il met la valeur "FAUX" dans la cellule 2 . De lus, si l'utilisateur modifie cette valeur, ca remplace la formule ...


    Je suppose que c'est tout simple mais je n'y arrive pas.

    Merci de votre aide
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut Cladsam

    Il faudrait plutôt que tu utilises l'évènement Change de la liste déroulante.
    Et tu fais ton test dans la Sub pour affecter ou non une valeur à ta cellule.

    Pour cela, va dans VBE, double-clique sur le nom de la page qui contient ta zone de liste, choisi son nom dans la liste déroulante de gauche en haut, par défaut elle est sur (Général), ensuite dans la liste déroulante de droite tu sélectionne l'évènement Change.

  3. #3
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Bon je crois que j'ai gagne mon stage a boulet land comme directeur de centre.
    SI je dis que j'y arrive pas j'ai gagné mon droit d'entrée au bêtiser ?
    Bon je vois bien comment ouvrir le VB editor ca ok.
    Sur la gauche j'ai l'arborescence des feuilles Excel OK
    Je choisis la sheet ou la liste est féfinie OK
    Enusite je trouve bien en haut la liste déroulante ou il y a écrit
    "général " ou "Worksheet" avec juste a sa droit la liste des events
    "Acitvate" "SelectChange"


    Sauf que je suppose que dans la liste de gauche je dois retrouver le nom de ma liste pour que ce soit bien l'event de la liste que je réécrive. Hors, il n'apparait pas.
    J'ai essayé la sheet dans laquelle j'utilise la liste , ainsi que celle qui contient les valeurs sources de cette liste mais rien n'y fait, je ne comprends pas.
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Ta liste déroulante, tu l'as ajouté comment ?
    En passant par la barre d'outils commande ?

  5. #5
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Non comme j'ai trouvé c'est a dire : je prend un onglet, je rajoute l'un en dessous de l'autre les valeurs, je leur donne un nom en passant par insertion >> Nom
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  6. #6
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Ok.

    Ce que je te propose (l'avantage sera que tu pourras affecter la valeur corespondante à la cellule ou la laisser vide et laisser l'utilisateur la remplir. Et là : la formule : elle reste)

    Sur une feuille : tu places les valeurs qui seront contenues dans ta liste.
    Tu Sélectionnes l'objet Liste déroulante (Zone de liste modifiable de son vrai nom) dans la barre de menu commandes
    Tu la places sur la feuille.
    Ensuite, affiches les propriétés de la liste (clic droit => propriétés), recherche ListFillRange. Tu y places la plage de cellule : NomFeuille!Plagecellule
    Ex :
    'Nom de feuille'!A1:A15
    NomFeuille!A1:A15
    A1:A15 si les données sont sur la même feuille.

    Dans la propriété LinkCell : tu la laisses vide

    Ensuite clic droit à nouveau sur la liste déroulante => visualiser le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        If ComboBox1 <> "D" Then
            Select Case ComboBox1
                Case "A"
                    Range("Tacellule") = 1
                ....
            End Select
        End If

  7. #7
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    J'ai un peu buggué sur le code :
    vire le If et gère tout avec le select case

  8. #8
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Juste une question : en faisant de la sorte, est-ce que je peux drag &droper ma liste deroulante pour l'avoir sur toutes les cellules de ma colonne ?
    Parceque dans mon cas c'est clairement ce dont j'ai besoin , j'ai une colonne entière de liste deroulantes et pour chaque ligne si je modifie la valeur de cette liste déroulante, ca doit modifier (ou pas) la valeur dans une autre case sur la meme ligne.
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  9. #9
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Euh... c'est pas possible comme ça
    =SI(OU(B14="Semi-détaché";B14="Imbriqué");0;SI(B14="Organique";1))
    Ca marche marche sauf le cas "D" ( ici, B14 différent de "Semi-détaché", "Imbriqué", "Organique") : dans ce cas il met la valeur "FAUX" dans la cellule 2 . De lus, si l'utilisateur modifie cette valeur, ca remplace la formule ...
    Je t'ai proposé ça car au moins ça élude le problème de la formule.
    Pour ce qui est de la condition SI tu peux imbriquer jusqu'à 7 niveaux de SI.
    Il te suffit de faire :
    =SI(Ou(B14.....);0;Si(B14="Organique";1;""))
    Mais le soucis va être que si la personne doit saisir une valeur : ta formule saute.

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour


    Si les listes déroulantes sont créées par le menu Données/Validation, tu peux utiliser l'évènement Worksheet_Change comme l'a indiqué Kikof:

    http://silkyroad.developpez.com/VBA/EvenementsFeuille/


    La procédure suivante doit être placée dans le module objet de la feuille contenant les listes déroulantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Change(ByVal Target As Range)
        'Vérifie si la modification a été effectuée dans la colonne B
        If Target.Column = 2 Then
     
            'Vérifie le contenu de la cellule modifiée
            Select Case Target
                'En fonction du contenu de la colonne B on inscrit une valeur
                'dans la colonne C.
                Case "Semi-détaché", "Imbriqué": Target.Offset(0, 1) = 0
                Case "Organique": Target.Offset(0, 1) = 1
                Case "D": Target.Offset(0, 1) = "A compléter par l'utilisateur!"
            End Select
        End If
    End Sub

    michel

  11. #11
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Je n'avais pas pensé à l'évènement change de la feuille.
    Bien vu
    Faudrait que je pense à lire tes tutos

  12. #12
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    messieurs je vous suis très reconnaissant.
    Je vais de ce pas tester les solutions proposées
    Merci
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

  13. #13
    Rédacteur
    Avatar de cladsam
    Profil pro
    Inscrit en
    Août 2003
    Messages
    1 785
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2003
    Messages : 1 785
    Points : 2 436
    Points
    2 436
    Par défaut
    Ben c'est tout bonnement excellent.
    Je viens enfin de réaliser qu'Excel c'était plutot sympathique
    merci
    Chef de Projet SAP. Certifié Prince2 Practitioner
    ---------------------------------------------------
    Anakin Skywalker turned to the Dark Side after his failed attempt to upgrade R/2-D2 to R/3-D2.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/05/2004, 12h40
  2. [Debutant]Probleme pour Debugger sours JCreator
    Par Flam dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 1
    Dernier message: 12/05/2004, 20h27
  3. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 19h21
  4. [debutant]probleme servlet
    Par noOneIsInnocent dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 26/09/2003, 14h25
  5. [debutant] Probleme pour dessiner un simple cube
    Par scorpiwolf dans le forum DirectX
    Réponses: 6
    Dernier message: 02/07/2003, 21h29

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