Liste + recherche intuitive

Le piège a été de tenir compte dans le VBA de la zone qui définit l'en-tête de la première colonne des tableaux ! Mais c'est bon !

Bonsoir.

Le tableau prend vraiment forme avec l'outil recherche qui ouvre une saisie intuitive dès la 1er lettre tapée.

Les formules sont OK pour l'association au numéro unique !!!

Une autre petite avancée serait d'avoir une lecture dans le formulaire des 5ème colonnes pour y voir aussi la CIVILITE et le NOM (A,B, C, D, E)

Effectivement, pour une seule entreprise avec plusieurs contacts différents, le numéro unique, le lot, ou le nom de l'entreprise ne permet pas de rechercher le contact.

A quelle endroit du codage faut-il préciser les colonnes affichées dans le formulaire?

Je pourrais ajuster cela suivant l'onglet entrepise ou clients.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

' si la cellule fait partie de la première ligne de la feuille

' ou

' s'il y a plusieurs lignes de sélectionnées

' ou

' si la colonne "active" de la sélection est supérieure à 2, alors on quitte

If Target.Row < 7 Or Target.Rows.Count > 1 Or Target.Column > 2 Then Exit Sub

' si la colonne active est inférieure à 2 et que le nombre de colonne dans la sélection est inférieur à 2 alors on quitte en faisant

'UNDO pour restaurer la valeur de l'id Potentiellement modifié

If Target.Column < 2 And Target.Columns.Count < 2 Then

Application.EnableEvents = False

Application.Undo

Application.EnableEvents = True

Exit Sub

End If

Application.EnableEvents = False

If ActiveSheet.Cells(Target.Row, 1).Value = "" Then

ActiveSheet.Cells(Target.Row, 1).Value = "E-" & Format(Range("A6").Value + 1, "0000")

Range("A6").Value = Range("A6").Value + 1

ElseIf ActiveSheet.Cells(Target.Row, 2).Value = "" Then

ActiveSheet.Cells(Target.Row, 1).Value = ""

End If

Application.EnableEvents = True

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Intersect(Target, Range("A4:C4")) Is Nothing Then Exit Sub

UserFormEnt.Left = 100

UserFormEnt.Top = 100

UserFormEnt.Show

End Sub

Merci pour vos avancements du projet.C'est super!

A quelle endroit du codage faut-il préciser les colonnes affichées dans le formulaire?

Je pourrais ajuster cela suivant l'onglet entrepise ou clients.

Bonjour,

Il faut intervenir dans la macro de l'userform

Par exemple, pour l'onglet client :

Private Sub UserForm_Initialize()
    With ListBox1
        .ColumnCount = 2 ' *********** indiquer ici le nombre de colonnes
        .ColumnWidths = "40;100" ' **************dimensionner la largeur de chaque colonne
    End With
    Me.ListBox1.List = Range("Tab_Cli[[" & Range("A6").Value & "]:[CLIENT]]").Value
End Sub

Private Sub TextBox1_Change()
    Me.ListBox1.Clear
    i = 0
    For Each c In Application.Index(Range("Tab_Cli[[" & Range("A6").Value & "]:[CLIENT]]"), , 1) ' ******** modifier CLIENT > mettre l'en -tête de la dernière colonne à afficher
        If UCase(c) Like "*" & UCase(Me.TextBox1) & "*" Or _
        UCase(c.Offset(, 1)) Like "*" & UCase(Me.TextBox1) & "*" Then
            Me.ListBox1.AddItem
            Me.ListBox1.List(i, 0) = c.Offset(0, 0).Value
            Me.ListBox1.List(i, 1) = c.Offset(0, 1).Value ' *********** ajouter les autres colonnes voulues à la suite
            i = i + 1
        End If
    Next c
End Sub

Private Sub CommandButton1_Click()

    flag = True
    For i = 0 To ListBox1.ListCount - 1
          If ListBox1.Selected(i) Then
              flag = False
          End If
    Next i
    If flag Then
        MsgBox "Choisir un item !"
        Exit Sub
    End If

    ligne = 4
    Range("A" & ligne).Value = Me.ListBox1.Column(0)
    Range("B" & ligne).Value = Me.ListBox1.Column(1) 
    Me.Hide

End Sub

Bonjour.

Je travail la mise en place de tous ces éléments sur mon fichier complet avec quelques ajustements sur l'affichage de l'userform.

Excellent !

Merci pour toute votre aide. Je vous fait un retour après avancement.

GOOD

Nous y voila !

Le fichiers est mis en place et tout fonctionne correctement.

A la copie du fichier sur le serveur et sous un autre nom, a l'ouverture message d'erreur : "La méthode 'Range' de l'objet '_Global' a échoué"

A l'ouverture du Débogage, erreur sur la feuille active :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    ' si la cellule fait partie de la première ligne de la feuille
    ' ou
    ' s'il y a plusieurs lignes de sélectionnées
    ' ou
    ' si la colonne "active" de la sélection est supérieure à 2, alors on quitte
    If Target.Row < 7 Or Target.Rows.Count > 1 Or Target.Column > 2 Then Exit Sub
    ' si la colonne active est inférieure à 2 et que le nombre de colonne dans la sélection est inférieur à 2 alors on quitte en faisant
    'UNDO pour restaurer la valeur de l'id Potentiellement modifié
    If Target.Column < 2 And Target.Columns.Count < 2 Then
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
        Exit Sub
    End If
    Application.EnableEvents = False
    If ActiveSheet.Cells(Target.Row, 1).Value = "" Then
        ActiveSheet.Cells(Target.Row, 1).Value = "E-" & Format(Range("A7").Value + 1, "0000")
        Range("A7").Value = Range("A7").Value + 1
    ElseIf ActiveSheet.Cells(Target.Row, 2).Value = "" Then
        ActiveSheet.Cells(Target.Row, 1).Value = ""
    End If
    Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Range("A4:C4")) Is Nothing Then Exit Sub
[Surligner]    UserFormEnt.Left = 100[/Surligner]
    UserFormEnt.Top = 100
    UserFormEnt.Show
End Sub

Ligne qui est surlignée en couleur = problème ? A quoi correspond ce paramètre

UserFormEnt.Left = 100

Après ce message, tout fonctionne correctement. -- Bizare ???!!!

Voici les modifs que j'ai apportées :

1 - ligne 7 début du tableau (maj dans les codes)

2 - ligne supplémentaire qui affiche les éléments trouver via recherche. -- Ligne verrouillée.

Merci !!

UserFormEnt.Left = 100

c'est pour caler l'userform dans l'écran

Si le reste fonctionne, supprime le.

Ma question est : quel est le nom donné à tes userform ? est-ce que le UserFormEnt existe ?

Bonjour, oui, UserFormEnt existe bien. Plus de soucis après avoir ouvert et fermé..

Je vais partager mon document avec mes collègues de travail pour une mise en situation complète.

Utilisation sur plusieurs machines via serveur.

Je marquerais résolu d'ici peu !COOL

Merci à vous ! Excellent !

Merci pour ce retour ...

Rechercher des sujets similaires à "liste recherche intuitive"