Bonjour à tous
voilà, dans le cadre de mon stage , je fais de la programmation sous excel : VBA
mon gramme doit traiter un premier fichier excel (abscences)dans lequel je crée ma macro d'ailleurs, ce fichier contient des informations sur les salariés : leurs nom, immatriculation, date de début et de fin d'abscence ... sachant que le nom d'un salarié peut figurer sur plusieurs lignes du fichier s'il fait plusieurs absences .

de ce fichier , pour chaque salarié j'extrais les informations concernat son absence afin de remplir un deuxième fichier excel appelé: FIE (je vais devoir créer un fichier de ce type pour chaque salarié), ce dernier fichier contient un calendrier et devant chaque date correspondant à une abscence du salarié , je dois cocher .

pour le moment , je peux parcourir le premier fichier et extraire les dates d'absences d'un salarié à part .

quand j'ouvre le deuxième fichier, le programme ne peut plus tenir compte que de la première absence et coche la date lui correspondant dans le deuxième fichier, la boucle s'arrete là et les autres dates d'abscences sont ignorées : en fait une fois le deuxième fichier ouvert, le programme ne peut plus revenir au premier fichier pour en extraire des information : donc la boucle s'arrete !


voilà mon programme :




Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Sub test()
 
 
Dim imm As Long
Dim i, j, k As Long
Dim valeur As Integer
Dim DateDeb As String
Dim nom As String
Dim prenom As String
Dim DateFin As String
 
 
' Chercher les info sur l'abscence d'un salarié donné grace à son immatriculation : identifiant du salarié
imm = "58122"
i = 2
 
While i < 15
 
'Workbooks.Open "D:\Documents and Settings\wboudgui\Desktop\test15juillet\abscences1.xls"
'Workbooks("abscences1.xls").Activate
 
   ' si la cellule ( i,3) correspond à l'immatriculation qu'on cherche , on extraie les autres infos sur le salarié
 
 
    If Cells(i, 3).Value = imm Then
 
        Cells.Select
        MsgBox "Immatriculation:" & imm
        nom = Cells(i, 4).Value
        MsgBox "Nom:" & nom
 
        prenom = Cells(i, 5).Value
        DateFin = Cells(i, 11).Value
        Duree = Cells(i, 12).Value
 
 
        DateDeb = Cells(i, 10).Value
        MsgBox "DateDeb:" & DateDeb
 
'si j'arrete la boucle ici, tout va bien : mon programme affiche autant de datedeb que d'abscences faites par le salarié; mais une fois j'ouvre le deuxième fichier appelé fie pour le remplir en cochant les abscence: le programme coche la première abscence mais ne rentre plus dans la boucle dans le premier fichier pour extraire les autres abscences
 
 
        Workbooks.Open "D:\Documents and Settings\wboudgui\Desktop\test15juillet\fievide.xls"
        Workbooks("fievide.xls").Activate
 
 
        For j = 12 To 41
        'de 12 à 41 on a 31 jour corrspondant à un mois de travail ou je vais cocher les abscences
 
 
If Cells(j, 3) = DateDeb Then
  Cells(j, 7).Value = "R"
 'R pour dire abscent ici
 
 
 'je remplie les autres champs du formulaires du salarié: nom, prénoms...
  Cells(6, 2).Value = imm
  Cells(6, 4).Value = nom
  Cells(6, 7).Value = prenom
End If
Next
 
'  Workbooks(" fievide.xls ").Save
 ' Workbooks(" fievide.xls ").Close
 
 
  End If
 
   i = i + 1
 
   Wend
 
End Sub



merciiiii beaucoup à tous ceux qui veulent bien m'aider