Bonjour à tous,


Je cherche à construire une macro pour importer certaines colonne de mon fichier Excel vers Access, cette partie c'est OK mais avant je dois :
1. Convertir la date YYYYMMDD en date, code trouvé sur un forum et qui fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
Dim x As Range
Dim Workx As Range
 
On Error Resume Next
xTitleId = "Selection des plages à convertir dd/mm/aaaa"
Set Workx = Application.Selection
Set Workx = Application.InputBox("Range", xTitleId, Workx.Address, Type:=8)
   For Each x In Workx
       x.Value = DateSerial(Left(x.Value, 4), Mid(x.Value, 5, 2), Right(x.Value, 2))
       x.NumberFormat = "mm/dd/yyyy"
   Next

2. Ajouter une colonne et y insérer une formule Excel sur le même nombre de lignes ou il y a des données dans le fichier. J'ai trouvé un code approchant et ai tenté de l'adapter en vain.
=> première partie, conversion en date : OK // une solution pour que je ne sois pas obligée de saisir les colonnes via l'inputBox mais que ca prenne toute la colonne C+F+G tant qu'il y a des données saisies ?
=> Ajout d'une colonne : OK, quelqu'un aurait une solution pour que je puisse la nommée ? Le but est de l'importer.
=> Je n'ai pas réussi à faire la boucle pour saisir ma formule Excel qui devrait me ramener le numéro de semaine ISO (c'est une solution intermédiaire parce que je n'ai pas trouver comment faire via VBA directement).

Voici donc le code complet, il ne m'affiche pas de message d'erreur mais à partir des lignes Offset plus rien ne se passe :
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
 
 
Sub TestAppli()
 
'Conversion YYYYMMTT en date
Dim x As Range
Dim Workx As Range
Dim y As Integer
 
Application.ScreenUpdating = False
 
 
On Error Resume Next
xTitleId = "Selection des plages à convertir dd/mm/aaaa"
Set Workx = Application.Selection
Set Workx = Application.InputBox("Range", xTitleId, Workx.Address, Type:=8)
   For Each x In Workx
       x.Value = DateSerial(Left(x.Value, 4), Mid(x.Value, 5, 2), Right(x.Value, 2))
       x.NumberFormat = "mm/dd/yyyy"
   Next
 
 
'Ajout d'une colonne + insert une formule pour avoir le numéro de semaine ISO
With Columns("D:D")
   .Insert Shift:=xlToRight
 
 
'Tentative boucle pour insertion formule sur le nombre de lignes comptées
      NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count
      ' Select cell a1.
      Range("A1").Select
      ' Establish "For" loop to loop "numrows" number of times.
      For y = 1 To NumRows
 
 
   .Offset(0, -1).FormulaR1C1 = "=NO.SEMAINE.ISO(C:C)"
   .Offset(0, -1).Copy
   .Offset(0, -1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 
 
         ' Selects cell down 1 row from active cell.
         ActiveCell.Offset(1, 0).Select
      Next
      Application.ScreenUpdating = True
 
 
End With
 
End Sub

Merci par avance,
LRN