Bonjour,
Je souhaiterais lire une plage d'un classeur fermé (du Classeur1 ci-joint).
Pour cela j'ai fait quelques recherches et je suis tombé sur le site de boisgontierjacques qui me propose le code ci dessous (vous pouvez le retrouver dans le fichier que j'ai joint) :
Cela me permet de lire une cellule dans le fichier Classeur1 (joint).
Cependant je souhaiterais savoir comment modifier la macro pour :
-Lire une plage de cellule définie
-Lire une plage de cellule définie dans plusieurs classeurs
-Lire des classeurs xlsx et xlsm (et pas uniquement xls comme c'est actuellement).
Tout est expliqué dans le "Fichier recherché" ci-joint avec en Feuil1 la feuille utilisant la macro, et dans "Résultat idéalement voulu" ce que je souhaiterais obtenir à la fin.
Merci pour votre aide.
Etn
Je souhaiterais lire une plage d'un classeur fermé (du Classeur1 ci-joint).
Pour cela j'ai fait quelques recherches et je suis tombé sur le site de boisgontierjacques qui me propose le code ci dessous (vous pouvez le retrouver dans le fichier que j'ai joint) :
Code:
Sub Lit()
x = LitUneCellule("c:\mesdoc\excelmacronouveau\1001exemples", "ADOsource.xls", "feuil1", "A4")
MsgBox x
End Sub
Function LitUneCellule(repertoire As String, fichier As String, feuille As String, cellule As String)
'Microsoft ActiveX DataObject 2.8 doit être coché
Application.Volatile
Set cnn = New ADODB.Connection
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & repertoire & "\" & fichier & _
";Extended Properties=""Excel 8.0;HDR=No;"";"
Set rs = cnn.Execute("SELECT * FROM [" & feuille & "$" & cellule & ":" & cellule & "]")
LitUneCellule = rs(0)
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Function
Sub Ecrit()
Call ModifieUneCellule("c:\mesdoc\excelmacronouveau\1001exemples", "ADOsource.xls", "feuil1", "A4", "totox")
End Sub
Sub ModifieUneCellule(repertoire As String, fichier As String, feuille As String, cellule As String, NouvelleValeur)
'Microsoft ActiveX DataObject 2.8 doit être coché
Set cnn = New ADODB.Connection
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & repertoire & "\" & fichier & _
";Extended Properties=""Excel 8.0;HDR=No;"";"
Sql = "SELECT * FROM [" & feuille & "$" & cellule & ":" & cellule & "]"
Set rs = New ADODB.Recordset
rs.Open Sql, cnn, adOpenDynamic, adLockOptimistic
rs(0).Value = NouvelleValeur
rs.Update
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
Cela me permet de lire une cellule dans le fichier Classeur1 (joint).
Cependant je souhaiterais savoir comment modifier la macro pour :
-Lire une plage de cellule définie
-Lire une plage de cellule définie dans plusieurs classeurs
-Lire des classeurs xlsx et xlsm (et pas uniquement xls comme c'est actuellement).
Tout est expliqué dans le "Fichier recherché" ci-joint avec en Feuil1 la feuille utilisant la macro, et dans "Résultat idéalement voulu" ce que je souhaiterais obtenir à la fin.
Merci pour votre aide.
Etn