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 ?
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 dernire 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.
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