probleme dans une base de données

robinhood

XLDnaute Occasionnel
Bonjour le Forum

j'ai une base de données qui comporte deux types de données :

1/ des données génériques, c'est-à-dire une référence générique avec plusieurs longueur
2/ des produits uniques, a chaque produit correspond une seule référence avec une seule longueur,

mon problème est que je travaille avec un fichier dont mon référentiel est la reférence, c'est a dire j'introduit la référence et le fichier fait les recherches dans la base de données, mais quand j'introduit une référence ganérique il choisit la première référence qui n'est pas forcément celle avec la bonne longueur,

existe t-il une solution pour que quand j'introduit une référence générique le fichier me propose de choisir une longueur parmi une liste pour avoir le bon produit,

Merci de votre aide

ci-joint le fichier descriptif.
 

Pièces jointes

  • robinhood.xls
    20.5 KB · Affichages: 89
  • robinhood.xls
    20.5 KB · Affichages: 90
  • robinhood.xls
    20.5 KB · Affichages: 88

robinhood

XLDnaute Occasionnel
Re : probleme dans une base de données

bonjour Catrice

dans le fichier test1 est-il possible de supprimer la liste des références dans la colonne A, c'est a dire que j'introduit moi la référence, mais si elle appartienne a un ensemble (ref génériques) le mème menu apparait.

peut-on commencer par cette amélioration.
 

jeanpierre

Nous a quitté
Repose en paix
Re : probleme dans une base de données

Bpnjour robinhood, le fil,

Dans ta formulation, ta base est constituée de 2 colonnes et tu recherches sur la troisième, cela ne peut fonctionner, modifie comme suit :

=SI(ESTERREUR(RECHERCHEV(C2;Feuil2!$B:$C;2;FAUX));"Inserrer REF";RECHERCHEV(C2;Feuil2!$B:$C;2;FAUX)).

Je n'ai pas été plus loin.

Bon après-midi.

Jean-Pierre
 

Catrice

XLDnaute Barbatruc
Re : probleme dans une base de données

Bonsoir,

ci-joint une nouvelle approche.
Les informations se remplissent dans les colonnes et evitent l'utilisation de formules.

J'ai allégé le fichier pour pouvoir l'attacher au Post.
 

Pièces jointes

  • Calcul Rendement FORUM.zip
    44.5 KB · Affichages: 37
  • Calcul Rendement FORUM.zip
    44.5 KB · Affichages: 39
  • Calcul Rendement FORUM.zip
    44.5 KB · Affichages: 37
Dernière édition:

robinhood

XLDnaute Occasionnel
Re : probleme dans une base de données

Bonjour Catrice, James.

j'adoooooooore :D:D:D, c'est exactement ce que je cherche.

je vais essayer de le remplir avec toute la base de données et tous les autres données.

je vous tiendrais au courant

encore Merci :)
 

robinhood

XLDnaute Occasionnel
Re : probleme dans une base de données

Bonjour

ça marche bien, j'ai réussi a ajouter une autre donnée "type carton" qui s'ajoute automatiquement pour les références uniques.
par contre pour les références génériques je n'ai pas réussi a ajouter une autre colonne avec le "type de carton"

voilà mon code actuel avec les petites modifications que j'ai fait.

