VBA saisie formule Excel sur une colonne ajoutée
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:
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:
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