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
Partager