Public MaDest
Private Sub ListBox1_Click()
Sheets("Feuil1").Range(MaDest).Offset(0, 7) = Sheets("Feuil1").ListBox1.Column(1)
Sheets("Feuil1").Range(MaDest).Offset(0, 6) = Sheets("Feuil1").ListBox1.Column(2)
Sheets("Feuil1").Range(MaDest).Offset(0, 9) = Sheets("Feuil1").ListBox1.Column(3)
Sheets("Feuil1").Range(MaDest).Offset(0, 8) = Sheets("Feuil1").ListBox1.Column(4)
Sheets("Feuil1").Range(MaDest).Offset(0, 1) = Sheets("Feuil1").ListBox1.Column(4)
Sheets("Feuil1").Range(MaDest).Offset(0, 2) = Sheets("Feuil1").ListBox1.Column(5)
Sheets("Feuil1").ListBox1.Visible = False
ActiveCell.Select
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Row > 1 And Target.Rows.Count = 1 And Target.Columns.Count = 1 Then
If Target = "" Then Exit Sub
Application.EnableEvents = False
Set MaZoneRef = Sheets("BD").Range("B2:" & Sheets("BD").Range("B65536").End(xlUp).Address)
NbRef = Application.CountIf(MaZoneRef, Target)
Select Case NbRef
Case 0: Target = "Ref error !"
Case 1
Target.Offset(0, 7) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 1).Resize(1, 1).Value
Target.Offset(0, 6) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 2).Resize(1, 1).Value
Target.Offset(0, 9) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 3).Resize(1, 1).Value
Target.Offset(0, 8) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 4).Resize(1, 1).Value
Target.Offset(0, 1) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 4).Resize(1, 1).Value
Target.Offset(0, 2) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 5).Resize(1, 1).Value
Target.Offset(0, 12) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 6).Resize(1, 1).Value
Case Else
With Sheets("Feuil1").ListBox1
MaPos = Application.Match(Target, MaZoneRef, 0) - 1
.ListFillRange = "BD!" & MaZoneRef.Offset(MaPos, 0).Resize(NbRef, 6).Address
.ColumnWidths = "40;120;40;30;30;30"
.Width = 315
.Visible = True
.Top = Target.Top
.Left = Target.Left
End With
MaDest = Target.Address
End Select
End If
Application.EnableEvents = True
End Sub
 

Catrice

XLDnaute Barbatruc
Re : probleme dans une base de données

Bonjour,

Ca doit etre qq chose du type (en bleu la ligne à insérer) :

..........
Sheets("Feuil1").Range(MaDest).Offset(0, 2) = Sheets("Feuil1").ListBox1.Column(5)
Sheets("Feuil1").Range(MaDest).Offset(0, 12) = Sheets("Feuil1").ListBox1.Column(6)
Sheets("Feuil1").ListBox1.Visible = False
ActiveCell.Select
............

En revanche, en me basant sur le fichier sur lequel j'ai travaillé, Offset(0,12) correspond au "Temps d'emballage".

As-tu rajouté un champ à ta base de Ref ? Si oui, il faudra modifier la ListBox
.ListFillRange = "BD!" & MaZoneRef.Offset(MaPos, 0).Resize(NbRef, 7).Address
.ColumnWidths = "40;120;40;30;30;30;30
Ainsi que le nb de colonnes dans les propriétés (passer de 6 à 7)



Pour mémoire, il est impératif que la base (en feuil2) soit triée, au moins que les Ref génériques soient regroupées.
 
Dernière édition:

robinhood

XLDnaute Occasionnel
Re : probleme dans une base de données

bonjour Catrice

j'ai fait les changements demandés mais sans résultats.

NB: j'ai renommé la feuil2 en BD "base de données".

voilà le code obtenu.

Public MaDest
Private Sub ListBox1_Click()
Sheets("Feuil1").Range(MaDest).Offset(0, 7) = Sheets("Feuil1").ListBox1.Column(1)
Sheets("Feuil1").Range(MaDest).Offset(0, 6) = Sheets("Feuil1").ListBox1.Column(2)
Sheets("Feuil1").Range(MaDest).Offset(0, 9) = Sheets("Feuil1").ListBox1.Column(3)
Sheets("Feuil1").Range(MaDest).Offset(0, 8) = Sheets("Feuil1").ListBox1.Column(4)
Sheets("Feuil1").Range(MaDest).Offset(0, 1) = Sheets("Feuil1").ListBox1.Column(4)
Sheets("Feuil1").Range(MaDest).Offset(0, 2) = Sheets("Feuil1").ListBox1.Column(5)
Sheets("Feuil1").Range(MaDest).Offset(0, 12) = Sheets("Feuil1").ListBox1.Column(6)
Sheets("Feuil1").ListBox1.Visible = False
ActiveCell.Select
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Row > 1 And Target.Rows.Count = 1 And Target.Columns.Count = 1 Then
If Target = "" Then Exit Sub
Application.EnableEvents = False
Set MaZoneRef = Sheets("BD").Range("B2:" & Sheets("BD").Range("B65536").End(xlUp).Address)
NbRef = Application.CountIf(MaZoneRef, Target)
Select Case NbRef
Case 0: Target = "Ref error !"
Case 1
Target.Offset(0, 7) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 1).Resize(1, 1).Value
Target.Offset(0, 6) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 2).Resize(1, 1).Value
Target.Offset(0, 9) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 3).Resize(1, 1).Value
Target.Offset(0, 8) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 4).Resize(1, 1).Value
Target.Offset(0, 1) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 4).Resize(1, 1).Value
Target.Offset(0, 2) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 5).Resize(1, 1).Value
Target.Offset(0, 12) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 6).Resize(1, 1).Value
Case Else
With Sheets("Feuil1").ListBox1
MaPos = Application.Match(Target, MaZoneRef, 0) - 1
.ListFillRange = "BD!" & MaZoneRef.Offset(MaPos, 0).Resize(NbRef, 7).Address
.ColumnWidths = "40;120;40;30;30;30;30"
.Width = 315
.Visible = True
.Top = Target.Top
.Left = Target.Left
End With
MaDest = Target.Address
End Select
End If
Application.EnableEvents = True
End Sub
 
