XL 2010 [VBA] Problème de formulaire erreur "13" et améliorations

Horusbk

XLDnaute Junior
Bonjour,

J'ai créé une application VBA (voir fichier joint) permettant à mes collaborateurs de trouver facilement une cellule donnée. Son fonctionnement est assez simple : grâce à un userform on sélectionne le N° de commande souhaitée (listebox) puis la date de la commande (combobox). Lorsqu'on clique sur chercher, Excel nous montre la cellule à modifier par l'intersection de la ligne et colonne voulues (choisi précédemment dans l'userform).

Par exemple :
170203110848397029.png


Mon problème, est qu'avec le code actuel, c'est uniquement le dernier enregistrement 860878/9 qui fonctionne. Pour tous les autres, le VBA me renvoi une erreur "13" qui pointe vers cette ligne :

VB:
Ligne = Application.Match(CStr(Me.ListBox1.Text), .[C:C], 0)

Selon moi, c'est CStr qui pose problème. Donc, je le modifie par CLng.
Avec cette modification tous les enregistrements de type nombre fonctionne avec le formulaire. Mais, ce n'est plus le cas avec le 860878/9 (en prenant en compte que dans mon fichier professionnel il y a beaucoup plus d'enregistrements de ce type...).

Ma question est donc la suivante :

Est-il possible de modifier mon code actuel de façon à ce que tous les numéros de commande soient pris en compte dans l'application ? (et que je n'ai plus de message d'erreur).

Dans le même temps :

Est-il possible que ma listbox de mon userform affiche une fois et une seule les données en double ?
Par exemple, la commande 8000 est présente trois fois, est-il possible de l'afficher une seule fois.
Par la suite je vais chercher à faire apparaître dans une autre listbox les différents types d'envoi lorsqu'une valeur de la colonne N° de commande est en double. (si vous connaissez la solution n'hésitez pas).

Merci pour votre aide, à votre disposition pour tous détails.
Baptiste.
 

Pièces jointes

  • Fichier croisement 13022017.xlsm
    524.6 KB · Affichages: 42

vgendron

XLDnaute Barbatruc
Hello

pour l'initialisation sans doublon
VB:
Private Sub UserForm_Initialize()
    Dim C As Range
    Set f = Sheets("Feuil1")
    Set MonDico = CreateObject("Scripting.Dictionary")
    With f
        a = .Range("C4", .Cells(.Rows.Count, 3).End(xlUp)) ' tableau a(n,1) pour rapidité
    End With
    For i = LBound(a) To UBound(a)
        If a(i, 1) <> "" Then MonDico(a(i, 1)) = ""
    Next i
    Me.ListBox1.List = MonDico.keys
    With f
        For Each C In .Range("E2", .Cells(2, Columns.Count).End(xlToLeft))
            Me.ComboBox1.AddItem C.Value
        Next C
    End With
End Sub
 

Horusbk

XLDnaute Junior
Bonjour vgendron, ;)
Merci de ton aide.

Pour voir si j'ai bien compris :
Pour le moment l'initialisation que tu me proposes permet uniquement de supprimer les doublons ? Il ne me propose les choix de la colonne type d'envoi.

Je vous joint le fichier mis à jour avec les aides ci-dessus.

Baptiste.
 

Pièces jointes

  • Fichier croisement 13022017.xlsm
    524.9 KB · Affichages: 39

vgendron

XLDnaute Barbatruc
re
oui effectivement, je n'ai pris en compte que ce bout de demande:
Par exemple, la commande 8000 est présente trois fois, est-il possible de l'afficher une seule fois.

ce que je pressens:
1) tu vas vouloir sélectionner un N° de commande dans une listbox 1
2) une seconde ListBox2 va devoir s'alimenter en type d'envoi dispo pour l'élément sélectionné en listbox1 : il s'agit de listbox en cascades

puis avec la date sélectionnée en combobox (pourquoi ne pas rester en listbox ?)
tu cherches le croisement: avec méthode Find comme te le suggérait Lone-Wolf (hello :-D)

tu devrais pouvoir trouver pas mal d'info ici:
http://boisgontierjacques.free.fr/
 

Jacky67

XLDnaute Barbatruc
Bonsoir,
Les données dans la colonne C (N° de commande) doivent être re-saisies.
Elles ont été formatées texte après la saisie :(
Voir PJ

*Le fait de ne pas afficher les doublons de commande limite la recherche au premier item trouvé.
Sinon une combobox avec les 3 types d'envoi doit être rajoutée.
 

Pièces jointes

  • Fichier croisement 13022017.xlsm
    521.7 KB · Affichages: 36
Dernière édition:

Horusbk

XLDnaute Junior
Bonsoir Jacky67,
Merci de ton aide ;) ça fonctionne bien mieux ainsi !

*Le fait de ne pas afficher les doublons de commande limite la recherche au premier item trouvé.
Sinon une combobox avec les 3 types d'envoi doit être rajoutée.
Le problème c'est que les enregistrements de mon fichier professionnel ne se limite pas aux trois types d'envoi comme je l'ai mis dans mon fichier. :oops: Ça peut-être vraiment n'importe quoi du style :



Merci de votre aide ;)
Baptiste.
 

Si...

XLDnaute Barbatruc
Bonjour

Un exemple sans formulaire. Je suppose que les nombres des cellules colorées correspondent aux « types » d’envoi. La macro de sélection de la date pourra être facilement complétée pour tenir compte de cet élément.

Au revoir
 

Pièces jointes

  • sélection Si.xlsm
    519.2 KB · Affichages: 29

Statistiques des forums

Discussions
311 725
Messages
2 081 942
Membres
101 849
dernier inscrit
florentMIG