[VBA] Adapter un menu déroulant à la saisie

Adapter un menu déroulant à la saisie [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 20-07-2009 à 09:17:13    

bonjour,  
 
actuellement j'utilise des menus déroulants dans une feuille Excel, sans code VBA.
je souhaiterai que la liste s'adapte au début de la saisie. je ne sais pas si je peux réussir cela sans passer par du VBA ?
 
exemple :
 
la liste contient :  
 
BW
SW
Bx
Sx
 
si l'utilisateur clique sur la case, tout s'affiche, mais si'l frappe la touche B, alors la liste ne lui propose plus que "BW" ou "Bx"
 
est ce possible ?
avec ou sans VBA ?

Reply

Marsh Posté le 20-07-2009 à 09:17:13   

Reply

Marsh Posté le 20-07-2009 à 16:00:58    

ça serait sympa de m'aider.
 
sinon j'ai un autre problème, je souhaite remplir un feuille d'un fichier avec la valeur des cellules d'une feuille d'un autre fichier (importer les valeurs, en somme)
 
voila ce que j'ai fait, ça ne marche pas, et je ne sais pas pourquoi
 

Citation :

Private Sub ImporteFichier_Click()
 
DocumentOrigine = Application.GetOpenFilename
For i = 1 To 48
For j = 4 To 100
ThisWorkbook.Sheets("TSS" ).Cells(i, j).Value = Workbooks("DocumentOrigine" ).Sheets("TSS" ).Cells(i, j)
Next j
Next i
 
End Sub

Reply

Marsh Posté le 20-07-2009 à 17:11:10    

Bonjour
 
Pour la 1ere question ca revient a recalculer la source en fonction du texte saisi dans la Combo. Pas tres compliqué, mais pas forcement tres rapide en fonction de la source de données.
Ta source est definie comment ? Par code ? Avec une liste de Validation ? Avec les outils formulaire ?
 
Pour ta seconde question, tu mets DocumentOrigine comme une string, or ce n'est pas une string, mais une variable, donc pas de double cote. Si ton fichier se nommait DocumentOrigine, tu mettrais des doubles cote, la non.
Workbooks("DocumentOrigine" ) <(--- Fait reference au fichier se nommant DocumentOrigine
Workbooks(DocumentOrigine ) <(--- Fait reference à ta variable DocumentOrigine (Qui elle, peut contenir une string avec des noms differents de fichiers)
Et ta variable DocumentOrigine prend pour valeur une string qui est definie par le biais de la boite de dialogue generée avec GetOpenFilename.
 
Cordialement


Message édité par SuppotDeSaTante le 20-07-2009 à 17:15:37

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 21-07-2009 à 11:26:18    

merci pour ton aide, j'ai resolu la premiere question en bidouillant.
 
il me reste une 3e question :
je souhaite sélectionner les 50 premières cellules d'une ligne dont le numéro est une variable NumeroLigne
sauf que je sais pas faire de plage autrement qu'avec A1:Z1... et que dans le cas ou mon numéro de ligne est une variable, ça ne marche pas

Reply

Marsh Posté le 21-07-2009 à 11:33:34    

Bonjour
 
Je pars du principe que ta variable numéro de de ligne se nomme NumLigne
Oui original je sais........

 
Tu fais un :
Range(Cells(NumeroLigne,1),Cells(NumeroLigne,50)).Select
 
Cells se compose comme ca : Cells(Numéro de ligne, Numéro de colonne)
A c'est la colonne 1, B la 2 etc.
Le range te permet donc d'inclure deux Cells pour selectionner une plage.
 
Penses peut etre aussi a indenter ton code, ca sera plus lisible, surtout quand tu as des boucles imbriquées.


Message édité par SuppotDeSaTante le 21-07-2009 à 11:40:39

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 21-07-2009 à 12:18:25    

merci 1000 fois


Message édité par StagiaireEnStress le 21-07-2009 à 12:31:53
Reply

Marsh Posté le 21-07-2009 à 12:32:33    

Reply

Marsh Posté le 21-07-2009 à 13:00:50    

sinon, je cherche a executer du code quand on intervient dans une colonne ( pr exemple, la colonne 3 ne doit recevoir comme données que des valeurs de type ( x chiffres + "," + y chiffres) en gros un nombre a virgule, qui peut etre 121,2 ou 1,18 par exemple

 

a la rigueur, les vérification je peux trouver, mais l'exécution de code lorsqu'on modifie une case...

 

édit, j'ai trouvé :
Private Sub Worksheet_change(ByVal Target As Range)
MsgBox "bawui"

 

mais quand je modifie les cells de ma sheet... j'ai JAMAIS la msgbox.
en fait je dois pas savoir faire fonctionner worksheet_change !

  



Message édité par StagiaireEnStress le 21-07-2009 à 13:49:57
Reply

Marsh Posté le 21-07-2009 à 14:10:52    

C'est surement parceque ton code est par exemple sur la Feuil1 et que tu modifies ta cellule sur la feuille2.
 
Le mieux (plus simple) c'est de passer ce code dans l'objet ThisWorkbook si tu veux verifier TOUTES les colonnes 3 de TOUTES tes feuilles.
Sinon tu peux tester sur le nom (ou l'index) de la feuille.
 
Je te mets deux exemples.
 

  • Sur toutes les colonnes 3 de toutes les feuilles :

Dans ThisWorkbook :

Code :
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  2.     'Si la colonne est 3 de la selection alors il met le message, peu importe la feuille.
  3.     If Target.Column = 3 Then MsgBox "toto"
  4. End Sub


 

  • Si par exemple tu ne veux le test que sur la feuille2 et la feuille3 :

Dans ThisWorkbook :

Code :
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  2.     'Si la colonne est 3 de la selection alors il met le message, mais seulement si tu es sur la feuil1 ou la feuil2
  3.     If Target.Column = 3 And (Sh.Name = "Feuil1" Or Sh.Name = "Feuil2" ) Then MsgBox "toto"
  4. End Sub


 

  • Tu ne veux le test que sur la feuil1 :

Sur l'objet Feuil1 :

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Column = 3 Then MsgBox "toto"
  3. End Sub


Message édité par SuppotDeSaTante le 21-07-2009 à 14:14:32

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 21-07-2009 à 14:14:23    

-_- you're so right
j'avais casé ça dans un module, desormais je l'ai mis dans la feuille en question et ça passe neeettement mieux.
 
merci pour ton aide précieuse, ça donne envie d'aider les prochains qui auront des questions auquelles je sais répondre.

Reply

Marsh Posté le 21-07-2009 à 14:14:23   

Reply

Marsh Posté le 21-07-2009 à 14:15:32    

J'ai édité mon post precedent, mais tu dois avoir le principal ;)
 
 
C'est le but du (d'un) forum hein :d


---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

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