Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/01/2012, 20h43   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 46
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 46
Points : 11
Points : 11
Par défaut Autotabulation pour recherche dans un formulaire

Bonjour

Voila j'ai adapté du code à mon application, qui fonctionne en partie mais j'ai des soucis avec la fonction auto tabulation qui ne fonctionne pas.Il est vrais que je n'ai pas tout compris ce code
La fonction est de rechercher dans toutes les colonnes la lettre ou le chiffre tapé dans le label Tbx1,puis d'affiner au fur et à mesure des valeurs entrées dans TBX1
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub Tbx1_Change()
On Error Resume Next
Application.ScreenUpdating = False
t = Range("A3:I" & Range("A65536").End(xlUp).Row)
Lbx1.Clear
x = 1
For i = 1 To UBound(t)
For j = 1 To 9
If Left(t(i, j), Len(Tbx1)) = Left(Tbx1, Len(Tbx1)) Then
ReDim Preserve ta(1 To 9, 1 To x)
For k = 1 To 9
ta(k, x) = t(i, k)
Next k: x = x + 1: End If: Next j: Next i
Lbx1.List = Application.Transpose(ta)
If x - 1 = 1 Then
For e = 1 To 9
Controls("Textbox" & e) = Lbx1.List(Lbx1.ListIndex + e)
Next e: Lbx1.Clear: End If
Erase t, ta
If Tbx1 = "" Then
Lbx1.Clear: Label2.Caption = ""
For e = 1 To 9: Controls("Textbox" & e) = "": Next e: Lbx1.Clear: End If
Beep
End Sub
merci
Fichiers attachés
Type de fichier : rar classeurRecherche.rar (43,9 Ko, 3 affichages)
franc83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 20h54   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 922
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 922
Points : 7 251
Points : 7 251
Bonjour,

Il fonctionne bien ton code.
Peux tu nous expliquer l'utilité de la propriété Autotab dans ce code. qu'en attends tu ?
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 23h13   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 46
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 46
Points : 11
Points : 11
Ce que je veux dire c'est lorsque l'on entre une lettre dans la case recherche ,un certain nombre de mots s'affichent ,si l'on entre une deuxième lettre tous les mots ne comportant pas cette lettre sont effacer. A la limite si l'on entre le mot complet il ne restera que celui la dans le tableau.
franc83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 08h40   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 922
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 922
Points : 7 251
Points : 7 251
Citation:
A la limite si l'on entre le mot complet il ne restera que celui la dans le tableau.
C'est bien ce que fait ton code.
Ce n'est pas ce que tu veux?


Désolé, mais je n'arrive pas a cerner ton problème
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 18h21   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 46
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 46
Points : 11
Points : 11
Bonjour merci de me repondre

Si cela fonctionne chez vous,ce n'est pas le cas pour moi ,à la première lettre entrée cela fonctionne mais à la deuxième lettre entrée le tableau se vide totalement.
je suis sous exel 2007
merci
franc83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 19h44   #6
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 922
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 922
Points : 7 251
Points : 7 251
Avec Excel 2010, ça fonctionne.
Avec Excel 2003, ça ne fonctionne pas (même la première lettre)

Je regarde pour une adaptation de ton code dans la soirée
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 20h37   #7
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 922
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 922
Points : 7 251
Points : 7 251
Ci dessous une autre approche

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Private Sub Tbx1_Change()
Dim rg As Range
Dim Sh As Worksheet
Dim Address As String
Dim i As Byte
Set Sh = ThisWorkbook.Sheets("Feuil1")
 
Dim Ligne As Long
 
'Vide la liste
Lbx1.Clear
 
If Tbx1.Text = "" Then Exit Sub
 
'Recherche la saisie
Set rg = Sh.Range("B:I").Find(what:=Tbx1.Text, lookat:=xlPart, SearchOrder:=xlByRows)
 
If Not rg Is Nothing Then
    Address = rg.Address
 
    Do
        'Ne traite pas la ligne de titre
        If rg.Row > 2 And Ligne <> rg.Row Then
            Lbx1.AddItem Sh.Range("A" & rg.Row).Value
            For i = 2 To 9
                Lbx1.List(Lbx1.ListCount - 1, i - 1) = Sh.Cells(rg.Row, i).Value
            Next i
        End If
        Ligne = rg.Row
        Set rg = Sh.Range("B:I").FindNext(rg)
    Loop While Not rg Is Nothing And rg.Address <> Address
 
End If
 
End Sub
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 08h10   #8
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 46
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 46
Points : 11
Points : 11
Bonjour

Merci Jfontaine effectivement c'est une autre façon de procéder et qui me convient parfaitement.
encore merci
franc83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h56.


 
 
 
 
Partenaires

Hébergement Web