Jam
XLDnaute Accro
Bonjour à tous,
J'exécute le code ci-dessous pour mettre à jour une plage nommée dans plusieurs classeurs. Ce code est en cours de développement, mais à son exécution il se passe quelquechose d'assez bizarre: le nom dans le classeur mis à jour voit sa référence changer![Confused :confused: :confused:](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![Confused :confused: :confused:](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![Confused :confused: :confused:](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Je précise que la macro fonctionne correctement. Le nom "vMois" qui est dans la feuille PARAM en A5 se retrouve en E5 ! La cellule A5 ayant été mise à jour![Frown :( :(](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Si quelqu'un a une idée de ce qui peut éventuellement se passer. Merci d'avance.
J'exécute le code ci-dessous pour mettre à jour une plage nommée dans plusieurs classeurs. Ce code est en cours de développement, mais à son exécution il se passe quelquechose d'assez bizarre: le nom dans le classeur mis à jour voit sa référence changer
Je précise que la macro fonctionne correctement. Le nom "vMois" qui est dans la feuille PARAM en A5 se retrouve en E5 ! La cellule A5 ayant été mise à jour
Si quelqu'un a une idée de ce qui peut éventuellement se passer. Merci d'avance.
Code:
Sub MAJ_MoisDansSBP()
Dim x As Integer
Dim sRep As String
Dim sFile As String
Dim oFso As Object
Dim oFile As Object
Dim oDirectory As Object
Dim oCon As ADODB.Connection
Dim oRs As ADODB.Recordset
x = Application.InputBox("Veuillez saisir le numéro du mois à mettre à jour", "MAJ du Mois", Month(Now()), , , , , 1)
'# Désactivation de certains paramètres pour accélerer le traitement
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
'# Création des objets de scripting
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oDirectory = oFso.getfolder(Range("sPath"))
'# On active la gestion d'erreur
On Error GoTo GestionErreur
'# On vérifie qu'il y a bien des fichiers dans le répertoire
If Not (oDirectory.Files.Count > 0) Then
MsgBox "Le répertoire sélectionné ne contient aucun fichier !", vbCritical + vbOKOnly, "Erreur répertoire"
Exit Sub
End If
'# On parcours tous les fichiers du répertoire
For Each oFile In oDirectory.Files
'# Si le fichier est un fichier Excel on l'ouvre.
If Right$(oFile.Name, 4) = ".xls" And Left$(oFile.Name, 14) = "DEV - SBP - CA" Then
'# Ouverture de la connection
Set oCon = New ADODB.Connection
oCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & oFile.Path & ";" & _
"Extended Properties=""Excel 8.0;HDR=No;"";"
Set oRs = New ADODB.Recordset
With oRs
.Open "SELECT * from [vMois]", oCon, adOpenKeyset, adLockOptimistic
oRs(0).Value = x
.Update
.Close
End With
oCon.Close
End If
Next
NormalEnd:
'# On ferme les objets créés
Set oFso = Nothing
Set oDirectory = Nothing
Set oRs = Nothing
Set oCon = Nothing
'# Rétablissement des paramètres Excel
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.StatusBar = False
End With
MsgBox "Mise à jour terminée avec succès !", vbInformation + vbOKOnly, "Fin de traitement"
Exit Sub
GestionErreur:
MsgBox "Une erreur a eu lieu pendant le traitement. La procédure est interrompue.", vbCritical + vbOKOnly, "Erreur de traitement"
GoTo NormalEnd
End Sub
Dernière édition: