Bonjour à tous,
Voici mon problème: j'ai réussi à trouver un code pour me connecter à un classeur fermé, mais ce code récupère simplement une valeur pour la mettre dans une cellule de mon classeur ouvert.
Voici le code que j'ai adapté à ma situation:
Sub ConnectCLasseur(ConnectCL As Object, _
Fichier As String, _
Optional Rs)
Set ConnectCL = CreateObject("ADODB.Connection")
If Not IsMissing(Rs) Then
Set Rs = CreateObject("ADODB.Recordset")
End If
ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;IMEX= 2;"""
End Sub
Sub RecupValeur(Classeur As String, _
NomFeuille As String, _
Cellule As String, _
ValeurCellule)
Dim ConnectCL As Object
Dim Rs As Object
ConnectCLasseur ConnectCL, Classeur, Rs
With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$" & _
Cellule & "` ", ConnectCL
ValeurCellule = .Fields(0).Value
End With
ConnectCL.Close
Set Rs = Nothing
Set ConnectCL = Nothing
End Sub
Sub Test()
Dim Retour
Dim Classeur As String
Dim NomFeuille As String
Dim Cellule As String
Classeur = "S:\DCG\DCG_Commun\CNCE-Rac\2009\Crédit\Barèmes RAC Crédits\2009\Barèmes 200904.xls"
NomFeuille = "BAREMES"
Cellule = "F4338:F4697"
On Error GoTo Fin
RecupValeur Classeur, _
NomFeuille, _
Cellule, _
Retour
If IsNull(Retour) Then
MsgBox "La cellule est vide !"
Else
MsgBox Retour
[B1:B360] = Retour
End If
Fin:
If Err.Number <> 0 Then
MsgBox "Erreur de fichier !"
End If
End Sub
Ce code me retourne une seule valeur de B1 à B360 alors que je voudrais les 360 valeurs différentes qu'il y a de F4338 à F4697.
J'ai essayé de faire une boucle mais je n'arrive pas à écrire Cellule sous la forme Cellule="A1:A1" avec un compteur dedans...
En effet, quand je met quelque chose du genre Cellule=" F& i :F&i " ça ne marche jamais même en essayant avec des parenthèses, des crochets, etc....
En résumé, pourriez-vous me donner soit une solution pour la boucle, soit me modifier le code pour que ça fasse un copier de F4338:F4697 de ma cible et coller en B1 dans ma destination?
Je galère depuis des heures...
Merci d'avance pour vos réponses!
Yvann
Voici mon problème: j'ai réussi à trouver un code pour me connecter à un classeur fermé, mais ce code récupère simplement une valeur pour la mettre dans une cellule de mon classeur ouvert.
Voici le code que j'ai adapté à ma situation:
Sub ConnectCLasseur(ConnectCL As Object, _
Fichier As String, _
Optional Rs)
Set ConnectCL = CreateObject("ADODB.Connection")
If Not IsMissing(Rs) Then
Set Rs = CreateObject("ADODB.Recordset")
End If
ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;IMEX= 2;"""
End Sub
Sub RecupValeur(Classeur As String, _
NomFeuille As String, _
Cellule As String, _
ValeurCellule)
Dim ConnectCL As Object
Dim Rs As Object
ConnectCLasseur ConnectCL, Classeur, Rs
With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$" & _
Cellule & "` ", ConnectCL
ValeurCellule = .Fields(0).Value
End With
ConnectCL.Close
Set Rs = Nothing
Set ConnectCL = Nothing
End Sub
Sub Test()
Dim Retour
Dim Classeur As String
Dim NomFeuille As String
Dim Cellule As String
Classeur = "S:\DCG\DCG_Commun\CNCE-Rac\2009\Crédit\Barèmes RAC Crédits\2009\Barèmes 200904.xls"
NomFeuille = "BAREMES"
Cellule = "F4338:F4697"
On Error GoTo Fin
RecupValeur Classeur, _
NomFeuille, _
Cellule, _
Retour
If IsNull(Retour) Then
MsgBox "La cellule est vide !"
Else
MsgBox Retour
[B1:B360] = Retour
End If
Fin:
If Err.Number <> 0 Then
MsgBox "Erreur de fichier !"
End If
End Sub
Ce code me retourne une seule valeur de B1 à B360 alors que je voudrais les 360 valeurs différentes qu'il y a de F4338 à F4697.
J'ai essayé de faire une boucle mais je n'arrive pas à écrire Cellule sous la forme Cellule="A1:A1" avec un compteur dedans...
En effet, quand je met quelque chose du genre Cellule=" F& i :F&i " ça ne marche jamais même en essayant avec des parenthèses, des crochets, etc....
En résumé, pourriez-vous me donner soit une solution pour la boucle, soit me modifier le code pour que ça fasse un copier de F4338:F4697 de ma cible et coller en B1 dans ma destination?
Je galère depuis des heures...
Merci d'avance pour vos réponses!
Yvann