Sasir 1eres lettre liste decalee
Bonjour
J'essais de trouver une solution à mon problème depuis 2 jours mais je n'y arrive pas.
Dans l'onglet ci-joint devis fournisseur, pour rechercher un article, si je saisis les 1ères lettres et que je valide la ligne article en faisant ok . tout est parfait ; les valeurs (réf, désignation, unité, poids) sont inscrites dans les bonnes colonnes
Par contre, si je n'ai pas besoin d'utiliser la case "1ères lettres" pour trouver mon article, c'est à dire que si je ne saisis aucune lettres mais que je déroule simplement le menu déroulant pour choisir l'article et que je fais OK, je n'ai plus l'unité et je retrouve la réf fournisseurs inscrite dans la colonne poids.
Si vous pouviez m'aider à résoudre cela.
Merci d'avance
cdlt
Bonjour Marieno35
Tu nous parles d'un menu déroulant... je dois être aveugle, je ne vois pas où ?
A+
Je ne me suis sans doute mal exprimée.
Dans l'onglet DEVIS de mon fichier , cliquez 2 fois dans la colonne 1 = réf, un fenêtre s'ouvre avec 1 menu déroulant contenant les articles.
cdlt
Re,
Ton problème vient du fait que tu n'initialise pas ta Listbox de la même façon que lorsque tu saisi tes 1ère lettres
Voici un code qui fonctionne, peut importe le choix
Option Explicit
Private Sub UserForm_Initialize()
Me.ListBox1.List = [Articles].Value
End Sub
Private Sub TextBox1_Change()
Dim Ind As Long
' Effacer la Listbox
Me.ListBox1.Clear
' Remettre le contenu dedans
Me.ListBox1.List = [Articles].Value
' Pour chaque élément de la liste en partant de la fin (suppression)
For Ind = Me.ListBox1.ListCount - 1 To 0 Step -1
' Si le terme n'est pas trouvé dans la désignation
If InStr(1, UCase(Me.ListBox1.List(Ind, 1)), UCase(Me.TextBox1)) = 0 Then
' On supprime l'élément de la liste
Me.ListBox1.RemoveItem Ind
End If
Next Ind
End Sub
Private Sub CommandButton1_Click()
Dim LigSel As Long
If ListBox1.ListIndex = -1 Then
MsgBox "Vous n'avez rien sélectionné.", 16
Exit Sub
End If
' Définir le numéro de la ligne sélectionnée
LigSel = Selection.Row
' Avec la feuille
With Sheets("DEVIS")
' Sur la ligne sélectionnée, 1ère colonne
.Cells(LigSel, 1) = Me.ListBox1.Column(0)
' Sur la ligne sélectionnée, 2ème colonne
.Cells(LigSel, 2) = Me.ListBox1.Column(1)
.Cells(LigSel, 8) = Me.ListBox1.Column(6)
On Error Resume Next
.Cells(LigSel, 12) = Me.ListBox1.Column(9) * 1
On Error GoTo 0
End With
Unload Me
End SubA+
Bonsoir
Je te remercie pour ton aide Bruno
J'ai fait un copier coller mais j'ai un message d'erreur :
"erreur9 L'indice n'appartient pas à la sélection "
Je ne vois pas de quoi il s'agit car je n'y connais rien en VBa.
Merci d'avance si vous avez la réponse à ce problème.
cdlt
Bonjour
Je me suis trompée de fichier.
C'est bien ce dernier fichier 6 (4) qu'il faut regarder pour trouver l'erreur.
J'espère que quelqu'un à une idée ; j'ai cherché mais je ne vois pas . ne connaissant pas VBA c'est la cata ;
j'ai toujours le même message.
merci et good week-end
cdlt
Bonjour,
J'ai oublié de t'en parler, désolé
Il faut supprimer le dernier espace du nom de ta feuille DEVIS
A+
Bonjour
Encore merci Bruno
Rien à dire c'est parfait ; je vais essayer tout cela dans mon tarif qui contient 3000 articles en espérant que ce ne sera pas trop lent à l'utilisation.
Je ne voudrais pas avoir l'air d'abuser de ta gentillesse
Mais j'ai une autre question qui me trotte dans la tête ; si ma liste d'articles n'est pas dans le même fichier que ma demande de prix ; existe t-il une solution en vba ou bien Est-ce trop compliqué ?
bonne journée
cdlt
Rebonjour
J'ai donc essayé la solution de Bruno qui fonctionne très bien mais j'ai un tarif qui fait 4000 articles environ et la recherche qui se fait
sur tout les mots qui contiennent les lettres saisies ; c'est un peu compliqué et fastidieux ;
j'ai donc modifié mon exemple ci-joint en créant 1 texbox1 pour la recherche uniquement sur les 1ères lettres en début de ligne article et une 2ème texbox2 permettant si besoin une recherche plus large sur tout les mots de la ligne de l'article
Pour la texbox2, j'ai donc fait un copier coller de la solution de Bruno mais je ne sais pas comment faire pour la textbox1 si je veux faire 1 recherche que sur les 1ères lettres de la ligne.
Enfin, lorsque ma liste article s'affiche dans ma demande de devis, j'ai également le nom du fournisseur ... et le dernier prix d'achat qui s'affiche mais ce dernier met tous les chiffres après la virgule alors 2 suffirait.
Si quelqu'un peut m'aider, je le remercie d'avance.
bonne journée
cdlt
Bonsoir Marieno35
En repartant d'un USF que j'ai développé pour mon boulot,
voici un exemple de ce qu'il est possible de faire avec fichier articles à part
Nota : mettre les 2 fichiers dans le même dossier,
sinon il est possible de définir le chemin d'accès dans le module "MGestion"
A+
Bonjour
Désolée mais le fichier devisBM45 ne s'ouvre pas : message d'erreur = contenu illisible
CDLT
Salut Marieno35
Effectivement, je ne sais pas ce qui c'est passé
J'ai remis le fichier "réparé" dans le post précédent
A+
Bonjour,
Saisie intuitive sur les lettres contenues.
Dim a(), Tarticles()
Private Sub UserForm_Initialize()
a = Application.Transpose([liste].Value)
Tarticles = [articles].Value
Me.ComboBox1.List = a
Me.ComboBox1.SetFocus
End Sub
Private Sub ComboBox1_Change()
If Me.ComboBox1 <> "" And IsError(Application.Match(Me.ComboBox1, a, 0)) Then
Me.ComboBox1.List = Filter(a, Me.ComboBox1.Text, True, vbTextCompare)
Me.ComboBox1.DropDown
End If
End Sub
Private Sub CommandButton1_Click()
If ComboBox1.ListIndex = -1 Then
MsgBox "Vous n'avez rien sélectionné.", 16
Exit Sub
End If
For i = 1 To UBound(Tarticles)
If Tarticles(i, 1) = Me.ComboBox1 Then
ActiveCell = Tarticles(i, 3)
ActiveCell.Offset(, 1) = Tarticles(i, 1)
ActiveCell.Offset(, 7) = Tarticles(i, 6)
End If
Next i
Unload Me
End SubCf PJ
Ceuzin
BONJOUR A TOUS
DANS MA DEMANDE DE PRIX CI-JOINTE, SUR LA LISTE CLIENT JE PEUX FAIRE DES RECHERCHES SOIT SUR LES 1ERES OU SOIT SUR DIVERSES LETTRES CONTENUES DANS LES MOTS.
LORSQUE JE SAISIE LA CELLULE A12, LA LISTE DES ARTICLES S'OUVRE MAIS IL N'Y A QUE LE NOM DE L'ARTICLE QUI APPARAIT , JE SOUHAITERAIS QU'APPARAISSE AUSSI PAR EXEMPLE LA DATE D'ACHAT ET LE NOM DU FOURNISEUR DE l'ARTICLE - VOIR MON EXEMPLE
SU QUELQU'UN A UNE IDEE MERCI D'AVANCE
J'AVAIS OUBLIE LE FICHIER
BONJOUR A TOUS
DANS MA DEMANDE DE PRIX CI-JOINTE, SUR LA LISTE CLIENT JE PEUX FAIRE DES RECHERCHES SOIT SUR LES 1ERES OU SOIT SUR DIVERSES LETTRES CONTENUES DANS LES MOTS.
LORSQUE JE SAISIE LA CELLULE A12, LA LISTE DES ARTICLES S'OUVRE MAIS IL N'Y A QUE LE NOM DE L'ARTICLE QUI APPARAIT , JE SOUHAITERAIS QU'APPARAISSE AUSSI PAR EXEMPLE LA DATE D'ACHAT ET LE NOM DU FOURNISEUR DE l'ARTICLE - VOIR MON EXEMPLE
SU QUELQU'UN A UNE IDEE MERCI D'AVANCE
Bonsoir
As-tu essayé la proposition que je t'avais faite ici ?
https://forum.excel-pratique.com/excel/sasir-1eres-lettre-liste-decalee-t65676.html#p372891
A+
Bonjour
Je remercie Ceuzin pour son exemple que j'ai réussi à adapter à un extrait de mon fichier.
lorsque je clic dans la cellule A12, de l'onglet DEVIS, le fichier s'ouvre avec le nom de l'article, le N°, la date d'achat, le nom du fournisseur, l'unité" et le prix d'achat. c'est exactement ce que je voulais
Une fois l'article choisit, je fais OK mais il n'y a que le N° et la désignation qui s'inscrit dans le devis ; je n'arrive pas à afficher l'unité et le prix ; il doit y avoir une erreur mais je ne l'ai pas trouvée.
Si quelqu'un pouvait m'aider !!!!!
merci
Bonjour
Remplaces la macro correspondante par celle-ci
Private Sub CommandButton1_Click()
If Me.TextBox1 <> "" Then
ActiveCell.Offset(0, 0) = Me.TextBox1
ActiveCell.Offset(0, 1) = Me.ComboBox1
ActiveCell.Offset(0, 7) = Me.TextBox4
ActiveCell.Offset(0, 9) = Val(Replace(Me.TextBox5, ",", "."))
Unload Me
End If
End SubBonjour
Merci cela fonctionne à merveille ;
j'ai donc constaté que la formule ActiveCell.Offset(0, 9) = Val(Replace(Me.TextBox5,",", ".")) permettait de transformer la valeur de la texbox en numérique puisque c'est un prix, en gardant uniquement 2 chiffres après la virgule mais lorsque j'ouvre la liste des articles, les prix sont présentés avec plusieurs chiffres après la virgule et il en est de même de l'affichage du prix dans la texbox ; existe t-il une formule pour éviter celà ? (voir mon exemple)
Merci d'avance pour votre aide
bye
Bonjour
Une solution
Remplaces tes formules en colonne M de la page "Tarif"
exemple
=H5+I5+ARRONDI(;2)par
=ARRONDI(H5+I5;2)