Macro recherche ne trouve pas les bonnes données

  • Initiateur de la discussion Initiateur de la discussion piga25
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

piga25

XLDnaute Barbatruc
Bonjour,

J'ai touvé une macro qui effectue une recherche afin de renseigner une ListBox dans un Userform (macro créé par Kjin et complétée par Chti160 que je remercie). Cette recherche va trouver des données sur deux feuilles (2009 et 2010).
Par contre lorsque l'on clique sur une donnée de la feuille 2009, seule la première partie de ces données correspondent réelement. La fin de ces données proviennent de la feuille de 2010. Quand c'est une donnée de 2010 tout se passe bien.

Je ne sais pas ou corriger cette macro pour que la recherche se fasse normalement et que surtout que si c'est une donnée de 2009, tous les champs de l'Userfom doivent contenir ces données de 2009 et vice versa pour 2010.

Le fichier depassant les 50ko, il est visible sur ce lien :Cijoint.fr - Service gratuit de dépôt de fichiers

Cordialement
 
Re : Macro recherche ne trouve pas les bonnes données

Bonsoir Piga25,

Etant donnée la taille de ton fichier, pourrais-tu être plus précis dans ta demande, pour nous éviter de perdre du temps à chercher où est le problème.

-> nom de la ListBox?
-> emplacement de la ListBox (dans quel UserForm)?
-> zones où tes informations sont erronés?

Dans ton cas, les deux erreurs qui reviennent le plus souvent :
-> tableau de l'onglet 2009 et 2010 différent : pas le même nombre de colonne, colonnes à des endroits différent selon la feuille.

-> si tu as utilisé la fonction "With... End With", peut-être as tu oublier de mettre un point devant certaines coordonnées de cellules.

A te lire

Bonne fin de soirée
 
Re : Macro recherche ne trouve pas les bonnes données

Bonsoir le forum,
Bonsoir Excel-lent
Désolé pour le retard mais passé la journée dans la capital, dur dur, très content d'avoir retrouvé mes sapins et le bon air Franc Comtois.

-> nom de la ListBox?
-> emplacement de la ListBox (dans quel UserForm)?
-> zones où tes informations sont erronés?

C'est la ListBox1 dans l'Userform1

Après avoir choisi dans la liste figurant dans la LisBox1, j'ai tous les champs qui se renseignent, et c'est là que j'ai une erreur dans les TextBox7 , TextBox8, TextBox9 (Téléphone) et TextBox10 (Adresse E.Mail).

Dans ton cas, les deux erreurs qui reviennent le plus souvent :
-> tableau de l'onglet 2009 et 2010 différent : pas le même nombre de colonne, colonnes à des endroits différent selon la feuille.

J'ai deux feuilles, l'une est l'archive, et l'autre la feuille de travail.
Lorsque l'on recherche une personne dans l'archive, il est possible de l'intégrer dans la feuille de travail, ce qui évite la saisie de tous les éléments.
Lorsque l'on fait une recherche dans la feuille travail, il est possible de modifier cette fiche.

-> si tu as utilisé la fonction "With... End With", peut-être as tu oublier de mettre un point devant certaines coordonnées de cellules.

La macro n'est pas de moi, elle est de Kjin et de Chti 160. C'est le genre de macro que je ne sais pas faire et dont je ne comprends pas le sens, d'ou le motif de ma demande d'aide.

Code:
Sub ChercheFiche(sText As String, Col As String)
Dim rWs As Worksheet, rLign As Long, rRng As Range, C As Range
Dim Adresse As String
Me.MousePointer = fmMousePointerHourGlass
For Each rWs In ActiveWorkbook.Sheets
    If rWs.Name Like "20*" Then
        With rWs
            rLign = .Range(Col & "65536").End(xlUp).Row
            Set rRng = .Range(Col & "2:" & Col & rLign)
            With rRng
                Set C = .Find(sText & "*", , , xlWhole)
                If Not C Is Nothing Then
                    Adresse = C.Address
                    Do
                        With ListBox1
                            .AddItem rWs.Cells(C.Row, 1)
                            .List(.ListCount - 1, 1) = rWs.Cells(C.Row, 2)
                            .List(.ListCount - 1, 2) = rWs.Cells(C.Row, 3)
                            .List(.ListCount - 1, 3) = rWs.Name
                            .List(.ListCount - 1, 4) = C.Row
                        End With
                        Set C = .FindNext(C)
                    Loop While Not C Is Nothing And C.Address <> Adresse
                End If
            End With
        End With
    End If
Next
Set C = Nothing
Set rRng = Nothing
Me.MousePointer = fmMousePointerDefault

Cordialement
 
Re : Macro recherche ne trouve pas les bonnes données

Bonsoir,
QQ erreurs lors de la réadaptation; ce n'est pas la Listbox qui pose pb mais la procédure ci-après (corrigée)
Code:
Sub Inictl(ByVal nLign As Long, ByVal ws As Worksheet, ByVal Numero As Long)
Dim i As Byte
Dim a As Byte
With ws
    Label2 = CStr(Numero)
    TextBox1 = .Cells(nLign, 2)
    TextBox2 = .Cells(nLign, 3)
    ComboBox1 = .Cells(nLign, 4)
    TextBox3 = .Cells(nLign, 5)
    TextBox4 = .Cells(nLign, 6)
    TextBox5 = .Cells(nLign, 7)
    TextBox6 = .Cells(nLign, 8)
    TextBox7 = .Cells(nLign, 9)
    TextBox[COLOR="Red"][B]8[/B][/COLOR] = .Cells(nLign, 10)
    TextBox9 = .Cells(nLign, 11)
    TextBox10 = [COLOR="Red"][B].[/B][/COLOR]Cells(nLign, 12) [COLOR="Red"][B]'manque le point[/B][/COLOR]
    For i = 1 To 15
        If .Cells(nLign, i + 12) = 1 Then Controls("CheckBox" & i) = True [COLOR="Red"][B]Else: Controls("CheckBox" & i) = False[/B][/COLOR]
    Next
    TextBox11 = .Cells(nLign, 28)
    For a = 16 To 30
        If .Cells(nLign, a + 13) = 1 Then Controls("CheckBox" & a) = True [COLOR="Red"][B]Else: Controls("CheckBox" & i) = False[/B][/COLOR]
    Next
    TextBox13 = .Cells(nLign, 44)
    ComboBox2 = .Cells(nLign, 45)
    TextBox14 = .Cells(nLign, 46)
End With

End Sub
En principe ce doit être OK
A+
kjin
 
Re : Macro recherche ne trouve pas les bonnes données

Bonsoir
Merci Kjin

Après modif et essai, cela fonctionne.

Pour le 8, j'avais remarqué cette erreur mais le . je ne l'ai pas vu.
Par contre pour Else: Controls("CheckBox" & i) = False je fais comme à mon habitude, j'essai de comprendre avec la touche F1 (pour moi c'est la touche miracle) mais j'avoue que parfois ce n'est pas si évident que cela.

Merci encore à tous.
Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour