Aide pour macro de recherche

Bonjour le forum,

J'ai besoin d'un petit coup de pouces pour une macro qui recherche mes valeurs dans un tableau nommé

Private Sub TextBox1_Change()

    Application.ScreenUpdating = False

    Range("ARRIVAGE[DATE ARRIVEE]").Interior.ColorIndex = 2
    ListBox1.Clear

    If TextBox1 <> "" Then
    For ligne = 12 To 24
            If Cells(ligne, 1) Like "*" & TextBox1 & "*" Then
                Cells(ligne, 1).Interior.ColorIndex = 43
                ListBox1.AddItem Cells(ligne, 1)
            End If
        Next
    End If

End Sub

et la ligne qui me pose problème est la suivante :

For ligne = 12 To 24

j'aimerai pouvoir sélectionner seulement les lignes de mon tableau nommé "ARRIVAGE"

Si possible, est-ce que vous pourriez m'intégrer le fait que lors de la recherche le tableau se filtre automatiquement par rapport au résultat trouvé

merci d'avance !

Bonjour,

à tester,

Private Sub TextBox1_Change()
    Application.ScreenUpdating = False

     With Range("ARRIVAGE[DATE ARRIVEE]")
           firstRw = .Rows(1).Row
           lastRw = .Rows(.Rows.Count).Row
    End With

    Range("ARRIVAGE[DATE ARRIVEE]").Interior.ColorIndex = 2
    ListBox1.Clear

    If TextBox1 <> "" Then
    For ligne = firstRw  To lastRw
            If Cells(ligne, 1) Like "*" & TextBox1 & "*" Then
                Cells(ligne, 1).Interior.ColorIndex = 43
                ListBox1.AddItem Cells(ligne, 1)
            End If
        Next
    End If   
End Sub

Bonjour,

Essayer ce code

Private Sub TextBox1_Change()
    Dim i As Integer

    Application.ScreenUpdating = False

    Me.ListBox1.Clear
    With Feuil1.ListObjects("ARRIVAGE")
        .ListColumns("DATE ARRIVEE").DataBodyRange.Interior.ColorIndex = xlNone
        If TextBox1 <> "" Then
            For i = 1 To .ListRows.Count
                With .ListColumns("DATE ARRIVEE").DataBodyRange
                    If .Rows(i) = CDate(TextBox1) Then
                        .Rows(i).Interior.ColorIndex = 43
                        ListBox1.AddItem .Rows(i)
                    End If
                End With
            Next i
        End If
    End With

End Sub

Bonjour i20100, Thev

i20100 : Effectivement, la sélection fonctionne sur tout le tableau "ARRIVAGE" , mais pas pour le tri auto.

thev : la recherche ne fonctionne plus, et au moment de taper le premier / j'obtiens " erreur 13 : incomptabilité de type" sur

If .Rows(i) = CDate(TextBox1) Then

merci

la recherche ne fonctionne plus, et au moment de taper le premier / j'obtiens " erreur 13 : incomptabilité de type" sur

If .Rows(i) = CDate(TextBox1) Then

Nous ne sommes pas apparemment sur la version de fichier que tu viens de communiquer.

Tu n'as aucun besoin de saisir une date dans TextBox1 avec mon calendrier. Tu cliques sur l'image calendrier à droite de TextBox1, le calendrier est affiché et la date est chargée en un seul clic.

Avec le chargement de la date en un seul coup, la recherche fonctionne sans problème.

thev,

tu parles de la texte box de l'userform non ?

thev,

tu parles de la texte box de l'userform non ?

Tout à fait.

Je n'avais pas compris qu'il s'agissait du TextBox relatif à la feuille.

D'accord tout s'explique, autant pour moi !

Je te parle de la textbox1 de la feuil 1 situé entre la colonne A et E

Je te parle de la textbox1 de la feuil 1 situé entre la colonne A et E

OK. Du coup, j'y ai affecté également le calendrier, ce qui va résoudre le problème.

Super pour le calendrier c'est toujours un plus et il va vraiment falloir que j'apprenne à me l'approprier sur des fichiers perso ^^

En finalité, cette fonction de recherche concernera tout les onglet sauf "commentaire",

Je vais donc créer 4 textbox et 4 listbox au total pour faire des recherches dans le tableau en fonction de la recherche désiré

(exemple : je cherche le fournisseur, ensuite le destinataire, etc..

Du coup j'aimerai en définitive que lorsque je saisi une date le tableau "ARRIVAGE" se tri tout seul en fonction du résultat de la recherche

exemple dans date : 25/05/18 et que le tableau n'affiche que les lignes correspondantes à cette date, idem si je recherche dans fournisseur

merci d'avance

Bonsoir,

ci-jointe une proposition

Super pour le calendrier c'est toujours un plus et il va vraiment falloir que j'apprenne à me l'approprier sur des fichiers perso ^^

Pour l'utiliser de façon simple :

1- stocker le contrôle ("calendrier.xlam" ci-joint) dans le répertoire de ton choix

2- ouvrir le classeur où tu veux ajouter le contrôle

3- à partir du classeur, menu fichier --> ouvrir le contrôle à partir du répertoire où il est stocké

4- sauvegarder le classeur

Le contrôle est à présent actif et sera désormais systématiquement chargé à chaque ouverture du classeur.

5- au niveau du code :

-appeler la procédure "afficher_calendrier(objet)" où objet est une Textbox ou une cellule Range.

Exemple de code associé à une feuille pour la cellule "A1"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Address = Range("A1").Address Then
        'affichage calendrier
        Call afficher_calendrier(Target)
    End If

End Sub

Exemple de code associé à un TextBox dans un UserForm :

Private Sub TextBox1_Enter()
      'affichage calendrier
    Call afficher_calendrier(TextBox1)
End Sub
13calendrier.xlam (60.35 Ko)

thev,

niquel pour la proposition, juste le petit problème du remplissage de la cellule qui reste même après la réinitialisation.

Et merci beaucoup pour les explications, c'est clair net et précis !

juste le petit problème du remplissage de la cellule qui reste même après la réinitialisation.

ci_jointe modification

Parfait, merci beaucoup pour ton aide !

Bonjour tous

@quentinmgt

Je trouve fascinante ta capacité à compliquer les choses ! mais rassure-toi tu n'est pas le seul dans ce cas...

J'explique :

Pourquoi veux tu faire 4 fois la même chose ?

En finalité, cette fonction de recherche concernera tout les onglet sauf "commentaire",

Je vais donc créer 4 textbox et 4 listbox au total pour faire des recherches dans le tableau en fonction de la recherche désiré

et pourquoi des textbox et listbox qui obligent à pondre du code bêtement et 4 onglets au lieu d'une cellule et d'une liste de validation couplées à un tableau regroupant toutes les infos (en un seul) ?

2ème remarque en forme de conseil celle-là !

Tu as dans l'onglet [ARRIVAGE COLIS] deux tableaux dynamiques ! Or ils sont côte à côte (sur la même ligne) si tu filtre l'un des de deux (surtout le plus petit dans ta PJ) les lignes (sans être filtrées pourtant) disparaitrons aussi de l'autre !


Ce sont des remarques, rien de bien méchant !

Fais attention quand même au point 2... il est d'ailleurs aussi déconseillé de mettre 2 (ou plus) tableau de ce genre l'un en dessous de l'autre !

deux tableaux dynamiques ?

Les tableaux dynamiques sont par définition stockés en mémoire (Array).

Il s'agit ici d'objets tableau (ListObject) également nommés tableaux structurés.

Bonjour

@thev

Gli73 a écrit : ↑Aujourd’hui, 00:20

deux tableaux dynamiques ?

Les tableaux dynamiques sont par définition stockés en mémoire (Array).

Il s'agit ici d'objets tableau (ListObject) également nommés tableaux structurés.

Oui thev, tu as entièrement raison, je sais bien ! J'emploie si (trop) souvent ce "terme" erroné pour "expliquer" de quoi je parle à mes utilisateurs, car je trouve que "ListObject" sonne trop VBA !)

car je trouve que "ListObject" sonne trop VBA !)

Tout à fait. Le terme "tableau structuré" employé par certains Forumiens me parait le plus adéquat.

Bonjour

@thev

Pour moi "structuré" est encore pire... Peu de "nos" demandeurs comprennent toute la portée de ce terme très "langage informatique".

J'utilise parfois le sobriquet de "tableau élastique" car c'est une terminologie souvent employée par les "you-tubeurs" qui parle du sujet...

Mais bref, nous sommes en délibération sur un terme, mais ou en est @quentionmgt de ses derniers petits problèmes résiduels ?

Rechercher des sujets similaires à "aide macro recherche"