Recherche de donnees dans page

axou91

XLDnaute Nouveau
Ami MACROMAN, Bonjour,

Avant que je vous expose ma problématique, je vous explique l'intérêt de ma macro. Il s'agit via le userform2 d'enregistrer un avoir en entrant la société et le montant de l'avoir réceptionné.
Quand il trouve la ligne correspondante : msgbox : "Données enregistrées".
Quand il ne la trouve pas : "Données non trouvées".

Mon problème est que la recherche se fait ligne par ligne et donc, j'ai des msgbox ("Données non trouvées") jusqu'à ce qu'il la trouve.

Auriez vous la possibilité de faire une recherche dans la sheets entière et non pas ligne par ligne. Afin d'éviter d'avoir tout le temps des msgbox d'erreur.

J'espère avoir été clair dans ma comm.

Merci à tous;
 

Pièces jointes

  • Classeur1.xlsm
    31.5 KB · Affichages: 24
  • Classeur1.xlsm
    31.5 KB · Affichages: 32
  • Classeur1.xlsm
    31.5 KB · Affichages: 29

Lolote83

XLDnaute Barbatruc
Re : Recherche de donnees dans page

Salut AXOU91,
Ton code est correct mis à part une petite coquille à la fin.
Ton code corrigé ici
Code:
Private Sub CommandButton1_Click()
    Dim rng As range
    Dim x, y, z  As Long
    Dim q As String
    Dim p As String
    Dim ligne As Variant
    With Sheets("BDD")
        .Activate
        .range("A1").Select
        Set rng = .range("A1").CurrentRegion
        For y = 2 To rng.Rows.Count
            .Cells(y, "C").Select
            .range(.Cells(y, "C"), .Cells(y, "L")).Select
            If .Cells(y, "C").Value <> "" Then
                p = .Cells(y, "L").Value
            End If
            If UserForm2.ComboBox1.Value <> "" Then
                q = UserForm2.TextBox1.Value
            End If
            If p = q Then
                MsgBox ("Enregistrement effectué")
                ligne = y
                'je recolle direct sur ma feuil et ligne active
                If CheckBox1.Value = True Then
                    .Cells(ligne, 18).Value = "OUI"
                    '.range(Cells(ligne, 1), Cells(ligne, 18)).Select
                End If
                [B]GoTo Fin[/B]
            End If
        Next y
        [B]If p <> q Then
            MsgBox ("Données non trouvées!!! ")
        End If[/B]
    End With
[B]Fin:[/B]
End Sub
En gros, si tu ne trouve pas, c'est que l'on est arrivé à la fin de la recherche, donc tu auras le message "Données non trouvées". par contre, si tu trouves avant la fin (logique), on sort de la boucle par le Goto Fin.
Autre chose, si tu inscrits "With Sheets("BDD")", cela veut dire que tu regarde uniquement dans l'onglet BDD, donc tant que tu es entre l'instuction With et End With, tu n'es pas obligé de reprendre systématiquement l'instruction Sheets("BDD"). ........
Cordialement
Lolote83
 

axou91

XLDnaute Nouveau
Re : Recherche de donnees dans page

Re bonjour Lolote83

Encore merci de m'aider sans toi, je serais perdu.
Je m'excuse d'insister mais en en élevant les et , il bute sur le goto fin. Il me dit : erreur de compilation, étiquette non définie.

Merci merci merci
 

Lolote83

XLDnaute Barbatruc
Re : Recherche de donnees dans page

Salut AXOU91,
Désolé pour la reponse tardive mais le code sans les devrait fonctionner.
Voir ici, la version corrigée.
Code:
Private Sub CommandButton1_Click()
    Dim rng As range
    Dim x, y, z  As Long
    Dim q As String
    Dim p As String
    Dim ligne As Variant
    With Sheets("BDD")
        .Activate
        .range("A1").Select
        Set rng = .range("A1").CurrentRegion
        For y = 2 To rng.Rows.Count
            .Cells(y, "C").Select
            .range(.Cells(y, "C"), .Cells(y, "L")).Select
            If .Cells(y, "C").Value <> "" Then
                p = .Cells(y, "L").Value
            End If
            If UserForm2.ComboBox1.Value <> "" Then
                q = UserForm2.TextBox1.Value
            End If
            If p = q Then
                MsgBox ("Enregistrement effectué")
                ligne = y
                'je recolle direct sur ma feuil et ligne active
                If CheckBox1.Value = True Then
                    .Cells(ligne, 18).Value = "OUI"
                    '.range(Cells(ligne, 1), Cells(ligne, 18)).Select
                End If
                GoTo Fin
            End If
        Next y
        If p <> q Then
            MsgBox ("Données non trouvées!!! ")
        End If
    End With
Fin:
End Sub
Je pense que maintenant, tout est OK.
Previens moi au cas ou
@+ Lolote83
 

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 139
Membres
103 480
dernier inscrit
etaniere