Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1553 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1906603
StagiaireE​nStress
Posté le 20-07-2009 à 09:17:13  profilanswer
 

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 ?

mood
Publicité
Posté le 20-07-2009 à 09:17:13  profilanswer
 

n°1906866
StagiaireE​nStress
Posté le 20-07-2009 à 16:00:58  profilanswer
 

ç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

n°1906901
SuppotDeSa​Tante
Aka dje69r
Posté le 20-07-2009 à 17:11:10  profilanswer
 

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 !
n°1907134
StagiaireE​nStress
Posté le 21-07-2009 à 11:26:18  profilanswer
 

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

n°1907142
SuppotDeSa​Tante
Aka dje69r
Posté le 21-07-2009 à 11:33:34  profilanswer
 

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 !
n°1907159
StagiaireE​nStress
Posté le 21-07-2009 à 12:18:25  profilanswer
 

merci 1000 fois


Message édité par StagiaireEnStress le 21-07-2009 à 12:31:53
n°1907168
SuppotDeSa​Tante
Aka dje69r
Posté le 21-07-2009 à 12:32:33  profilanswer
 
n°1907177
StagiaireE​nStress
Posté le 21-07-2009 à 13:00:50  profilanswer
 

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
n°1907214
SuppotDeSa​Tante
Aka dje69r
Posté le 21-07-2009 à 14:10:52  profilanswer
 

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 !
n°1907217
StagiaireE​nStress
Posté le 21-07-2009 à 14:14:23  profilanswer
 

-_- 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.

mood
Publicité
Posté le 21-07-2009 à 14:14:23  profilanswer
 

n°1907220
SuppotDeSa​Tante
Aka dje69r
Posté le 21-07-2009 à 14:15:32  profilanswer
 

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 !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Calendrier avec VBA pour Access[VBA] Comment récupérer la taille d'un classeur ouvert
[VBA Excel 2007] erreur Nombre d'arguments incorrects [RESOLU]VBA Premier programme assez coriace
[VBA] Erreur out of range sur scriptVBA Excel
[VBA] créer fichier excel à partir d'ongletUserform : saisie dans une Textbox
[VBA] Comment détecter les macros dans les classeurs .xls[Résolu][VBA] Importer des données d'un fichier.txt
Plus de sujets relatifs à : [VBA] Adapter un menu déroulant à la saisie


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR