Recherche multicritère VBA

nextrevolution

XLDnaute Occasionnel
JP 14 m'a donné un fichier de recherche multicritères mais lors de quelques modifications ca bogue, j'ai passé 4 heures dessus et comme je suis pas très fort en VBA je m'en remet à vous pour m'aider.

CI joint mon ficher avec mes problèmes qui sont énoncés dedans
 

Pièces jointes

  • Test réservation.zip
    36.8 KB · Affichages: 223
  • Test réservation.zip
    36.8 KB · Affichages: 224
  • Test réservation.zip
    36.8 KB · Affichages: 216

jp14

XLDnaute Barbatruc
Re : Recherche multicritère VBA

Bonjour

Ci dessous le code
au lieu de
Call MsgBox("La date a changée, la liste du matériel sélectionné va être supprimée", vbInformation, Application.Name)
ecrire
Code:
    Select Case MsgBox("La date a changée, la liste du matériel sélectionné va être supprimée." _
                       & vbCrLf & "" _
                       & vbCrLf & "Voulez vous continuer" _
                       & vbCrLf & "" _
                       , vbYesNo Or vbInformation Or vbDefaultButton1, Application.Name)
    
        Case vbYes
    
        Case vbNo
            Exit Sub
    End Select

JP
 

nextrevolution

XLDnaute Occasionnel
Re : Recherche multicritère VBA

Bonjour,

Pour la validation ça fonctionne.
Par contre la remise à zéro automatique de listview1 rien à faire.
J'ai appeler la fonction remise à zéro lorsqu’on modifie la date, ça marche pas, j'ai recopié la fonction remise à zéro dans la fonction modifier, ça marche pas

Enfaîte si ça se remet pas à zéro on peut toujours sélectionner les articles de la date précédente donc ce qui amène par la suite à des erreurs.

J’ai relevé une autre erreur, lorsque je sélectionne un article, il s’enlève de la listeview1 mais si on refait une remise a zéro ou tout simplement ou annule nos critères de recherche en cliquant sur la croix, tout les articles se remettent, même ce présent dans la listview2
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : Recherche multicritère VBA

Bonjour

Ci jiont l'userform1 avec des modifications.
Raz : la listview2 n'est pas effacé, les données présentes dans la listview2 sont supprimées de la listview1 (utilisation de "Key" )

J'ai modifié la procédure associée au bouton valider la réservation pour pouvoir saisir une deuxième commande.
A vérifier la mise à jour de la listview1.

A tester

JP
 

Pièces jointes

  • UserForm1.zip
    6.9 KB · Affichages: 105
  • UserForm1.zip
    6.9 KB · Affichages: 107
  • UserForm1.zip
    6.9 KB · Affichages: 109

nextrevolution

XLDnaute Occasionnel
Re : Recherche multicritère VBA

Tes modif fonctionne, merci.

Par contre pour faire la raz automatique tu as enlevé la demande quand on change de date si on veux continuer oui ou non

Il y a encore un petit bogue au niveau de la recherche, lorsqu'on sélectionne les articles, leur catégorie , sous catégorie ... reste toujours affiché dans la recherche et si jamais on le sélectionne l'application bogue.

Ci joint ma dernière version:
http://cjoint.com/?ejcRfHhQOR
 

jp14

XLDnaute Barbatruc
Re : Recherche multicritère VBA

Bonjour

Ci joint l'userform modifiée.
A vérifier si le problème suivant est corrigé.
Concernant ce problème s'il existe encore
Tes modif fonctionne, merci.
Il y a encore un petit bogue au niveau de la recherche, lorsqu'on sélectionne les articles, leur catégorie , sous catégorie ... reste toujours affiché dans la recherche et si jamais on le sélectionne l'application bogue.
il me faudrait plus de détail, manip qui génère l'erreur ainsi que le message et la ligne concernée.

JP
 

Pièces jointes

  • UserForm1.zip
    7 KB · Affichages: 95
  • UserForm1.zip
    7 KB · Affichages: 95
  • UserForm1.zip
    7 KB · Affichages: 96

nextrevolution

XLDnaute Occasionnel
Re : Recherche multicritère VBA

Le probléme existe toujours.
Enfaite fait une réservation, sélectionne tout les articles, une fois que la listview1 est vide fait une recherche dans une des combox, peux importe laquel.
Tu veras les critéres de recherche sont tous là, sélectionne un au hasard et ca va bogué.

Message d'erreur: Erreur d'exécution 380
Impossible de définir la propriété Value. Valeur de propriété non valide.

Code:
'---------------------------------------------------
' Module    : UserForm1/alimcombo2
' DateTime  : 20/03/2009
' Auteur    : JP14
' Utilisation     :alimentation des combobo
'--------------------------------------------------
Private Sub alimcombo2()
Dim data1combo As String
flag = True
For Each £Ctrl In Me.Controls
    If TypeName(£Ctrl) = "ComboBox" Then
        £coln = Val(Replace(£Ctrl.Name, TypeName(£Ctrl), ""))
        Select Case £coln
            Case Is > 99
                data1combo = £Ctrl.Value
                 Call remplircombobox(Array("Listview1", £coln - 100, £coln))
                [COLOR="Red"]£Ctrl.Value = data1combo[/COLOR]        
End Select
    End If
Next £Ctrl
flag = False
End Sub

Enfaite faut que ma recherche se fasse avec les articles restant dans la listview1
 

jp14

XLDnaute Barbatruc
Re : Recherche multicritère VBA

Bonjour

Ci dessous code à modifier
Code:
Private Sub alimcombo2()
Dim data1combo As String
[COLOR="Red"]If ListView1.ListItems.Count = 0 Then
    For Each £Ctrl In Me.Controls
    If TypeName(£Ctrl) = "ComboBox" Then
        £coln = Val(Replace(£Ctrl.Name, TypeName(£Ctrl), ""))
        Select Case £coln
            Case Is > 99
                £Ctrl.Clear
        End Select
    End If
Next £Ctrl
    Exit Sub
End If[/COLOR]
flag = True
For Each £Ctrl In Me.Controls
    If TypeName(£Ctrl) = "ComboBox" Then
        £coln = Val(Replace(£Ctrl.Name, TypeName(£Ctrl), ""))
        Select Case £coln
            Case Is > 99
                data1combo = £Ctrl.Value
                 Call remplircombobox(Array("Listview1", £coln - 100, £coln))
                £Ctrl.Value = data1combo        
End Select
    End If
Next £Ctrl


flag = False
End Sub

A tester

JP
 
Dernière édition:

nextrevolution

XLDnaute Occasionnel
Re : Recherche multicritère VBA

C'est bon ça fonctionne merci.
Au début ça marchait que avec la remise à zéro générale mais pas avec la remise à zéro par combobox.
J'ai modifié leur formule en rappelant la formule alimcombo2 et ca fonctionne.

Code:
Private Sub CommandButton100_Click()
flag = True
ComboBox100.ListIndex = -1 ' à modifier en fonction du combobox
Call remplirlistview
Call alimcombo2
flag = False
With ListView2
    If .ListItems.Count > 0 Then
        For i = 1 To .ListItems.Count
            On Error Resume Next
            ListView1.ListItems.Remove .ListItems(i).Key
        Next i
    End If
End With
[COLOR="Red"]Call alimcombo2
flag = False[/COLOR]
End Sub

Par contre j'ai essayé de faire une recherche par numéro de référence, j'ai juste rajouté une combobox Référence puis il faut rentré le numéro dedans (c'est pour ma recherche avec le lecteur code barre)

Ce que j'ai fait me convient si l'article est présent car il s'affiche, mais lorsqu'il est absent, lorsqu'on tape le numéro il affiche le numéro le plus proche de celui qu'on a tapé.

Ce qu'il me faut c'est quand on tape la référence puis Entrée sur le clavier (c'est l'action que fait le lecteur code barre), l'article se met dans la listview2, et si il est absent un message d'erreur dis juste que l'article est déjà réservé.

Je sais pas trop comment améliorer ce que j'ai fait pour arriver à ce résultat, ou tout simplement une autre solution.
 

jp14

XLDnaute Barbatruc
Re : Recherche multicritère VBA

Bonjour

Ce qu'il me faut c'est quand on tape la référence puis Entrée sur le clavier (c'est l'action que fait le lecteur code barre), l'article se met dans la listview2, et si il est absent un message d'erreur dis juste que l'article est déjà réservé.

Je sais pas trop comment améliorer ce que j'ai fait pour arriver à ce résultat, ou tout simplement une autre solution.

Une piste
Il faudrait inclure dans la procédure une recherche de la référence dans la listview1, comme ci dessous
with ListView1
For i = 1 To .ListItems.Count
If .ListItems(i).ListSubItems(6).Text = reference Then
item1 = i

ListView2.ListItems.Add , .ListItems(item1).Key, .ListItems(item1).Text
For i = LBound(nomcol) + 1 To UBound(nomcol)
ListView2.ListItems(ListView2.ListItems.Count).ListSubItems.Add = .ListItems(item1).ListSubItems(i).Text
Next i
.ListItems.Remove .ListItems(item1).Key
End With
nest i

A tester

JP
 

nextrevolution

XLDnaute Occasionnel
Re : Recherche multicritère VBA

J'ai pas réussi à inclure ton code dans ma procdure (enfin j'ai pas réussi à faire la procédure plustôt)

J'ai fait une nouvelle UserForm pour la recherche par référence pour pas surcharger l'UserForm1

Je te renvoi le fichier, la recherche se fait dans l'UserFormRef.
http://cjoint.com/?eleaEB3Fiu

J'ai voulu reprendre le principe d'affichage de GestionLocation (que tu m'avais envoyé au début), mais aprés quelques heures passer dessus je n'y arrive toujours pas.
Enfaite lorsque je met le numéro de référence, une fois que je la valide ca me remplie mes TextBox par rapport à la référence.
Puis apré je fais ajouter l'article se met dans la listview2.

Enfaite c'est comme le fichier gestionlocation, à la différence je n'y arrive pas lol.
 

nextrevolution

XLDnaute Occasionnel
Re : Recherche multicritère VBA

Bonjour,
Un petit post à part pour information.

En lisant des tutoriaux pour VBA, ils expliquent qu'il faut intégrer Dim... As .... pour la taille de nos formules. Puis les valeurs sont en octets en byte ... (du chinois pour moi lol)

Je voulais savoir si tu pouvais m'apporter plus d'informations ou si tu connais un site où c'est bien expliqué.

Merci d'avance
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 017
dernier inscrit
annboi19