Liste déroulante et If ...then

Liste déroulante et If ...then - VB/VBA/VBS - Programmation

Marsh Posté le 13-02-2007 à 20:47:49    

Bonjour,
Je suis débutant en vba, et c'est pas toujours facile, facile :pt1cable: . Voilà j'ai en partie réussi ce que je voulais, c'est afficher qqc (exemple 9m) dans une cellule (B1) si c'est écrit "humain" dans la cellule (A1) grâce à ce code :
 
Sub distance ()
Dim Race As String
Dim Dist As String
Race = Range ("A1" )
If Race = "humain" then Dist = "9m"
If Race = "gnôme" then Dist ="6m"
Range ("B1" ) = Dist
End Sub
 
Je voudrais obtenir la même chose avec une liste déroulante à la place de tapper manuellement "humain" en A1...mais lorsque je mets une liste en A1 ça ne marche plus...
 
Quelqu'un connait-il la solution ( et peut-il me l'expliquer de manière pas trop complexe..)?
Merci d'avance !
 

Reply

Marsh Posté le 13-02-2007 à 20:47:49   

Reply

Marsh Posté le 14-02-2007 à 15:51:34    

Alors,
 
tu dois plutot utiliser les "zones de liste déroulantes".
 
Exemple :
 
sur la feuil2 de ton classeur tu écris "Humain" en A1 et "Gnome" en A2
 
sur la feuil1, tu fais : Affichage/Barre d'outils/Boite à outils controle
dans le menu qui s'affiche choisis "zone de liste déroulante" et dessine la zone avec la souris sur ta feuil1
 
tu cliquesensuite dans le même menu (boite à outils) sur "Propriétés
et dans ListFillRange tu écris :
 
Feuil2!$A$1:$A$2
 
tu double-clique ensuite sur ta combobox et tu copies le code suivant :
 
Private Sub ComboBox1_Change()
 
If ComboBox1.Value = "Humain" Then Cells(1, 2) = "6m"
If ComboBox1.Value = "Gnome" Then Cells(1, 2) = "9m"
 
End Sub
 
Et voila.
 

Reply

Marsh Posté le 14-02-2007 à 19:07:43    

Merci beaucoup ! ça fonctionne  :jap:  

Reply

Marsh Posté le 14-02-2007 à 19:28:36    

Je me suis réjoui trop vite ! La question maintenant c'est :
 
1. est-ce que c'est possible de demander de mettre le résultat dans la cellule d'une autre feuille que celle de la liste et
2. est-ce qu'on peut mettre dans cette cellule le contenu d'une autre cellule ?
 
Car je ne vois pas comment je peux faire
 
Sub distance ()  
Dim Race As String  
Dim Dist As String  
Race = Range ("A1" )  
If Race = "humain" then Dist = Range("feuil2!A1" )  
If Race = "gnôme" then Dist ="Range("feuil2!A2" )
Range ("B1" ) = Dist  
End Sub  
 
avec le système de Combobox...

Reply

Marsh Posté le 15-02-2007 à 11:54:46    

Pour afficher ton résultat sur une autre page tu ajoutes la référence de cette feuille :  
If ComboBox1.Value = "Gnome" Then _
activeworkbook.worksheets(le chiffre que tu veux).cells(X,Y)="9m"
 
Pour y mettre le contenu d'une autre cellule :
 
If ComboBox1.Value = "Gnome" Then _
activeworkbook.worksheets(le chiffre que tu veux).cells(X,Y)= _
activeworkbook.worksheets(le chiffre que tu veux).cells(X',Y')
 
C'est tout simple.
 
 
 

Reply

Marsh Posté le 15-02-2007 à 12:16:59    

Si tu veux rapidement te perfectionner en vba surtout sur les basics, le mieux c'est internet.
Les pages d'exemple et de théorie avec lesquelles j'ai appris (en 2 semaines max) :
 
http://www.excelabo.net
http://www.cathyastuce.com
http://www.info-3000.com/vbvba/
http://drq.developpez.com/vb/tutoriels/String/
http://bvrve.club.fr/Astuces_Michel/02excelvba.html

Reply

Marsh Posté le 15-02-2007 à 14:19:59    

Merci encore !  
Je vais continuer mon apprentissage en suivant ton conseil. Peut-être à dans quelques semaines, quand parce que j'en aurais appris plus, je voudrais en faire plus et donc j'aurais un pb à un moment ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed