Enigme - recherche de valeur, parfois trouve, parfois ne trouve pas

Bonjour, j'aimerais soumettre une énigme. J'ai rédigé une petite macro pour rechercher des dates et les incorporer dans un autre document. Ces dates sont liées à une colonne test qui comprend un chiffre, ou pas. Si il n'y a pas de chiffres, la macro ne doit rien faire. S'il existe un chiffre, la macro doit réaliser une action.

Basique, et bien pas tout à fait...

Le résultat est stupéfiant, car il arrive que la macro se trompe et ne repère pas certaines dates, alors qu'il y a bien un chiffre dans la colonne qui sert de test. Par exemple, le 10 janvier 2017 devrait être repris dans la feuille "ANNEXE FICHE INDIVIDUELLE", mais il ne l' est pas. Un véritable mystère. Quid ?

16exemple-test.xlsm (47.31 Ko)

Philippe

Bonjour Philippe V.

Pour moi il y a une grosse erreur de codage

Vous faites une boucle sur toutes les lignes de BASE PRINCIPALE

 For ligneincrementdate = 2 To lignefin 

Et dans cette boucle, vous incrémenter la ligne !?

ligneincrementdate = ligneincrementdate + 1

Essayez comme cela

Sub ANNEXEFICHESINDIVIDUELLES()
  Dim colfin As Integer
  Dim lignefin As Long
  Dim colsemestre As Integer
  Dim colsemestreannexe As Integer
  Dim ligneannexesemestre1 As Integer
  Dim ligneannexesemestre2 As Integer
  Dim ligneannexsemestre1detail As Integer
  Dim ligneannexsemestre2dŽtail As Integer
  Dim ligneincrementdate As Integer
  Dim valeurdate As Date

  colfin = Worksheets("BASE PRINCIPALE").Rows(1).Find("", , xlValues, xlWhole).Column - 2
  lignefin = Worksheets("BASE PRINCIPALE").Range("a1").End(xlDown).Row
  colsemestre = Worksheets("BASE PRINCIPALE").Rows(1).Find("SEMESTRE", , xlValues, xlWhole).Column

  ligneannexesemestre1 = 13
  ligneannexesemestre2 = 13
  WorkSheets("BASE PRINCIPALE").Range("A13:L57").ClearContents

  For ligneincrementdate = 2 To lignefin                       'boucle pour les dates
    If Worksheets("BASE PRINCIPALE").Cells(ligneincrementdate, 1).Value = "" Then Exit For                    'si on atteint la dernire ligne, stop
    If Worksheets("BASE PRINCIPALE").Cells(ligneincrementdate, 4).Value <> "" Then                'si  prestation
      If Worksheets("BASE PRINCIPALE").Cells(ligneincrementdate, colsemestre).Value = "Semestre 1" Then     'condition semestre
        colsemestreannexe = 1
        valeurdate = Sheets("BASE PRINCIPALE").Cells(ligneincrementdate, 1)
        Worksheets("ANNEXE FICHE INDIVIDUELLE").Cells(ligneannexesemestre1, colsemestreannexe).Value = valeurdate
        ligneannexesemestre1 = ligneannexesemestre1 + 1
      ElseIf Worksheets("BASE PRINCIPALE").Cells(ligneincrementdate, colsemestre).Value = "Semestre 2" Then     'condition semestre
        colsemestreannexe = 8
        valeurdate = Sheets("BASE PRINCIPALE").Cells(ligneincrementdate, 1)
        Worksheets("ANNEXE FICHE INDIVIDUELLE").Cells(ligneannexesemestre2, colsemestreannexe).Value = valeurdate
        ligneannexesemestre2 = ligneannexesemestre2 + 1
      End If                                                                                                             'fin condition semestre
    End If 'condition prestation
     'ligneincrementdate = ligneincrementdate + 1
  Next
End Sub

@+

Bonjour,

@BrunoM45,

Pour moi il y a une grosse erreur de codage.

 Worksheets("ANNEXE FICHE INDIVIDUELLE").Sheets("BASE PRINCIPALE").Range("A13:L57").ClearContents

Bonne soirée.

@Jean-Eric

Tu m'étonnes bien vu

Bonjour,

Merci à tous ! Shame on me, une seule ligne en plus, et rien ne va plus !

Pour la deuxième erreur, je m'en été aperçu (heureusement),

Philippe

Rechercher des sujets similaires à "enigme recherche valeur parfois trouve pas"