XL 2016 affichage automatique

BAYANE

XLDnaute Nouveau
Bonjour Nicopec,

Désolé pour mon post, je me suis mal exprimé.

Travaillant sur VBA, J'ai une liste déroulante nommée Reference ( de R1 à R80 ), et une case texte nommée Désignation.
Sur une feuille excel, j'ai deux tableaux du coup : Reference (80 lignes ) et Désignation ( 80 lignes )

Je souhaite par exemple quand je clique sur la Reference R5, La case Désignation se remplie autotiquement avec la 5eme case du tableau désignation (5 eme ligne)

Je ne sais pas si je suis claire cette fois mais je débute dans Excel et VBA


Merci par avance
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour à tous,

Puisqu'on finasse :
Code:
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex = -1 Then ComboBox1 = ""
TextBox1 = ComboBox1.Value
End Sub

Private Sub UserForm_Initialize()
ComboBox1.List = [Listes].Value
End Sub
BoundColumn est à 2.

Fichier (2).

A+
 

Pièces jointes

  • USF(2).xlsm
    26.8 KB · Affichages: 27

BAYANE

XLDnaute Nouveau
Merci beaucoup pour votre aide !
Je reviens vous '' embeter '' car en rajoutant une 3 eme colonne '' Prix '', je ne trouve pas le bon code pour afficher le prix automatiquement,
Excusez moi d'avance, je suis débutant sur Excel et VBA,

Ci joint le dossier avec la 3eme colonne.

Merci par avance
 

Pièces jointes

  • TestVBA.xlsm
    21.8 KB · Affichages: 32

Dranreb

XLDnaute Barbatruc
Bonjour.
Je pense que personnellement je ferais comme ça :
VB:
Option Explicit
Private TDP()
Private Sub UserForm_Initialize()
   Dim R As Range
   Set R = [Référence]
   ComboBox1.List = R.Value
   TDP = R.Offset(, 1).Resize(, 2).Value
   End Sub
Private Sub ComboBox1_Change()
   If ComboBox1.MatchFound Then
      TextBox1 = TDP(ComboBox1.ListIndex + 1, 1)
      TextBox2 = TDP(ComboBox1.ListIndex + 1, 2)
   Else
      TextBox1 = ""
      TextBox2 = ""
      End If
   End Sub
 

Dranreb

XLDnaute Barbatruc
Et même plutôt comme ça d'ailleurs :
VB:
Option Explicit
Private TArticles(), LA&
Private Sub UserForm_Initialize()
   TArticles = [Référence].Resize(, 3).Value
   ComboBox1.List = TArticles
   End Sub
Private Sub ComboBox1_Change()
   LA = ComboBox1.ListIndex + 1
   If ComboBox1.MatchFound Then
      TextBox1 = TArticles(LA, 2)
      TextBox2 = TArticles(LA, 3)
   Else
      TextBox1 = ""
      TextBox2 = ""
      End If
   End Sub
Parce qu'en général c'est pour en faire quelque chose derrière, les inscrire ailleurs, dans une ligne de facture ou autre, et je préfèrerais reprendre les informations de TArticles(LA, …) où elles sont du bon type de données, plutôt que des TextBox où elles on été converties en textes.
 

BAYANE

XLDnaute Nouveau
Tout a fait Dranreb, Car après il faut inscrire quelques informations du tableau dans un Devis

J'ai essayé votre code dans le mini ficher, ca marche très bien mais dés que je le mets dans mon projet, il m'affiche un message d'erreur, il ne reconnait pas '' reference ''... Sachant que sur mon fichier de projet j'ai fait exactement la meme chose, j'ai crée une nouvelle feuille avec les 3 colonnes et tout.
 

BAYANE

XLDnaute Nouveau
C'est un nom dans le gestionnaire de noms
Je vous recommande cependant plutôt de mettre votre base Articles sous forme de tableau Excel (représenté par un ListObject en VBA)

Ca ne te dérange pas si je t'envois le document de mon projet comme ca vous me dites ce que vous en pensez ?
Je souhaite vraiment trouver une solution à mon probleme comme ca je passe à autre chose :(

merci d'avance
 

BAYANE

XLDnaute Nouveau
Ci-joint mon projet pour le tableau de bord
J'ai essayé d'appliquer vos solutions mais je tombe sur plusieurs erreurs pourtant c'est le meme cas :
Case déroulante : Référence
Case : Désignation
Case : Prix Unitaire TTC ( Prix pour l'ancien cas que vous avez traité )

Merci d'avance pour votre aide et votre PATIENCE surtout
 

Pièces jointes

  • TESTTEST.xlsm
    88.9 KB · Affichages: 19
  • sss.png
    sss.png
    15.4 KB · Affichages: 18

Dranreb

XLDnaute Barbatruc
Vous ne vous êtes pas trompé de classeur ?
Un conseil: Donnez des noms mnémonique à vos contrôles, vous vous y retrouverez plus facilement.
Faites les commencer par un trigramme pris de cette liste puis du significatif avec une majuscule au début, voir au début de chaque mot composé collé:
upload_2018-7-23_13-1-10.png
 

Dranreb

XLDnaute Barbatruc
Vous essayez ce que vous avez défini, où vous essayez n'importe quoi ?
Je vois bien déjà des Tableaux, mais il ont pour la plupart gardé leur nom d'origine style TaleauN
Et la base article n'a pas été mise sous cette forme.
Moi je renomme toujours tout, de façon mnémonique, y compris les objets Workhseet de la rubrique Microsoft Excel Objets.
Quand vous aurez un peu organisé tout ça vous pourrez faire TArticles = [TabBdDArticles].Value ou bien TArticles = WshArticles.ListObjects(1).DataBodyRange.Value
 

BAYANE

XLDnaute Nouveau
Je ne me suis pas trompé de classeur, j'ai bien crée une nouvelle feuille nommée '' Liste '' avec 3 colonnes : Référence, Désignation et Prix
Dans le menu Gestion des noms, j'ai attribué comme tu m'as expliqué : ListRéférence , ListDésignation et ListPrix

Après je comprends plus rien, je ne sais pas quoi faire au juste
 

Pièces jointes

  • TESTTEST.xlsm
    86.5 KB · Affichages: 19

Dranreb

XLDnaute Barbatruc
Pas simple à utiliser tels que vous les avez définis (colonnes entières au lieu juste de leurs partie 'corp' au nombre de lignes exact).
Mon conseil avait plutôt été de mettre ce tableau sous forme de tableau Excel
Là, comme vous avez fait on est obligé de faire :
VB:
TArticles = Intersect(Feuil10.[ListRéférence:ListPrix], Feuil10.[2:1000000], Feuil10.UsedRange).Value
 

BAYANE

XLDnaute Nouveau
Ah oui d'accord :D Je vais mettre des tableaux dans ce cas
Mais j'avoue que je trouve ca très compliqué pour moi, serait il possible, si ca ne te derange pas, de modifier mon code existant sur le fichier ? :(
 

Pièces jointes

  • TESTTEST.xlsm
    88.9 KB · Affichages: 23

Dranreb

XLDnaute Barbatruc
Pas des tableaux, mais un seul tableau avec les trois colonnes.
Si vous l'appelez TabArticles il suffira de faire TArticles = Feuil10.[TabArticles].Value
Et si vous renommez ce Feuil10 qui ne veut rien dire en WshArticles: TArticles = WshArticle.[TabArticles].Value
 

Discussions similaires

Réponses
7
Affichages
553

Membres actuellement en ligne

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2