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

Code à Modifier

4 réponses
Avatar
Cyr73
Bonjour MicheDenis et Daniel C,
Petite question pourquoi dans ce code des fichiers reste ouverts
après la récuperation ?

Sub MaRequêteAvecADO()

'Pour exécuter cette requête, la référence suivante doit être chargée :
'Microsoft Activex Data Object 2.8 librairy"
'Pour ce faire, barre des menus / outils / référence /
'cocher la référence indiquée dans la liste.

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String
Dim File As String, DerLig As Long
Dim Chemin As String, Nb As Long

NomFeuille = "Saisie" 'A déterminer
Chemin = "C:\Budgets\" 'à déterminer
Adresse = "AE5:AE10" 'où sont les données
'La requête qui sera exécutée ' `a déterminer
Requete = "SELECT * From [" & NomFeuille & "$" & "AE5:AE10]"

'établir la connection avec le fichier...
Set Conn = New ADODB.Connection

Application.ScreenUpdating = False
File = Dir(Chemin & "BUD_*.*")
With ThisWorkbook.Worksheets("synthese")
DerLig = .Range("B65536").End(xlUp)(2).Row
Do While File <> ""
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;"""

Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
Nb = Rst.RecordCount
.Range("B" & DerLig) = File
.Range("C" & DerLig).Resize(, Nb) = Rst.GetRows
Rst.Close
Conn.Close
DerLig = DerLig + 1
File = Dir()
Loop
End With
Set Rst = Nothing: Set Conn = Nothing
Set Rg = Nothing
Application.ScreenUpdating = True
End Sub

--
Cordialement

et avec tout mes remerciements..

4 réponses

Avatar
Cyr73
Je t'assure MicheDenis que sur les onze fichiers Nommé BUD_???
certain d'entre eux, 2 en l'occurence s'ouvre et reste ouvert apres la
recuperation.
--
Cordialement

et avec tout mes remerciements..


"MichDenis" a écrit :

Bonjour Cyr73,

| Petite question pourquoi dans ce code des fichiers reste ouverts
| après la récuperation ?

Le code soumis n'ouvre pas les fichiers et par conséquent ne les ferme pas.

Si tu veux ouvrir ou fermer des fichiers Excel, tu auras besoin d'une autre
procédure que celle-ci. Pour cela, tu dois définir la vraie nature de tes
préoccupations si tu veux avoir des suggestions de solutions.




"Cyr73" a écrit dans le message de groupe de discussion
:
Bonjour MicheDenis et Daniel C,
Petite question pourquoi dans ce code des fichiers reste ouverts
après la récuperation ?

Sub MaRequêteAvecADO()

'Pour exécuter cette requête, la référence suivante doit être chargée :
'Microsoft Activex Data Object 2.8 librairy"
'Pour ce faire, barre des menus / outils / référence /
'cocher la référence indiquée dans la liste.

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String
Dim File As String, DerLig As Long
Dim Chemin As String, Nb As Long

NomFeuille = "Saisie" 'A déterminer
Chemin = "C:Budgets" 'à déterminer
Adresse = "AE5:AE10" 'où sont les données
'La requête qui sera exécutée ' `a déterminer
Requete = "SELECT * From [" & NomFeuille & "$" & "AE5:AE10]"

'établir la connection avec le fichier...
Set Conn = New ADODB.Connection

Application.ScreenUpdating = False
File = Dir(Chemin & "BUD_*.*")
With ThisWorkbook.Worksheets("synthese")
DerLig = .Range("B65536").End(xlUp)(2).Row
Do While File <> ""
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;"""

Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
Nb = Rst.RecordCount
.Range("B" & DerLig) = File
.Range("C" & DerLig).Resize(, Nb) = Rst.GetRows
Rst.Close
Conn.Close
DerLig = DerLig + 1
File = Dir()
Loop
End With
Set Rst = Nothing: Set Conn = Nothing
Set Rg = Nothing
Application.ScreenUpdating = True
End Sub

--
Cordialement

et avec tout mes remerciements..




Avatar
MichDenis
Je te le répète, cette procédure a elle seule ne peut pas ouvrir
de fichiers, les données sont lues et extraites, et ce, lorsque le
fichier est fermé.

Pour en être sûr, dans la fenêtre de l'éditeur de code, place
le curseur entre la ligne de déclaration de la procédure et
end sub et utilise la touche F8 pour exécuter la procédure
pas à pas. Si tu as un fichier qui s'ouvre pendant l'exécution,
tu vas savoir quelle est la ligne de code responsable de
l'ouverture du fichier...

Sinon, il va falloir que tu décrives davantage ce qui se passe
dans ton environnement au moment de lancer la procédure.




"Cyr73" a écrit dans le message de groupe de discussion
:
Je t'assure MicheDenis que sur les onze fichiers Nommé BUD_???
certain d'entre eux, 2 en l'occurence s'ouvre et reste ouvert apres la
recuperation.
--
Cordialement

et avec tout mes remerciements..


"MichDenis" a écrit :

Bonjour Cyr73,

| Petite question pourquoi dans ce code des fichiers reste ouverts
| après la récuperation ?

Le code soumis n'ouvre pas les fichiers et par conséquent ne les ferme pas.

Si tu veux ouvrir ou fermer des fichiers Excel, tu auras besoin d'une autre
procédure que celle-ci. Pour cela, tu dois définir la vraie nature de tes
préoccupations si tu veux avoir des suggestions de solutions.




"Cyr73" a écrit dans le message de groupe de
discussion
:
Bonjour MicheDenis et Daniel C,
Petite question pourquoi dans ce code des fichiers reste ouverts
après la récuperation ?

Sub MaRequêteAvecADO()

'Pour exécuter cette requête, la référence suivante doit être chargée :
'Microsoft Activex Data Object 2.8 librairy"
'Pour ce faire, barre des menus / outils / référence /
'cocher la référence indiquée dans la liste.

Dim Conn As ADODB.Connection, Rst As New ADODB.Recordset
Dim Requete As String, NomFeuille As String
Dim File As String, DerLig As Long
Dim Chemin As String, Nb As Long

NomFeuille = "Saisie" 'A déterminer
Chemin = "C:Budgets" 'à déterminer
Adresse = "AE5:AE10" 'où sont les données
'La requête qui sera exécutée ' `a déterminer
Requete = "SELECT * From [" & NomFeuille & "$" & "AE5:AE10]"

'établir la connection avec le fichier...
Set Conn = New ADODB.Connection

Application.ScreenUpdating = False
File = Dir(Chemin & "BUD_*.*")
With ThisWorkbook.Worksheets("synthese")
DerLig = .Range("B65536").End(xlUp)(2).Row
Do While File <> ""
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Chemin & File & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;"""

Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
Nb = Rst.RecordCount
.Range("B" & DerLig) = File
.Range("C" & DerLig).Resize(, Nb) = Rst.GetRows
Rst.Close
Conn.Close
DerLig = DerLig + 1
File = Dir()
Loop
End With
Set Rst = Nothing: Set Conn = Nothing
Set Rg = Nothing
Application.ScreenUpdating = True
End Sub

--
Cordialement

et avec tout mes remerciements..




Avatar
MichDenis
Dans le fichier où se retrouve la macro, as-tu d'autres macros
dans ce fichier ? Regarde dans le ThisWorkbook de ton classeur
et dans le module feuille où sont copiées les données ? Si oui,
place en début de la procédure soumise la ligne de code suivante
comme première ligne de code dans la procédure :

Application.EnableEvents = False

Et comme dernière ligne de code de la procédure :

Application.EnableEvents = True
Avatar
Cyr73
Je suis désolé MichDenis
houps, erreur de débutant dans le fichier j'ai supprimé ton bouton mais je
n'avais pas affecté ta macro à mon bouton.
mille fois pardon.

--
Cordialement

et avec tout mes remerciements..


"MichDenis" a écrit :

Dans le fichier où se retrouve la macro, as-tu d'autres macros
dans ce fichier ? Regarde dans le ThisWorkbook de ton classeur
et dans le module feuille où sont copiées les données ? Si oui,
place en début de la procédure soumise la ligne de code suivante
comme première ligne de code dans la procédure :

Application.EnableEvents = False

Et comme dernière ligne de code de la procédure :

Application.EnableEvents = True