Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formule Excel

14 octobre 2018 à 16:58:28

Salut les gars,

Bon avant de commencer, ma question peut paraitre ridicule pour certain d'entre vous.

Enfaite, je travaille sur excel, mon projet consiste à faire un formulaire mais je suis bloqué sur le point suivant: 

J'ai fais 3 listes déroulantes:  

Cells(1,1) => (Aucun programme;Programme VB; Programme C++ )    

Cells(1,2) => (Sur Mac; Arduino)

Cells(1,3) => Autre                                                 

Alors voila: Si l'opérateur choisi "Aucun programme dans la liste déroulante" alors les listes déroulantes des cellules 1,2 et 1,3 sont cacher. S'il choisi "Programme VB" alors la liste de la cellule 1,2 s'affiche pour demander si c'est "Sur mac" ou "Arduino" (s'affiche automatiquement "Sur Mac").  Si et seulement si l'opérateur choisi "Arduino" dans liste de la cellule 1,2.. la cellule 1,3 s'affiche, écrit "Autre". 

J'ai peur de ne pas être assez clair. En gros, j'aimerai dire a excel, de cacher le contenu d'une cellule selon la réponse de l'opérateur. 

J'ai essayer ceci : = SI(A1="Programme VB";"Sur Mac";"").   En appliquant cette méthode, je n'arrive à le faire qu'une seule fois car la cellule prend la valeur "Programme VB" et perd la formule. 

Je vous remercie d'avance pour votre aide. :)

-
Edité par homermomo 14 octobre 2018 à 17:00:40

  • Partager sur Facebook
  • Partager sur Twitter
15 octobre 2018 à 12:12:10

Salut,

Comment sont faites les listes déroulantes ? Validation des données ? Objet ActiveX ?

Est-ce qu'il y a une macro qui tourne ?

  • Partager sur Facebook
  • Partager sur Twitter
15 octobre 2018 à 16:53:07

Bonjour,

Les listes sont faite avec validation des données. Et non, aucune macro tourne sur ce programme.

J'ai aussi essayer avec une macro mais ca ne marche pas car je sais faire que sur une seule celulle, désolé je débute.

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address = Range("A1").Address Then
 Call test
 End If
 End Sub
 
 Sub test()
 
 If Cells(1, 1).Value = "Aucun programme" Then
    Cells(1, 2).Value = ""
    Cells(1, 3).Value = ""
    
 ElseIf Cells(1, 1).Value = "ProgrammeVB" Then
        Cells(1, 2).Value = "Sur mac"
    
 ElseIf Cells(1, 1).Value = "ProgrammeVB" And Cells(1, 2).Value = "Arduino" Then
        Cells(1, 3).Value = "Autre"

 End If
 
 End Sub
 

Merci de ton aide.

-
Edité par homermomo 15 octobre 2018 à 17:02:29

  • Partager sur Facebook
  • Partager sur Twitter
15 octobre 2018 à 17:22:11

Il y a un artcile détaillé ici : https://www.contextures.com/xlDataVal02.html

En gros, ta validation des données sur Cells(1,1) est normale, tu donnes dans la source la plage où les choix sont écrits.

Pour Cells(1,2) par contre, dans la source il faut soit utiliser les plages nommées comme dans l'article soit utiliser une condition, par exemple "=SI($H$2="Programme VB";$D$16:$D$17;$C$16)" marchait bien chez moi (avec H2 qui contient le résultat de la première liste, D16:D17 les choix si "Programme VB" est choisi et C16 est vide).

Et ainsi de suite pour les autres listes, à la fin tu devrais avoir une sorte d'arbre des possibilités qui trace toutes les combinaisons de choix possibles.

  • Partager sur Facebook
  • Partager sur Twitter
15 octobre 2018 à 20:47:21

Super !

Ca marche, tu m'as beaucoup aider, je te remercie. 

Puis je te demander une dernière chose ? Enfaite, la ce qu'il se passe exactement, c'est ce que quand la première liste est sur "Aucun prrogramme", la cellule 1,2 reste bloqué donc l'opérateur ne peux accéder à la liste (ce qui est parfait ) mais est - il possible que quand la liste est sur "Aucun programme", la cellule 1,2 se retrouve vide car la il se bloque automatiquement sur la dernière valeur et je suis obligé de défiler la liste pour choisir le champs vide. (le contenu de la cellule C16). 

Par la même occasion j'aimerai à tout moment modifier la première liste, c'est à a dire que a tout moment j'aimerai mettre cette première liste sur "Aucun programme" et que quand c'est le cas, la cellule 1.2 et 1.3 soit vide. Or ce n'est pas le cas pour le moment. J'essaie donc de combiner le VBA avec les formules SI que tu m'as donner. 

Voici le programme: Le soucis c'est que ça quand je modifie une cellule compris dans la plage, et bien ça plante. 

Enfaite le "Exclus" est équivaux à "Aucun programme".

Je t'en demande beaucoup l'ami, mais ton aide m'es vraiment précieux. Merci encore. 

  • Partager sur Facebook
  • Partager sur Twitter
16 octobre 2018 à 10:07:57

Qu'est-ce que ça veut dire "ça plante" ? La macro plante ? Quel est le message d'erreur et sur quelle ligne ?

  • Partager sur Facebook
  • Partager sur Twitter
16 octobre 2018 à 10:39:39

Enfaite, excel ne répond pas et je suis obliger de forcer l’arret.

Et puis, il n y a pas possibilité de faire un OU dans la formule SI ? "=SI($H$2="Programme VB";$D$16:$D$17;$C$16)"  afin de dire que si H2 = "ProgrammeVB" ou "ProgrammeC" alors on affiche la liste déroulante.

Merci encore !

-
Edité par homermomo 16 octobre 2018 à 13:29:55

  • Partager sur Facebook
  • Partager sur Twitter
16 octobre 2018 à 14:31:13

>excel ne répond pas et je suis obliger de forcer l’arret.

Ha oui je viens de comprendre. Si tu modifies la valeur d'une cellule qui est dans A1:B10 alors Worksheet_change est appelé de nouveau, dont ça peut aller assez loin comme ça.

Il faut mettre EnableEvents = False au début de la Sub et remettre à true à la fin : https://stackoverflow.com/a/28029441

> il n y a pas possibilité de faire un OU dans la formule SI ?

=SI(OU($H$2="Programme VB";$H$2="Programme C");$D$16:$D$17;$C$16)



  • Partager sur Facebook
  • Partager sur Twitter
16 octobre 2018 à 16:16:30

Tu as raison pour ce qui est de la macro. Je pense du coup pouvoir tout faire avec une macro, sa serai plus simple non ?

  • Partager sur Facebook
  • Partager sur Twitter
17 octobre 2018 à 9:28:58

Aucune idée, j'ai jamais fait de truc dans ce genre là.
  • Partager sur Facebook
  • Partager sur Twitter
20 octobre 2018 à 13:35:58

Merci beaucoup, j'ai réussi à tout faire avec macro. Je trouve que les macro sont plus simple que les fonctions de Excel. 

Bonne journée :) 

  • Partager sur Facebook
  • Partager sur Twitter