VBA - Modification d'une boucle à cause d'exceptions

Bonsoir,

Avec l’aide du Forum, j’ai pu mettre en place le bout de procédure ci-dessous dans le fichier annexé:

https://www.excel-pratique.com/~files/doc/20080625.zip

Sub Assurés_disparus_depuis_mois_précédent()

................................................

  With Sheets("Mois précédent")
    Derlig = .Range("A" & Rows.Count).End(xlUp).Row
    For Each Cel In .Range("A11:A" & Derlig)
      LigF = FindLig(Cel)
      If LigF > 0 Then      ' Cette personne est encore présente sur la liste du mois actuel

      Else                  ' Cette personne n'apparaît plus sur la liste du mois actuel

ShtR.Range("A" & LigFin).Range("A1:F1").Value = Cel.Range("A1:F1").Value

        ShtR.Range("G" & LigFin) = "0"
        ShtR.Range("H" & LigFin) = "0"
        ShtR.Range("I" & LigFin) = " 0.00 ?"

................................................

End Sub

Function FindLig(VSearch)

' Function utilisée par la Sub Assurés_disparus_depuis_mois_précédent()

  Application.Calculation = xlCalculationManual
  FindLig = 0
  With Sheets("RepListeQuellensteuer")
    On Error Resume Next
    FindLig = .Range("A:A").Find(What:=VSearch, LookAt:=xlWhole, SearchOrder:=xlByRows).Row
    On Error GoTo 0
  End With
  Application.Calculation = xlAutomatic

End Function

Ce code recherche sur la feuille « Mois précédent » quelles sont les personnes qui ne sont plus présentes sur la liste du mois actuel (feuille « RepListeQuellensteuer ») et les y reporte en fin de liste avec des 0.00 dans les colonnes G, H et I à la place des anciens chiffres.

Ca fonctionne a merveille, si ce n’est que j’ai oublié qu’il y a des exceptions : Les personnes qui figurent sur la liste du mois précédent et qui ne figurent plus sur la liste actuelle mais pour lesquelles une remarque est inscrites dans la colonne I ou J (texte ou date) ne doivent pas être reportées (dans l'exemple fourni, les personnes intitulées Nom 2, Nom 4 et Nom 6).

Sauriez-vous alors transformer ce code de manière à ce que ces exceptions soient ignorées ?

Meilleures salutations.

Bonjour,

Dans l’incapacité de résoudre mon problème tout seul, je m’inquiète de ne recevoir aucune proposition de la part de l’un d’entre vous.

Comme ce travail est assez important, je me permets d’insister !

Bonjour,

rajoute cette ligne de code, après le Else

      Else                  ' Cette personne n'apparaît plus sur la liste du mois actuel
    If Application.CountA(.Range(.Cells(Cel.Row, 9), .Cells(Cel.Row, 10))) > 0 Then GoTo suite

et celle-ci juste avant le Next Cel

suite:
    Next Cel

Salut à tous,

il me semble qu'il manque une ligne entre le if et le Else !

      If LigF > 0 Then      ' Cette personne est encore présente sur la liste du mois actuel

      Else                  ' Cette personne n'apparaît plus sur la liste du mois actuel

amicalement

Claude.

7ttr1.xlsx (142.78 Ko)

Bonsoir à tous,

Felix, C'est génial, ton code fonctionne à merveille. Tu m’enlèves vraiment une sacrée épine du pied ; épine que je trainais depuis quelques jours déjà.

Claude, Je trouve aussi bizarre qu'il n'y ait rien entre les deux lignes que tu indiques, mais c'est une partie de code que l'on m'avais fournie sur le Forum et comme l'ensemble rempli parfaitement sa fonction, je ne m'en suis guère soucié.

Merci à tous deux pour votre assistance.

Rechercher des sujets similaires à "vba modification boucle cause exceptions"