Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro Excel dans Access

3 réponses
Avatar
Patrice
Bonjour,

Dans un module Access je veux utiliser Excel pour formater un type de
fichier avant de pouvoir l'inporter dans Access. J'y ai mis le code suivant:


Dim objXL As Object
Dim objWkb As Object
Dim objSht As Object
Dim strPath_et_Fichier, strNouveauFichier, strNomFichier As String

Set objXL = CreateObject("Excel.Application")
strPath_et_Fichier = objXL.GetOpenFileName(fileFilter:="Fichier DAT (*.csv),
*.csv ,Fichiers texte (*.txt),*.txt", Title:="Ouvrir le fichier CR10x",
MultiSelect:=False)
Set objWkb = objXL.Workbooks.Open(strPath_et_Fichier)
strNomFichier = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
Set objSht = objWkb.Worksheets(strNomFichier)

Range("A1").Select
Do While Not ActiveCell.Value = "Date/time"
ActiveCell.Offset(1, 0).Select
Loop

strRow = ActiveCell.Address(ReferenceStyle:=xlR1C1)
strRow = Left(strRow, Len(strRow) - 2)
strRow = Right(strRow, Len(strRow) - 1)

Rows("1:" & strRow - 1).Select

'--------------------------------------------------
'ÇA BLOQUE ICI
'Propriété ou méthode non géré par cet objet

With objSht.Selection
.Delete Shift:=xlUp
End With
'--------------------------------------------------

Comment écrire le code pour travailler avec la sélection?

Merci

Patrice

3 réponses

Avatar
LSteph
Bonsoir,

peut-être ainsi, si j'ai compris


Dim objXL As Object
Dim objWkb As Object
Dim objSht As Object
Dim strPath_et_Fichier, strNouveauFichier, strNomFichier As String
Dim c as range

Set objXL = CreateObject("Excel.Application")
strPath_et_Fichier = objXL.GetOpenFileName(fileFilter:="Fichier DAT
(*.csv),
*.csv ,Fichiers texte (*.txt),*.txt", Title:="Ouvrir le fichier CR10x",
MultiSelect:úlse)
Set objWkb = objXL.Workbooks.Open(strPath_et_Fichier)
strNomFichier = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
Set objSht = objWkb.Worksheets(strNomFichier)
objsht.activate

'----------
For each c in Range("A1:A"&[a65536].end(xlup).row)
If c = "Date/time" then c.entirerow.delete
next

'--------------------------------------------------

'--
lSteph

Patrice a écrit :
Bonjour,

Dans un module Access je veux utiliser Excel pour formater un type de
fichier avant de pouvoir l'inporter dans Access. J'y ai mis le code suivant:


Dim objXL As Object
Dim objWkb As Object
Dim objSht As Object
Dim strPath_et_Fichier, strNouveauFichier, strNomFichier As String

Set objXL = CreateObject("Excel.Application")
strPath_et_Fichier = objXL.GetOpenFileName(fileFilter:="Fichier DAT (*.csv),
*.csv ,Fichiers texte (*.txt),*.txt", Title:="Ouvrir le fichier CR10x",
MultiSelect:úlse)
Set objWkb = objXL.Workbooks.Open(strPath_et_Fichier)
strNomFichier = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
Set objSht = objWkb.Worksheets(strNomFichier)

Range("A1").Select
Do While Not ActiveCell.Value = "Date/time"
ActiveCell.Offset(1, 0).Select
Loop

strRow = ActiveCell.Address(ReferenceStyle:=xlR1C1)
strRow = Left(strRow, Len(strRow) - 2)
strRow = Right(strRow, Len(strRow) - 1)

Rows("1:" & strRow - 1).Select

'--------------------------------------------------
'ÇA BLOQUE ICI
'Propriété ou méthode non géré par cet objet

With objSht.Selection
.Delete Shift:=xlUp
End With
'--------------------------------------------------

Comment écrire le code pour travailler avec la sélection?

Merci

Patrice



Avatar
Patrice
J'ai obtenu cette solution d'un autre usager

Remplacer:
Rows("1:" & strRow - 1).Select
With objSht.Selection
.Delete Shift:=xlUp
End With

Par:
objSht.Rows("1:" & strRow - 1).Delete Shift:=xlUp

Merci



"LSteph" a écrit :

Bonsoir,

peut-être ainsi, si j'ai compris


Dim objXL As Object
Dim objWkb As Object
Dim objSht As Object
Dim strPath_et_Fichier, strNouveauFichier, strNomFichier As String
Dim c as range

Set objXL = CreateObject("Excel.Application")
strPath_et_Fichier = objXL.GetOpenFileName(fileFilter:="Fichier DAT
(*.csv),
*.csv ,Fichiers texte (*.txt),*.txt", Title:="Ouvrir le fichier CR10x",
MultiSelect:úlse)
Set objWkb = objXL.Workbooks.Open(strPath_et_Fichier)
strNomFichier = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
Set objSht = objWkb.Worksheets(strNomFichier)
objsht.activate

'----------
For each c in Range("A1:A"&[a65536].end(xlup).row)
If c = "Date/time" then c.entirerow.delete
next

'--------------------------------------------------

'--
lSteph

Patrice a écrit :
> Bonjour,
>
> Dans un module Access je veux utiliser Excel pour formater un type de
> fichier avant de pouvoir l'inporter dans Access. J'y ai mis le code suivant:
>
>
> Dim objXL As Object
> Dim objWkb As Object
> Dim objSht As Object
> Dim strPath_et_Fichier, strNouveauFichier, strNomFichier As String
>
> Set objXL = CreateObject("Excel.Application")
> strPath_et_Fichier = objXL.GetOpenFileName(fileFilter:="Fichier DAT (*.csv),
> *.csv ,Fichiers texte (*.txt),*.txt", Title:="Ouvrir le fichier CR10x",
> MultiSelect:úlse)
> Set objWkb = objXL.Workbooks.Open(strPath_et_Fichier)
> strNomFichier = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
> Set objSht = objWkb.Worksheets(strNomFichier)
>
> Range("A1").Select
> Do While Not ActiveCell.Value = "Date/time"
> ActiveCell.Offset(1, 0).Select
> Loop
>
> strRow = ActiveCell.Address(ReferenceStyle:=xlR1C1)
> strRow = Left(strRow, Len(strRow) - 2)
> strRow = Right(strRow, Len(strRow) - 1)
>
> Rows("1:" & strRow - 1).Select
>
> '--------------------------------------------------
> 'ÇA BLOQUE ICI
> 'Propriété ou méthode non géré par cet objet
>
> With objSht.Selection
> .Delete Shift:=xlUp
> End With
> '--------------------------------------------------
>
> Comment écrire le code pour travailler avec la sélection?
>
> Merci
>
> Patrice
>



Avatar
LSteph
Le principe est que les select sont inutiles
Ma proposition est donc plus simple!
Puisque je remplace tout ceci en 3 lignes

'--------------------------------------------------
Range("A1").Select
Do While Not ActiveCell.Value = "Date/time"
ActiveCell.Offset(1, 0).Select
Loop

strRow = ActiveCell.Address(ReferenceStyle:=xlR1C1)
strRow = Left(strRow, Len(strRow) - 2)
strRow = Right(strRow, Len(strRow) - 1)

Rows("1:" & strRow - 1).Select


With objSht.Selection
.Delete Shift:=xlUp
End With
'--------------------------------------------------



Patrice a écrit :
J'ai obtenu cette solution d'un autre usager

Remplacer:
Rows("1:" & strRow - 1).Select
With objSht.Selection
.Delete Shift:=xlUp
End With

Par:
objSht.Rows("1:" & strRow - 1).Delete Shift:=xlUp

Merci



"LSteph" a écrit :

Bonsoir,

peut-être ainsi, si j'ai compris


Dim objXL As Object
Dim objWkb As Object
Dim objSht As Object
Dim strPath_et_Fichier, strNouveauFichier, strNomFichier As String
Dim c as range

Set objXL = CreateObject("Excel.Application")
strPath_et_Fichier = objXL.GetOpenFileName(fileFilter:="Fichier DAT
(*.csv),
*.csv ,Fichiers texte (*.txt),*.txt", Title:="Ouvrir le fichier CR10x",
MultiSelect:úlse)
Set objWkb = objXL.Workbooks.Open(strPath_et_Fichier)
strNomFichier = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
Set objSht = objWkb.Worksheets(strNomFichier)
objsht.activate

'----------
For each c in Range("A1:A"&[a65536].end(xlup).row)
If c = "Date/time" then c.entirerow.delete
next

'--------------------------------------------------

'--
lSteph

Patrice a écrit :
Bonjour,

Dans un module Access je veux utiliser Excel pour formater un type de
fichier avant de pouvoir l'inporter dans Access. J'y ai mis le code suivant:


Dim objXL As Object
Dim objWkb As Object
Dim objSht As Object
Dim strPath_et_Fichier, strNouveauFichier, strNomFichier As String

Set objXL = CreateObject("Excel.Application")
strPath_et_Fichier = objXL.GetOpenFileName(fileFilter:="Fichier DAT (*.csv),
*.csv ,Fichiers texte (*.txt),*.txt", Title:="Ouvrir le fichier CR10x",
MultiSelect:úlse)
Set objWkb = objXL.Workbooks.Open(strPath_et_Fichier)
strNomFichier = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
Set objSht = objWkb.Worksheets(strNomFichier)

Range("A1").Select
Do While Not ActiveCell.Value = "Date/time"
ActiveCell.Offset(1, 0).Select
Loop

strRow = ActiveCell.Address(ReferenceStyle:=xlR1C1)
strRow = Left(strRow, Len(strRow) - 2)
strRow = Right(strRow, Len(strRow) - 1)

Rows("1:" & strRow - 1).Select

'--------------------------------------------------
'ÇA BLOQUE ICI
'Propriété ou méthode non géré par cet objet

With objSht.Selection
.Delete Shift:=xlUp
End With
'--------------------------------------------------

Comment écrire le code pour travailler avec la sélection?

Merci

Patrice