Dernière édition:

Catrice

XLDnaute Barbatruc
Re : probleme dans une base de données

Re,

Ben..., chez moi ça fontionne (en faisant toutes les modifs dont j'ai parlé) ;)

Voir le fichier joint.
 

Pièces jointes

  • Calcul Rendement FORUM.zip
    46.9 KB · Affichages: 34
  • Calcul Rendement FORUM.zip
    46.9 KB · Affichages: 38
  • Calcul Rendement FORUM.zip
    46.9 KB · Affichages: 41

robinhood

XLDnaute Occasionnel
Re : probleme dans une base de données

Bonjour tout le monde ;Catrice

je viens d'utiliser ce fichier pour un autre usage mais avec des références uniques, par contre le list box apparait pour des ref uniques.

je souhaite que vous modifiez le code dessous pour éliminer le list box et que le code fait seulement des opérations de copier coller (pour éviter la fonction recherchev) !!!.

Public MaDest
Private Sub ListBox1_Click()
Sheets("Feuil1").Range(MaDest).Offset(0, 7) = Sheets("Feuil1").ListBox1.Column(1)
Sheets("Feuil1").Range(MaDest).Offset(0, 6) = Sheets("Feuil1").ListBox1.Column(2)
Sheets("Feuil1").Range(MaDest).Offset(0, 9) = Sheets("Feuil1").ListBox1.Column(3)
Sheets("Feuil1").Range(MaDest).Offset(0, 8) = Sheets("Feuil1").ListBox1.Column(4)
Sheets("Feuil1").Range(MaDest).Offset(0, 1) = Sheets("Feuil1").ListBox1.Column(4)
Sheets("Feuil1").Range(MaDest).Offset(0, 2) = Sheets("Feuil1").ListBox1.Column(5)
Sheets("Feuil1").ListBox1.Visible = False
ActiveCell.Select
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 And Target.Row > 1 And Target.Rows.Count = 1 And Target.Columns.Count = 1 Then
If Target = "" Then Exit Sub
Application.EnableEvents = False
Set MaZoneRef = Sheets("Feuil2").Range("B2:" & Sheets("Feuil2").Range("B65536").End(xlUp).Address)
NbRef = Application.CountIf(MaZoneRef, Target)
Select Case NbRef
Case 0: Target = "Ref error !"
Case 1
Target.Offset(0, 7) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 1).Resize(1, 1).Value
Target.Offset(0, 6) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 2).Resize(1, 1).Value
Target.Offset(0, 9) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 3).Resize(1, 1).Value
Target.Offset(0, 8) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 4).Resize(1, 1).Value
Target.Offset(0, 12) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 6).Resize(1, 1).Value
Target.Offset(0, 13) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 7).Resize(1, 1).Value
Target.Offset(0, 14) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 8).Resize(1, 1).Value
Target.Offset(0, 15) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 13).Resize(1, 1).Value
Target.Offset(0, 17) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 14).Resize(1, 1).Value
Target.Offset(0, 19) = MaZoneRef.Offset(Application.Match(Target, MaZoneRef, 0) - 1, 15).Resize(1, 1).Value
Case Else
With Sheets("Feuil1").ListBox1
MaPos = Application.Match(Target, MaZoneRef, 0) - 1
.ListFillRange = "Feuil2!" & MaZoneRef.Offset(MaPos, 0).Resize(NbRef, 7).Address
.ColumnWidths = "40;120;40;30;30;30;30"
.Width = 345
.Visible = True
.Top = Target.Top
.Left = Target.Left
End With
MaDest = Target.Address
End Select
End If
Application.EnableEvents = True
End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 963
Messages
2 093 996
Membres
105 906
dernier inscrit
aifa