Recherche Dossier suivant/précédent avec critères

Bonjour le forum,

J'ai besoin de votre aide sur une macro de recherche, j'ai plus de cheveux et quand je lance la macro je n'ai pas de message d'erreur juste le fichier qui plante

Alors, en tout état de cause tout est expliqué dans le fichier, mais j'aimerai à l'aide d'un bouton, trouver le nom du dossier suivant, sur la feuille où ils sont enregistrés.

Le problème est que les dossiers peuvent être trier selon les 3 critères suivants :

  • le type ;
  • l'auditeur ;
  • et la provenance.

J'aimerai, que si c'est critères ne sont pas renseignés, ils ne bloquent pas la recherche et qu'ils soit pris en compte s'ils sont renseignés.

Ci-après le code :

Sub Bouton3_Cliquer()
'renseignement des variables textes
Dim doss, typ, aud, prov, ndoss As String
ndoss = ""
typ = Range("C6").Value
aud = Range("C9").Value
prov = Range("C12").Value
doss = Range("O2").Value
'attribution des valeurs de base des variables entiers
Dim i, n As Integer
i = 2
n = Worksheets("Dossiers").Range("X1").Value + 1

'Recherche du numéro de ligne + 1 du dossier actuel
While Worksheets("Dossiers").Range("A" & i) <> doss
i = i + 1
Wend
i = i + 1
'Si la recherche à atteint la fin de la feuille, on repart à 0
If i = n Then
i = 2
End If

'Ici, tant que ndoss est égal à rien, i = i + 1 sinon soit les critères sont nuls, soit remplis
'C'est à ce niveau là que le fichier plante
While ndoss = ""
If typ = "" Or Worksheets("Dossiers").Range("B" & i).Value = typ Then
ElseIf aud = "" Or Worksheets("Dossiers").Range("C" & i).Value = aud Then
ElseIf prov = "" Or Worksheets("Dossiers").Range("O" & i).Value = prov Then
ndoss = Worksheets("Dossiers").Range("A" & i).Value
Else
If i = n Then
i = 2
End If
i = i + 1
End If
Wend
'Renseignement du nom du dossier suivant en C14
Range("C14").Value = ndoss
End Sub

Et le fichier :

1'316suivi-dossier.xlsm (105.08 Ko)

Pour toute précision complémentaire n'hésitez pas, enfin là je vais manger

Merci d'avoir pris le temps de me lire.

Cdlt,

bonjour

proposition

Sub Bouton3_Cliquer()
'renseignement des variables textes
    Dim doss, typ, aud, prov, ndoss As String
    ndoss = ""
    typ = Range("C6").Value
    aud = Range("C9").Value
    prov = Range("C12").Value
    doss = Range("O2").Value
    'attribution des valeurs de base des variables entiers
    Dim i, n As Integer
    i = 2
    n = Worksheets("Dossiers").Range("X1").Value + 1

    'Recherche du numéro de ligne + 1 du dossier actuel
    While Worksheets("Dossiers").Range("A" & i) <> doss
        i = i + 1
    Wend
    i = i + 1
    'Si la recherche à atteint la fin de la feuille, on repart à 0
    If i = n Then
        i = 2
    End If

    'Ici, tant que ndoss est égal à rien, i = i + 1 sinon soit les critères sont nuls, soit remplis
    'C'est à ce niveau là que le fichier plante
    While ndoss = ""
        If (typ = "" Or Worksheets("Dossiers").Range("B" & i).Value = typ) And _
           (aud = "" Or Worksheets("Dossiers").Range("C" & i).Value = aud) And _
           (prov = "" Or Worksheets("Dossiers").Range("O" & i).Value = prov) Then
            ndoss = Worksheets("Dossiers").Range("A" & i).Value
        Else
            i = i + 1
            If i = n Then
                i = 2
            End If
        End If
    Wend
    'Renseignement du nom du dossier suivant en C14
    Range("C14").Value = ndoss
End Sub

Bon beh rien à dire ! Sa fonctionne parfaitement.

Et je me disais bien qu'on pouvez grouper des conditions, trop cool

Merci à toi !

Re,

J'ai un dernier petit problème, comment pourrait-on, si la recherche ne trouve aucune correspondance, afficher un message qui prévient l'utilisateur ?

Car j'ai essayer avec des critères qui ne correspondent à aucun dossier, et le fichier plante dans ce cas là, ce qui est normal car la recherche ne trouve pas de fin.

Merci d'avance

Cdlt,

re-bonjour

Sub Bouton3_Cliquer()
'renseignement des variables textes
    Dim doss, typ, aud, prov, ndoss As String, pdd
    ndoss = ""
    typ = Range("C6").Value
    aud = Range("C9").Value
    prov = Range("C12").Value
    doss = Range("O2").Value
    'attribution des valeurs de base des variables entiers
    Dim i, n As Integer
    i = 2
    n = Worksheets("Dossiers").Range("X1").Value + 1

    'Recherche du numéro de ligne + 1 du dossier actuel
    While Worksheets("Dossiers").Range("A" & i) <> doss
        i = i + 1
    Wend
    i = i + 1

    'Si la recherche à atteint la fin de la feuille, on repart à 0
    If i = n Then
        i = 2
    End If
    pdd = i 'pdd point de départ pour la recherche
    'Ici, tant que ndoss est égal à rien, i = i + 1 sinon soit les critères sont nuls, soit remplis
    'C'est à ce niveau là que le fichier plante
    Do While ndoss = ""
        If (typ = "" Or Worksheets("Dossiers").Range("B" & i).Value = typ) And _
           (aud = "" Or Worksheets("Dossiers").Range("C" & i).Value = aud) And _
           (prov = "" Or Worksheets("Dossiers").Range("O" & i).Value = prov) Then
            ndoss = Worksheets("Dossiers").Range("A" & i).Value
        Else
            i = i + 1
            If i = n Then
                i = 2
            End If
            If i = pdd Then 'on est revenu au point de départ -> pas de dossier trouvé
                MsgBox "pas de dossier répondant aux critères"
                Exit Do
            End If
        End If
    Loop
    'Renseignement du nom du dossier suivant en C14
    If ndoss <> "" Then Range("C14").Value = ndoss
End Sub

Super merci ! Trop coool coool coooool

Rechercher des sujets similaires à "recherche dossier suivant precedent criteres"