XL 2010 [Résolu par thebenoit] Problème de recherche avec les Tag's

Lone-wolf

XLDnaute Barbatruc
Bonjour à toutes et à tous :)

Suite à l'insertion de nouvelles colonnes, je n'arrive plus à afficher correctement les données dans le formulaire 1 suite à une recherche, malgré que dans les propriétés des contrôles les Tag sont corrects.

Par la même occasion, dans le formulaire 2, inclure dans le bouton "Modifications" une macro qui aille chercher, suite à la sélection d'une ligne dans la ListBox (Doublons), la ligne exacte après modifications dans les Textbox's.
 

Pièces jointes

  • LOCATION.zip
    453.2 KB · Affichages: 45

Lone-wolf

XLDnaute Barbatruc
Re

Voilà j'ai modifier le code de recherche du formulaire 1. J'aimerais quand même que quelqu'un vienne à mon secours concernant ma 2ème demande. Je ne sais pas comment faire pour modifier la ligne de la feuille "Factures" suite au choix de la ligne de la ListBox. Je m'explique

Je choisi le nom dans la ComboBox
Les lignes(doublons) s'affiche dans la ListBox
Je sélectionne une des lignes où les données viennent s'afficher dans les TextBox's.
J'y apporte les modifications et en cliquant sur le bouton, la ligne de la feuille se modifie en conséquence.

J'éspère que c'est plus claire.
 

thebenoit59

XLDnaute Accro
Bonjour Lone-Wolf.

Pour ta première demande :
Code:
Private Sub CmdRecherche_Click()
Dim ctrl As Control, i%, j%
Set ws = Sheets("enregistrement clients")
With ws
    'Numéro de ligne.
    i = WorksheetFunction.Match(Me.ComboBox1.Text, .Columns(4), 0)
    'On boucle les contrôles.
    For Each ctrl In Controls
        If ctrl.Tag <> "" Then
            j = Val(ctrl.Tag)
            ctrl.Value = .Cells(i, j).Value
        End If
    Next ctrl
End With
    'Adaptation des formats.
With Me
    .TextBox7.Value = Format(.TextBox7.Value, "00 00 00 00 00")
    .TextBox8.Value = Format(.TextBox8.Value, "00 00 00 00 00")
    .TextBox12.Value = Format(.TextBox12.Value, "0")
    .TextBox13.Value = Format(.TextBox13.Value, "0")
    .TextBox14.Value = Format(.TextBox14.Value, "### €")
    .TextBox15.Value = Format(.TextBox15.Value, "### €")
End With
End Sub

Pour la seconde, à ajouter dans la procédure de modifications :
Code:
Dim i%, Ligne%, Critère$, c, d As Object

'Recherche de la ligne sélectionnée.
With Me.ListBox1
    For i = 0 To .ListCount - 1
        If .Selected(i) Then
            For j = 0 To 4
                Critère = Critère & .List(i, j)
            Next j
            Exit For
        End If
    Next i
End With

If Critère = "" Then MsgBox "Aucune ligne sélectionnée": Exit Sub

Set d = CreateObject("scripting.dictionary")

With Sheets("reception factures")
    For i = 2 To .[a65000].End(xlUp).Row
        For j = 3 To 7
            d(i) = d(i) & .Cells(i, j).Value
        Next j
    Next i
End With

For Each c In d.Keys
    If d(c) = Critère Then Ligne = c: Exit For
Next c
 

thebenoit59

XLDnaute Accro
Pour la première c'est bizarre, pour la seconde c'est normal tu as demandé la ligne alors je ne t'ai fourni qu'une méthode pour obtenir le numéro de ligne.

160706120614110193.gif
 

Pièces jointes

  • Lone Wolf.zip
    2.1 MB · Affichages: 58

Lone-wolf

XLDnaute Barbatruc
Bonjour thebenoit

Dans le formulaire2, comme tu as pu le voir, la listbox affiche les doubons. Pour faciliter la recherche, j'ai rajouté une textbox qui devrait afficher le numéro de la ligne (colonne A). Tu voudrait bien modifier le code pour que, quand je clique sur l'une des lignes, le numéro vienne s'afficher?

D'avance, merci pour ton aide.
 

Pièces jointes

  • Lone Wolf.xlsm
    3.5 MB · Affichages: 53

Lone-wolf

XLDnaute Barbatruc
Bonsoir à toutes et à tous :)

je suis toujours dans l'impasse concernant ma demande du post #2. Cerait-il possible de me donner un coup de main?

En PJ le nouveau fichier que j'ai reprogrammé. Merci d'avance.
 

Pièces jointes

  • Lone.xlsm
    3.6 MB · Affichages: 79

Lone-wolf

XLDnaute Barbatruc
Bonjour thebenoit :)

Genial! Tu me sauve des tourments. Merci mille fois.

En attentand que l'on réponde, j'ai essaié comme ceci

VB:
With ListBox1
Set plage = ActiveSheet.Range("a2:m" & Range("m65536").End(xlUp).Row)
For i = 0 To .ListCount - 1
If .Selected(i) Then Set rw = plage.Find(.List(i, 8), , xlValues)
TxtID = rw.Offset(i - 2, -11)
Next i
End With

Mais j'avais tout faux.
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
404

Statistiques des forums

Discussions
312 489
Messages
2 088 857
Membres
103 979
dernier inscrit
bderradji