aide macro traitant deux classeurs vba
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:
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 ;)