Recherche et archive VBA

Bonjour,

J'avance pas mal sur ce que je souhaite faire mais je bloque à nouveau.

J'ai une erreur sur mes recherches via mon userform, je ne sais pas d'où ça vient, surement quelque chose de TRÈS mal encodé

De plus j'aimerai que le résultat de mes recherches s'affiche dans un nouveau userform que j'ai créé. Dans ce userform se trouvera toutes les infos correspondantes (si un champs est vide (par exemple Num2), je souhaiterai que s'affiche le texte "Pas d'information pour ce champs")).

Dans ce nouveau Userform, je dois avoir uniquement la possibilité d'ajouter une date2 (les autres champs ne doivent pas être modifiables) et lorsque je clique sur le bouton "Archiver", ces données basculent de l'onglet "base" à l'onglet "Résultat".

Je joints le fichier, merci d'avance pour votre aide

19recherche.xlsm (31.45 Ko)

J'ai résolu mon problème sur la recherche et finalement je vais mettre le résultat sur un autre onglet de mon Userform, ça me parait plus cohérent par rapport à ce que je souhaite faire.

Comment transférer les variables que je trouve dans cet autre onglet et l'afficher ?? Je n'ai pas trouvé la commande.

Merci d'avance

9recherche.xlsm (31.16 Ko)

Bon bein à force de tâtonner, j'y arrive tout doucement...

Il ne me reste qu'à archiver les données une fois la Date2 saisie (est-ce possible d'ailleurs que le curseur soit directement sur ce champs quand on charge le résultat ?) et à les supprimer de la Base.

Le code est fait comme un gros débutant mais ça fonctionne, si quelqu'un se sent de simplifier tout ça, je suis hyper preneur (avec quelques explications dans le code serait un énorme plus histoire que je comprenne et que j'essaye de m'améliorer en vba )

Merci

4recherche.xlsm (32.10 Ko)

Bon bein je me réponds à moi-même

J'ai donc réussi à archiver et supprimer après avoir fait la recherche.

Par contre, il doit rester un bug quand la recherche ne donne rien... Pas encore trouvé la solution

Donc toujours preneur de simplification par rapport à ce que j'ai fait, merci d'avance

7recherche.xlsm (35.62 Ko)

Salut Paulox,

à l'arrache mais voici ton fichier... à tester... évidemment!

Tout se passe dans ton Multipage d'origine. La commande d'enregistrement contient les valeurs suivantes :

  • sans recherche préalable, "Créer" ;
  • avec recherche préalable, mais les 4 premières TextBox (jusque Date1) incomplètes : "Sauver" ;
  • avec la seule Date2 à compléter : "Archiver"

Je suppose qu'il faut calculer le classement en tenant compte des valeurs archivées en 'Résultat' ?!

Public Sub Classement(ByVal iIdx%)
'
Dim rCel As Range
Dim iRow1%, iRow2%, iNum%
'
If Me.txtIN1.Text <> "" Then
    On Error Resume Next
    '
    For X = 1 To 10
        Me.Controls("Opt" & X).Caption = Chr(64 + X)
    Next
    For X = 1 To 2
        iRow1 = 0
        With Worksheets(IIf(X = 1, "Base", "Résultat"))
            If .Range("A3").Value <> "" Then _
                .Range("A1:F" & .Range("A" & .Rows.Count).End(xlUp).Row).Sort key1:=.Range("D2"), order1:=xlAscending, Orientation:=xlTopToBottom, Header:=xlYes
            iRow1 = .Range("D:D").Find(what:=Chr(64 + iIdx), lookat:=xlPart, LookIn:=xlValues, searchdirection:=xlNext).Row
            iRow2 = .Range("D:D").Find(what:=Chr(64 + iIdx), lookat:=xlPart, LookIn:=xlValues, searchdirection:=xlPrevious).Row
            If iRow1 = 0 Then
                iNum = IIf(iNum = 0, 1, iNum)
            Else
                For Y = iRow1 To iRow2
                    If Y > 1 Then iNum = IIf(Val(Right(.Cells(Y, 4), Len(.Cells(Y, 4)) - 1)) > iNum, Val(Right(.Cells(Y, 4), Len(.Cells(Y, 4)) - 1)), iNum)
                Next
                iNum = IIf(iNum + 1 < 1000, iNum + 1, 1)
            End If
        End With
    Next
    Me.Controls("Opt" & iIdx).Caption = Chr(64 + iIdx) & CStr(iNum)
    '
    On Error GoTo 0
End If
'
End Sub

Je fatigue à cette heure-ci. Teste et raconte...

A+

12recherche.xlsm (39.22 Ko)

Salut,

Merci pour ce retour, ça fonctionne plutôt pas mal du tout, c'est top

J'ai malgré tout constaté un bug lors de l'incrémentation des chiffres, ça incrémente de 2 en 2

Et au niveau du résultat, c'est super cet affichage mais il me faut surtout le rang en priorité (affichage plus gros si possible)

Et lorsque j'archive (si il y a des doublons et que j'en sélectionne un), quelques fois il n'archive pas le bon

Et pour finir j'ai quelques bugs sur la recherche, par exemple :

capture

Je te mets en pièce jointe ce que j'ai fait de mon coté pour que tu vois un peu le résultat attendu (ça fonctionne grosso modo comme je souhaite mais codé comme un gros dégueu que je suis )

Et si tu peux mettre quelques commentaires sur ton code histoire que j'apprenne aussi, mon but n'étant pas d'avoir du tout cuit mais d'essayer de progresser

Merci mille fois pour ton aide.

21recherche.xlsm (44.35 Ko)

Salut Paulox,

je regarde ça dès que je peux... çàd, avec le beau temps annoncé et les travaux en vue, pas avant ce soir!

Bizarre quand même cette incrémentation par deux... Pas vu ça ici...

A+

Je regarde aussi de mon coté cet am, ton code me plait vraiment bien donc je vais approfondir et essayer de m'y retrouver, vu que je code comme un bourrin, un codage comme le tien qui est bien organisé me perd totalement

Faut vraiment que je fasse un effort de mon coté pour être plus propre dans ce domaine

Pour illustrer mon com sur l'incrément 2 par 2, sur le bouton option tu vois bien :

capture

Bonjour,

Je n'ai pas trop eu le temps hier de me pencher sur le problème mais j'ai malgré tout vu que lorsqu'il y avait des doublons (sur num1 par exemple), en fait il archive le bon mais supprime le 1er de la liste Peut--être est-ce dû au tri qui est effectué sur la colonne A ?? Dans ce cas, ce tri n'est pas nécessaire, normalement l'utilisateur ne devrait pas accéder aux feuilles, je souhaiterai au final quil ne se serve que des userform.

Et l'incrément de 2 en 2 ne se produit pas à chaque fois, j'ai testé plusieurs fois et quelques fois ça incrémente bien, très étrange...

Rechercher des sujets similaires à "recherche archive vba"