Bonjour tout le monde

J'ai cree un fichier "liaison" a l'aide d'une macro intitule "transport" .
Lorsque le travail de ce fichier est termine ,il est transfere, a l'aide d'un userform, sur un autre fichier intitule "echange 2009".

Pour info,
Lorsque le fichier "liaison" est transfere sur le fichier "echange 2009",
la colonne date du fichier "liaison" se retrouve dans la colonne C du nouveau fichier "echange 2009".

Sur ce fichier "echange 2009", j'ai cree deux nouvelles colonne A et B intitulees , respectivement, "quai" et "mois".
Dans la colonne "quai" se trouve le mot "ARRIVEE " ou "DEPART".
Ces 2 mots proviennent de la cellule B1 du fichier "liaisons".

A l'aide de la boucle "For To Next", le mot "ARRIVEE" ou "DEPART" vient s'inserer automatiquement dans la premiere cellule vide de la colonne A du fichier "echanges 2009"et ce jusqu'a la derniere cellule de cette meme colonne A.

J'aimerais faire la meme chose avec les cellules de la colonne B "mois" du fichier "echanges 2009" (sous le format "mmmm-aaaa") qui reprendrait les valeurs de la colonne C "date" du fichier "liaison".
Mais dans ma macro "transport", toutes les cellules de la colonne B ("mois"), du fichier "echanges 2009", reprennent uniquement la valeur qui se trouve dans la cellule "Cells(6, 1)" du fichier "liaison" c'est a dire dans la cellule "A6". Alors que j'aimerais que lorsque dans le fichier "echange 2009":
si C3=01/01/09 alors en B3=janvier
si C4=01/02/09 alors B4= fevrier
etc jusqu'a C14=01/12.09 alors B14=decembre


Vous trouverez ci dessous, la macro "transport" avec en rouge la variable "date en cours " qui me pose probleme et qui correspond a la valeur qui doit etre insere dans les cellules de la colonne B ("mois") du fichier "echanges 2009".

PS : en piece joint , je vous envoie le fichier "liaison" et le fichier "echanges 2009"

Merci de votre aide

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Sub transport()


Dim c As Integer
Dim DateEnCours As Date
Dim Quai As String
Application.ScreenUpdating = False 'la mise à jour de l'écran est désactivée

Cells.Select
On Error Resume Next 'gestion des erreurs qui permet de continuer le programme
'meme s'il y a une erreur : dans ce ca precis les les filtres peuvent etre tous affiches
ActiveSheet.ShowAllData ' afficher tous les filtres
On Error GoTo 0 ' interruption de la gestion des erreurs

DateEnCours = Cells(6, 1).Value ' cellule de la sixieme ligne, premiere colonne soit A6 Quai = Cells(1, 2).Value ' cellule de la premiere ligne, seconde colonne soit B1


c = Range("c" & Range("c65353").End(xlUp).Row).Row ' formule pour recuperer le N° de la dernière ligne de la colonne C
Range("A6:V" & c - 1).Select ' selection du tableau allant de la cellule B3 a la derniere cellule de la colonne V
Selection.Copy

'sélectionner / ouvrir le fichier "echanges 2008"
On Error GoTo GestionErreurFichier
Workbooks("echanges 2009.xls").Worksheets("donnees hermes").Activate
On Error GoTo 0

Cells.Select
On Error Resume Next 'gestion des erreurs qui permet de continuer le programme
'meme s'il y a une erreur : dans ce ca precis les les filtres peuvent etre tous affiches
ActiveSheet.ShowAllData ' afficher tous les filtres
On Error GoTo 0 ' interruption de la gestion des erreurs

Range("C2").Select
If Range("C3").Value <> "" Then Range("C2").End(xlDown).Select 'Si la cellule C3 n'est pas vide,
'on selectionne la derniere cellule non vide de la colonne D. Si C3 est libre, la derniere cellule non vide est C2.
ActiveCell.Offset(1, 0).Select 'On selectionne la cellule situee une ligne en dessous de la cellule active.

LigDeb = ActiveCell.Row 'ligne active

On Error Resume Next 'gestion des erreurs qui permet de continuer le programme
'meme s'il y a une erreur : dans ce ca precis les les filtres peuvent etre tous affiches

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False ' on copie le tableau
'selectionner a partir de la premiere ligne vide de la feuille "echange 2008
Application.CutCopyMode = False 'instrcution qui permet d'effacer la marque de selection autor de la plage copiee

On Error GoTo 0 ' interruption de la gestion des erreurs

Creation d'une boucle For to next
LigFin = Range("C2").End(xlDown).Row 'derniere ligne non vide de la colonne C

For Lig = LigDeb To LigFin ' derniere ligne non vide de la colonne C

Cells(Lig, 2).Value = DateEnCours 
Cells(Lig, 1).Value = Quai

Next Lig



Application.ScreenUpdating = True 'la mise à jour de l'écran est activée

Columns("B:B").Select
Selection.NumberFormat = "mmmm-yyyy"

Columns("X:X").Select
Selection.NumberFormat = "#,##0"


' CE QUI SUIT N'A PAS D"IMPACT SUR MON ANOMALIE
' creation d'une boucle do..loop ; celle -ci commence a partir de la cellule x (ligne 3 colonne 2) et s'arrete a la premiere cellule vide rencontree dans la colonne 2
Lig = 3
Do
x = Cells(Lig, 2).Value
If x = "" Then Exit Do ' si la cellule est vide alors je quitte la boucle
Lig = Lig + 1 ' si la cellule est NON vide alors on aditionne a la ligne 3 la ligne de dessous
Loop
LigFin = Lig - 1 ' sortie de la boucle . Lig -2 =Numero de la derniere ligne non vide
LigDeb = 2
Cells(1, 1).Select

Range("K1").Select
ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[" & LigDeb & "]C:R[" & LigFin - 1 & "]C)"
Range("K1").Select
Selection.Copy
Range("K1:V1,X1").Select
Range("K1:V1, X1").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False 'instrcution qui permet d'effacer la marque de selection autor de la plage copiee

Exit Sub


GestionErreurFichier:
Workbooks.Open Filename:="C:\Documents and Settings\GHEMMAZI Hayette\Desktop\echanges 2009.xls" 
Resume

ActiveWorkbook.Save

End Sub